- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的案例 JadeAndroid.jar 中加载使用外部库编译的 Android 类(使用 dexClassLoader)。此类 (dex) 在 jar 中导出(我正在使用 ant 脚本),其中还包含所有 JadeAndroid 类。我的类(class)扩展了 jade 类(class)行为。当我加载此类时出现异常:
09-03 21:53:05.319: W/dalvikvm(23201): Class resolved by unexpected DEX:Lcom/example/dex/lib/LibraryProvider;(0x40d80838):0x411aa8 ref[Ljade/core/behaviours/Behaviour;] Ljade/core/behaviours/Behaviour;(0x40d81d18):0x419158
09-03 21:53:05.319: W/dalvikvm(23201): (Lcom/example/dex/lib/LibraryProvider; had used a different Ljade/core/behaviours/Behaviour; during pre-verification)
09-03 21:53:05.319: W/dalvikvm(23201): Unable to resolve superclass of Lcom/example/dex/lib/LibraryProvider; (337)
09-03 21:53:05.319: W/dalvikvm(23201): Link of class 'Lcom/example/dex/lib/LibraryProvider;' failed
09-03 21:53:05.319: W/System.err(23201): *** Uncaught Exception for agent buyer1 ***
09-03 21:53:05.319: W/System.err(23201): java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
09-03 21:53:05.319: W/System.err(23201): at dalvik.system.DexFile.defineClass(Native Method)
09-03 21:53:05.329: W/System.err(23201): at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:195)
09-03 21:53:05.329: W/System.err(23201): at dalvik.system.DexPathList.findClass(DexPathList.java:315)
09-03 21:53:05.329: W/System.err(23201): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:58)
09-03 21:53:05.329: W/System.err(23201): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
09-03 21:53:05.329: W/System.err(23201): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
09-03 21:53:05.329: W/System.err(23201): at pl.edu.kosttek.jadebook.agent.AgentBuyerLoader$GetJarBehaviour.getBehaviour(AgentBuyerLoader.java:227)
09-03 21:53:05.329: W/System.err(23201): at pl.edu.kosttek.jadebook.agent.AgentBuyerLoader$GetJarBehaviour.action(AgentBuyerLoader.java:166)
09-03 21:53:05.329: W/System.err(23201): at jade.core.behaviours.Behaviour.actionWrapper(Behaviour.java:344)
09-03 21:53:05.329: W/System.err(23201): at jade.core.Agent$ActiveLifeCycle.execute(Agent.java:1532)
09-03 21:53:05.329: W/System.err(23201): at jade.core.Agent.run(Agent.java:1471)
09-03 21:53:05.329: W/System.err(23201): at java.lang.Thread.run(Thread.java:864)
我如何将我的类编译成 jar:
将JadeAndroid.jar放到libs文件夹
使用 ant 脚本创建 dex 并将其放入 jar
可以排除这个 AndroidJade 类吗?
最佳答案
我认为问题在于您在 Jar 中有 Jade 类,并且相同的 Jade 文件已经在您的类加载器中,这对 JVM 具有误导性。
也许您可以尝试编译 JAR,但不向其中编译 Jade 类?所以只包含它进行编译,但它们不会出现在 JAR 中?在这种情况下,您在加载类时不会遇到任何问题,并且可以实现目标。
Upd:如果你是用Android方式编译Jar,那么我会建议链接Jade编译,但不要放到libs/文件夹下。它将阻止它被编译到 jar 中。
祝你好运
关于使用 dexclassloader 使用外部库编译的 Android 加载类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12253770/
我在网上看到一些教程,它们调用简单的方法,我只需要调用接受 Context 作为参数的方法“startDownload”。我现在称它为: Class loaded = cl.loadClass("co
我在我的 android 应用程序中使用来自 Assets 或 sdcard 的外部 jar。为此,我使用 DexClassLoader。 DexClassLoader cl = new DexCla
我正在使用 DexClassLoader 进行一些测试,看看是否可以使用新功能“更新”我的应用程序。目前我有这种测试方法,它与 testClass 一起使用并运行 test() 方法。我想知道的是,我
我在运行时使用 DexClassLoader 类从 SD 卡加载一个 jar 文件 final String libPath = Environment.getExternalStorageDir
对于一个长期的学生项目,我正在尝试开发一个带有插件的模块化应用程序。具体来说,我们会: 一个主应用程序,我们可以在其中搜索、更新、删除和运行插件。这个主应用程序还会存储一些来自插件的数据。 从带有代码
我的要求是启动一个 Activity,该 Activity 存在于 Assets 文件夹内的 aar 文件中或可能位于 SDCard 中。但我遇到了以下异常: 01-05 21:06:18.717 3
我有一个图书馆,我计划以 dex 形式使用。我想直接针对这个库进行编译,但不导出它。相反,我想将它放在我的资源中并使用类加载器实际实例化它。 这是我的图书馆: public class Foo {
所以我正在尝试加载我从我的应用程序编写的类,但我收到 ClassNotFound 异常。 类(class): public class myclass{ public String doSom
我想在我的案例 JadeAndroid.jar 中加载使用外部库编译的 Android 类(使用 dexClassLoader)。此类 (dex) 在 jar 中导出(我正在使用 ant 脚本),其中
我正在做一个试图通过加载外部库的项目Dex类加载器。这在 2.3 中运行良好: public class FormularDisplayLoader { public final static
我将一个包含 .dex 文件的 .jar 文件放入目录“/sdcard”,然后尝试分别使用 DexClassLoader 和 PathClassLoader 加载 .jar 文件中的类。他们都可以成功
我正在尝试构建一个插件系统,其中 DexClassLoader 从其他已安装的包含 fragment (我的插件)的 apk 中获取代码,并在我的主机中显示它们。这工作得很好。 我也喜欢让插件热插拔,
我正在尝试为 Android 应用程序构建一个插件架构。我有一个主机应用程序,它将检查 apk“插件”文件的目录,将它们加载到 DexClassLoader 中,并调用一个方法来获取 DerivedL
我已成功通过以下方式从 dex 文件中动态加载类 enter code here File file = getDir("dex", 0); DexClassLoader dexClassLoader
我有点碰壁了。任何帮助,将不胜感激。我有一个应用程序,我想使用 DexClassLoader 加载另一个 apk 文件。 这是我的代码: DexClassLoader dLoader = new De
对于方法: Ldalvik/system/DexClassLoader;->findClass(Ljava/lang/String;)Ljava/lang/Class; 那DexClassLoader
我正在尝试制作一个简单的 android 应用程序,它可以在运行时从 SD 卡加载 DEX 文件。 该应用程序有两个 Activity 。第一个 Activity 是一个带有按钮的简单屏幕。按下按钮时
我是一名优秀的程序员,十分优秀!