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

Java 在android中,在jar中创建一个jar并访问第一个jar的类,java,android,maven,jar,noclassdeffounderror,Java,Android,Maven,Jar,Noclassdeffounderror,我的问题很简单,是否可以在android中的罐子中创建一个罐子 比如,我有一个first.jar文件,我在另一个项目类中使用first.jar类方法 在first.jar中,我有TestApp1类 public class TestApp1Class { public static void testMethod1(){ Log.i("TEST", "Hi...."); } public static void testMethod2(){ Log.i("TEST", "He

我的问题很简单,是否可以在android中的罐子中创建一个罐子

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

在first.jar中,我有TestApp1类

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

}

而我在这里也遇到了例外

java.lang.NoClassDefFoundError:com.example.testapp.TestAppMethods
它无法访问first.jar的类。我两天来一直被这个窃听。我想我几乎什么都试过了

我尝试过的步骤:

  • 通常,当未在buildpath的顺序和导出中对其进行检查和标记时,会出现此错误。我已经这样做了,还检查了依赖项
  • 我只是试着把second.jar放在libs文件夹中,而不是buildpath中,然后尝试了一下,结果没有什么帮助
  • 我试图在
文件中手动编辑MANIFEST.IN,添加了一行
类路径:libs/first.jar
,并在将项目B导出到second.jar时将first.jar保存在libs文件夹中,即使这样也无济于事。我认为不应该手动编辑MANIFEST.IN文件 这些都是我尝试过的东西。请说明我做错了什么或遗漏了什么

每次我尝试上述所有步骤时,都会出现
NoClassDefFoundError
异常

日志:

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右键单击属性->Android。在库部分,选择添加->添加第一个和第二个作为库。(不要将项目C设置为库)

6.现在清理所有东西并运行项目C.

@SweetWisherツ 我已经发布了日志,将第一个库添加到第二个projectBug 405212的构建路径中-不要打包打包在打包的jar中的jar:@你觉得这个答案有用吗?创建库项目不是我的要求。我必须创建一个jar文件:(.jar将在您运行它时自动添加到您的项目中。然后您可以访问first jar的类。请尝试并告诉我。我尝试了您的所有步骤,它正在工作。但我的要求是通过second.jar在first.jar周围创建一个包装器。但是如果我执行了您的步骤,则不会创建包装器。first.jar在android depende中存在因此,您只需要导入second.jar,first.jar将位于sencond.jar中。
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)