繁体   English   中英

在android中,在jar中创建一个jar并访问第一个jar的类

[英]In android create a jar inside jar and accessing the classes of first jar

我的问题很简单,是否有可能在android的jar中创建一个jar。

就像我有一个first.jar文件,例如,我正在另一个项目类中使用first.jar类方法

在first.jar中,我有TestApp1Class类,

public class TestApp1Class {

public static void testMethod1(){
    Log.i("TEST", "Hi....");
}

public static void testMethod2(){
    Log.i("TEST", "Hello....");
}
}

在另一个项目B中,我有TestApp2Class类,在其中我使用了first.jar类方法,例如testMethod1(); 如下所示。

public class TestApp2Class {

public static void TestApp2Method() {
    Log.i("TESTAPP", "Hi TESTAPP2....");
     TestAppMethods.testMethod1();
}

public static void TestApp2Method2() {
    Log.i("TESTAPP", "Hello TESTAPP2....");
     TestAppMethods.testMethod2();

}

}

该项目B我以jar文件名second.jar导出,并在另一个项目C中使用了此jar。

喜欢,

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TestApp2Class.TestApp2Method();
}

}

而且我在获得例外

java.lang.NoClassDefFoundError: com.example.testapp.TestAppMethods无法访问first.jar类。 自两天以来,我一直对此感到困惑。 我想我已经尝试了几乎所有东西。

我尝试过的步骤:

  • 通常,如果未选中buildpath的顺序和导出标记,则会收到此错误。 我已经做到了,并且还检查了依赖项上的标记。
  • 我只是通过将second.jar放在libs文件夹中而不是在buildpath中来尝试,并尝试了它并帮助了我。
  • 我尝试手动编辑MANIFEST.IN文件,并添加了一行“ Class-Path: libs/first.jar并将first.jar保留在libs文件夹中,同时将项目B导出到second.jar,即使那样也没有帮助。 我认为不应手动编辑该MANIFEST.IN文件。

这些是我尝试过的东西。 请提及我做错了什么或错过了什么。

每次我尝试上述所有步骤时,都会收到NoClassDefFoundError异常。

logcat的:

12-03 18:32:52.119: E/AndroidRuntime(29262): FATAL EXCEPTION: main
12-03 18:32:52.119: E/AndroidRuntime(29262): java.lang.NoClassDefFoundError:        com.example.testapp.TestAppMethods
12-03 18:32:52.119: E/AndroidRuntime(29262):    at com.example.testapp2.TestaApp2Class.TestApp2Method(TestaApp2Class.java:11)
12-03 18:32:52.119: E/AndroidRuntime(29262):    at com.example.jartestapp.MainActivity.onCreate(MainActivity.java:14)
12-03 18:32:52.119: E/AndroidRuntime(29262):    at android.app.Activity.performCreate(Activity.java:5133)
12-03 18:32:52.119: E/AndroidRuntime(29262):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
12-03 18:32:52.119: E/AndroidRuntime(29262):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2225)
12-03 18:32:52.119: E/AndroidRuntime(29262):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2311)
12-03 18:32:52.119: E/AndroidRuntime(29262):    at android.app.ActivityThread.access$600(ActivityThread.java:149)
12-03 18:32:52.119: E/AndroidRuntime(29262):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1293)
12-03 18:32:52.119: E/AndroidRuntime(29262):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-03 18:32:52.119: E/AndroidRuntime(29262):    at android.os.Looper.loop(Looper.java:137)
12-03 18:32:52.119: E/AndroidRuntime(29262):    at android.app.ActivityThread.main(ActivityThread.java:5214)
12-03 18:32:52.119: E/AndroidRuntime(29262):    at java.lang.reflect.Method.invokeNative(Native Method)
12-03 18:32:52.119: E/AndroidRuntime(29262):    at java.lang.reflect.Method.invoke(Method.java:525)
12-03 18:32:52.119: E/AndroidRuntime(29262):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
12-03 18:32:52.119: E/AndroidRuntime(29262):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
12-03 18:32:52.119: E/AndroidRuntime(29262):    at dalvik.system.NativeStart.main(Native Method)

逐步尝试此操作:
1.删​​除所有库项目,然后删除。
2.转到第一个项目,右键单击属性-> Android。 检查是库。
3.转到第二个项目,右键单击“属性”->“ Android”,在“库”部分中选择“添加”->“将第一个项目添加为库”。
4.转到第二个项目。右键单击属性-> Android。 此外,检查是库。
5.转到第三个项目C右键单击Properties-> Android。 在库部分中,选择添加->将第一个和第二个添加为库。 (不要将Proj C用作库)
6.现在,清理所有内容并运行ProjC。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM