Java android使用第三方库获取;“类的链接失败”;及;VFY:找不到类“;

Java android使用第三方库获取;“类的链接失败”;及;VFY:找不到类“;,java,android,eclipse,Java,Android,Eclipse,我有一个使用第三方库(jersey)的libgdx项目。它在桌面版上编译良好,但在android上崩溃,出现“类XXX链接失败”和“VFY:找不到类…”错误 这个问题似乎在这里经常出现。但是我已经看过了其他的答案,几天来我一直在努力让它发挥作用,但运气不好 我已经将库添加到libs文件夹中,并检查它们是否如所有其他问题所示在“顺序和导出”菜单中打勾 这是一个有问题的最小项目。它是默认的基本项目和android项目,由libgdx自动创建,添加了jersey库,并且在基本项目(在MyGdxGame

我有一个使用第三方库(jersey)的libgdx项目。它在桌面版上编译良好,但在android上崩溃,出现“类XXX链接失败”和“VFY:找不到类…”错误

这个问题似乎在这里经常出现。但是我已经看过了其他的答案,几天来我一直在努力让它发挥作用,但运气不好

我已经将库添加到libs文件夹中,并检查它们是否如所有其他问题所示在“顺序和导出”菜单中打勾

这是一个有问题的最小项目。它是默认的基本项目和android项目,由libgdx自动创建,添加了jersey库,并且在基本项目(在MyGdxGame.java中)中有几行使用jersey库并导致它在android上崩溃。

这是我得到的logcat输出

12-10 21:19:10.531: W/dalvikvm(12940): Link of class 'Lcom/sun/jersey/core/osgi/OsgiRegistry;' failed
12-10 21:19:10.541: I/dalvikvm(12940): Could not find method com.sun.jersey.core.osgi.OsgiRegistry.getInstance, referenced from method com.sun.jersey.core.reflection.ReflectionHelper.getOsgiRegistryInstance
12-10 21:19:10.541: W/dalvikvm(12940): VFY: unable to resolve static method 10327: Lcom/sun/jersey/core/osgi/OsgiRegistry;.getInstance ()Lcom/sun/jersey/core/osgi/OsgiRegistry;
12-10 21:19:10.541: D/dalvikvm(12940): VFY: replacing opcode 0x71 at 0x0008
12-10 21:19:10.541: I/dalvikvm(12940): Failed resolving Lcom/sun/jersey/core/osgi/OsgiRegistry; interface 2368 'Lorg/osgi/framework/SynchronousBundleListener;'
12-10 21:19:10.541: W/dalvikvm(12940): Link of class 'Lcom/sun/jersey/core/osgi/OsgiRegistry;' failed
12-10 21:19:10.541: W/dalvikvm(12940): VFY: unable to find class referenced in signature (Lcom/sun/jersey/core/osgi/OsgiRegistry;)
12-10 21:19:10.631: W/dalvikvm(12940): threadid=11: thread exiting with uncaught exception (group=0x41560b    90)
12-10 21:19:10.672: D/dalvikvm(12940): GC_FOR_ALLOC freed 563K, 7% free 9262K/9856K, paused 37ms, total 3    7ms
12-10 21:19:10.672: E/AndroidRuntime(12940): FATAL EXCEPTION: GLThread 792
12-10 21:19:10.672: E/AndroidRuntime(12940): Process: com.me.mygdxgame, PID: 12940
12-10 21:19:10.672: E/AndroidRuntime(12940): java.lang.NullPointerException
12-10 21:19:10.672: E/AndroidRuntime(12940):    at javax.ws.rs.core.MediaType.valueOf(MediaType.java:119)
12-10 21:19:10.672: E/AndroidRuntime(12940):    at com.sun.jersey.api.client.PartialRequestBuilder.type(PartialRequestBuilder.java:92)
12-10 21:19:10.672: E/AndroidRuntime(12940):    at com.sun.jersey.api.client.WebResource.type(WebResource.java:349)
12-10 21:19:10.672: E/AndroidRuntime(12940):    at com.me.mygdxgame.MyGdxGame.create(MyGdxGame.java:48)
12-10 21:19:10.672: E/AndroidRuntime(12940):    at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:292)
12-10 21:19:10.672: E/AndroidRuntime(12940):    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1512)
12-10 21:19:10.672: E/AndroidRuntime(12940):    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)

在我给出的示例中,我正在使用jersey,但当我将它切换到另一个库时,同样的事情发生了。我觉得我遗漏了一些愚蠢的东西。但我就是找不到它。

您使用多个项目吗?例如一个桌面项目,然后是一个链接到桌面项目的小Android项目?如果是这样,请确保选中Android项目中的所有订单和导出框。有一个基本项目用作平台特定项目的库。我尝试过各种配置。我已经在android项目的订单和导出窗格中勾选了它们。我不确定我是否打算在基本项目中也做同样的事情,但尝试了有无。我看了一下,但我不是在一台可以编译它的计算机上。也许可以尝试从Android项目中删除所有多余的.jar?(因此只剩下gdx-backend-android.jar)