我的问题很简单,是否可以在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
并将lib.文件夹中的first.jar保存到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)
答案 0 :(得分:1)
逐步尝试:
1.删除所有库项目,然后清除
2.转到第一个项目右键单击属性 - > Android系统。检查是否库。
3.转到第二个项目右键单击属性 - >在图书馆部分的Android中选择添加 - >将第一个项目添加为库。
4.转到第二个项目右键单击属性 - > Android系统。另外,Check Is Library
5.转到第三个项目C右键单击属性 - > Android系统。在“库”部分中,选择“添加” - >将第一个和第二个添加为库。 (不要将Proj C作为库)
6.现在清理所有内容并运行Proj C.