【问题标题】:Android Could not find method from JARAndroid 无法从 JAR 中找到方法
【发布时间】:2015-06-27 00:00:04
【问题描述】:

该项目使用带有在运行时使用的方法的外部 JARS。我已经阅读了这个论坛的另一篇文章,解决方案是创建 /libs 目录,然后添加你需要的 jars。 但是,我已将所有 jar 添加到此目录(正确创建到 /src 目录的下面),当我运行应用程序时,它无法从另一个 jar 类引用的 jar 中找到方法。 这是日志:

04-20 06:01:42.025: I/dalvikvm(1275): Could not find method com.theoryinpractise.halbuilder.api.RepresentationFactory.readRepresentation, referenced from method com.theoryinpractise.halbuilder.jaxrs.HalUnmarshaller.unmarshal
04-20 06:01:42.025: W/dalvikvm(1275): VFY: unable to resolve virtual method 12369: Lcom/theoryinpractise/halbuilder/api/RepresentationFactory;.readRepresentation (Ljava/io/Reader;)Lcom/theoryinpractise/halbuilder/api/ReadableRepresentation;
04-20 06:01:42.035: D/dalvikvm(1275): VFY: replacing opcode 0x6e at 0x0009
04-20 06:01:42.035: E/dalvikvm(1275): Could not find class 'com.theoryinpractise.halbuilder.standard.StandardRepresentationFactory', referenced from method com.theoryinpractise.halbuilder.jaxrs.HalContext.<clinit>
04-20 06:01:42.035: W/dalvikvm(1275): VFY: unable to resolve new-instance 1707 (Lcom/theoryinpractise/halbuilder/standard/StandardRepresentationFactory;) in Lcom/theoryinpractise/halbuilder/jaxrs/HalContext;
04-20 06:01:42.035: D/dalvikvm(1275): VFY: replacing opcode 0x22 at 0x0000
04-20 06:01:42.045: D/dalvikvm(1275): DexOpt: unable to opt direct call 0x3179 at 0x02 in Lcom/theoryinpractise/halbuilder/jaxrs/HalContext;.<clinit>
04-20 06:01:42.065: W/dalvikvm(1275): Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/theoryinpractise/halbuilder/jaxrs/HalContext;

更新完整的日志:

04-29 05:04:27.969: I/dalvikvm(1221): Could not find method com.theoryinpractise.halbuilder.api.RepresentationFactory.readRepresentation, referenced from method com.theoryinpractise.halbuilder.jaxrs.HalUnmarshaller.unmarshal
04-29 05:04:27.969: W/dalvikvm(1221): VFY: unable to resolve virtual method 19072: Lcom/theoryinpractise/halbuilder/api/RepresentationFactory;.readRepresentation (Ljava/io/Reader;)Lcom/theoryinpractise/halbuilder/api/ReadableRepresentation;
04-29 05:04:27.969: D/dalvikvm(1221): VFY: replacing opcode 0x6e at 0x0009
04-29 05:04:27.979: D/dalvikvm(1221): DexOpt: couldn't find static field Lcom/theoryinpractise/halbuilder/api/RepresentationFactory;.SINGLE_ELEM_ARRAYS
04-29 05:04:27.979: W/dalvikvm(1221): VFY: unable to resolve static field 6502 (SINGLE_ELEM_ARRAYS) in Lcom/theoryinpractise/halbuilder/api/RepresentationFactory;
04-29 05:04:27.979: D/dalvikvm(1221): VFY: replacing opcode 0x62 at 0x0011
04-29 05:04:28.009: W/dalvikvm(1221): Exception Ljava/lang/NoSuchFieldError; thrown while initializing Lcom/theoryinpractise/halbuilder/jaxrs/HalContext;
04-29 05:04:28.009: W/System.err(1221): java.util.concurrent.ExecutionException: java.lang.NoSuchFieldError: com.theoryinpractise.halbuilder.api.RepresentationFactory.SINGLE_ELEM_ARRAYS
04-29 05:04:28.009: W/System.err(1221):     at java.util.concurrent.FutureTask.report(FutureTask.java:93)
04-29 05:04:28.019: W/System.err(1221):     at java.util.concurrent.FutureTask.get(FutureTask.java:163)
04-29 05:04:28.019: W/System.err(1221):     at android.os.AsyncTask.get(AsyncTask.java:483)
04-29 05:04:28.019: W/System.err(1221):     at com.hc.modelo.ObtieneRecursos.obtieneTokenMe(ObtieneRecursos.java:49)
04-29 05:04:28.019: W/System.err(1221):     at com.hc.Holacampus.InitActivity.compruebaUsuario(InitActivity.java:121)
04-29 05:04:28.019: W/System.err(1221):     at com.hc.Holacampus.InitActivity$2.onClick(InitActivity.java:66)
04-29 05:04:28.029: W/System.err(1221):     at android.view.View.performClick(View.java:4438)
04-29 05:04:28.029: W/System.err(1221):     at android.view.View$PerformClick.run(View.java:18422)
04-29 05:04:28.029: W/System.err(1221):     at android.os.Handler.handleCallback(Handler.java:733)
04-29 05:04:28.029: W/System.err(1221):     at android.os.Handler.dispatchMessage(Handler.java:95)
04-29 05:04:28.029: W/System.err(1221):     at android.os.Looper.loop(Looper.java:136)
04-29 05:04:28.029: W/System.err(1221):     at android.app.ActivityThread.main(ActivityThread.java:5017)
04-29 05:04:28.029: W/System.err(1221):     at java.lang.reflect.Method.invokeNative(Native Method)
04-29 05:04:28.029: W/System.err(1221):     at java.lang.reflect.Method.invoke(Method.java:515)
04-29 05:04:28.029: W/System.err(1221):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-29 05:04:28.029: W/System.err(1221):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-29 05:04:28.029: W/System.err(1221):     at dalvik.system.NativeStart.main(Native Method)
04-29 05:04:28.029: W/System.err(1221): Caused by: java.lang.NoSuchFieldError: com.theoryinpractise.halbuilder.api.RepresentationFactory.SINGLE_ELEM_ARRAYS
04-29 05:04:28.029: W/System.err(1221):     at com.theoryinpractise.halbuilder.jaxrs.HalContext.<clinit>(HalContext.java:60)
04-29 05:04:28.039: W/System.err(1221):     at com.theoryinpractise.halbuilder.jaxrs.HalUnmarshaller.unmarshal(HalUnmarshaller.java:53)
04-29 05:04:28.039: W/System.err(1221):     at com.hc.modelo.ObtencionTokenUsuario.doInBackground(ObtencionTokenUsuario.java:47)
04-29 05:04:28.039: W/System.err(1221):     at com.hc.modelo.ObtencionTokenUsuario.doInBackground(ObtencionTokenUsuario.java:1)
04-29 05:04:28.039: W/System.err(1221):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
04-29 05:04:28.039: W/System.err(1221):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
04-29 05:04:28.039: W/System.err(1221):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
04-29 05:04:28.039: W/System.err(1221):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
04-29 05:04:28.039: W/System.err(1221):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
04-29 05:04:28.039: W/System.err(1221):     at java.lang.Thread.run(Thread.java:841)
04-29 05:04:28.039: W/dalvikvm(1221): threadid=11: thread exiting with uncaught exception (group=0xb2ad2ba8)
04-29 05:04:28.099: E/AndroidRuntime(1221): FATAL EXCEPTION: AsyncTask #1
04-29 05:04:28.099: E/AndroidRuntime(1221): Process: com.hc.Holacampus, PID: 1221
04-29 05:04:28.099: E/AndroidRuntime(1221): java.lang.RuntimeException: An error occured while executing doInBackground()
04-29 05:04:28.099: E/AndroidRuntime(1221):     at android.os.AsyncTask$3.done(AsyncTask.java:300)
04-29 05:04:28.099: E/AndroidRuntime(1221):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
04-29 05:04:28.099: E/AndroidRuntime(1221):     at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
04-29 05:04:28.099: E/AndroidRuntime(1221):     at java.util.concurrent.FutureTask.run(FutureTask.java:242)
04-29 05:04:28.099: E/AndroidRuntime(1221):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
04-29 05:04:28.099: E/AndroidRuntime(1221):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
04-29 05:04:28.099: E/AndroidRuntime(1221):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
04-29 05:04:28.099: E/AndroidRuntime(1221):     at java.lang.Thread.run(Thread.java:841)
04-29 05:04:28.099: E/AndroidRuntime(1221): Caused by: java.lang.NoSuchFieldError: com.theoryinpractise.halbuilder.api.RepresentationFactory.SINGLE_ELEM_ARRAYS
04-29 05:04:28.099: E/AndroidRuntime(1221):     at com.theoryinpractise.halbuilder.jaxrs.HalContext.<clinit>(HalContext.java:60)
04-29 05:04:28.099: E/AndroidRuntime(1221):     at com.theoryinpractise.halbuilder.jaxrs.HalUnmarshaller.unmarshal(HalUnmarshaller.java:53)
04-29 05:04:28.099: E/AndroidRuntime(1221):     at com.hc.modelo.ObtencionTokenUsuario.doInBackground(ObtencionTokenUsuario.java:47)
04-29 05:04:28.099: E/AndroidRuntime(1221):     at com.hc.modelo.ObtencionTokenUsuario.doInBackground(ObtencionTokenUsuario.java:1)
04-29 05:04:28.099: E/AndroidRuntime(1221):     at android.os.AsyncTask$2.call(AsyncTask.java:288)
04-29 05:04:28.099: E/AndroidRuntime(1221):     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
04-29 05:04:28.099: E/AndroidRuntime(1221):     ... 4 more
04-29 05:04:28.139: W/DefaultRequestDirector(1221): Authentication error: Unable to respond to any of these challenges: {}
04-29 05:04:28.159: I/System.out(1221): Error
04-29 05:04:28.159: D/AndroidRuntime(1221): Shutting down VM
04-29 05:04:28.159: W/dalvikvm(1221): threadid=1: thread exiting with uncaught exception (group=0xb2ad2ba8)
04-29 05:04:28.169: I/Process(1221): Sending signal. PID: 1221 SIG: 9

SuchfieldError 有什么问题?

欢迎所有帮助。

【问题讨论】:

  • 嘿,很抱歉您仍然遇到此错误。愚蠢的问题,但您是否在代码中的任何位置从导入的 jar 引用 SINGLE_ELEM_ARRAYS?
  • 在我的代码中,没有。不知道把代码放到自己的库里是不是。
  • 我解决了这个错误,注释了 single_elem_arrays 标志所在的行。

标签: java android jar halbuilder


【解决方案1】:

除了将它们添加到 /libs 之外,您是否以任何其他方式将这些 jar 与项目链接? 在那里添加 jar 后,您还应该将它们添加到项目构建路径中 项目属性 > 构建路径 > 配置构建路径 > 库选项卡 > 添加 JAR 您使用的是 Eclipse 还是 Android Studio?另外,您使用的是什么构建工具?

【讨论】:

  • 将 jars 添加到目录 /libs 后,它们已经自动链接到构建路径中的“私有 android 库”。更重要的是,如果这是错误,应用程序将显示编译错误。
  • 好的,只是检查一下,不过我应该把它放在评论中......什么Java版本用于编译jar?
  • 我已经安装了Java8,但是我的应用程序找不到的.jar类是从maven中心下载的:Halbuilder-api4.0.1
  • 尝试将编译器设置为 Java 1.6 或 Java 1.7 并重建项目。 Android 尚不支持 java8。
  • 对不起,我修改了导出到jar项目的Java属性,它们是用Java 1.7导出的。
猜你喜欢
  • 2012-01-04
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多