我正在尝试转换一个普通的 Java 应用程序库以在 Android 上使用。该库从 Java 1.1 开始,一直在维护、改进等,并且在其他平台上提供服务,因此不太可能涉及源代码。
通常,由于部署的细节,这个库不会封装在一个 jar 中,而只是保存在 CLASSPATH 发挥其魔力的树中。但是,为了将它放在 Android 上,创建了一个 jar。一切顺利 - 没有警告或错误。
由于将有一些新的开发 - 因此调试 - 通过 ProGuard 进行处理的步骤被跳过 - 时间将在稍后到来。
错误出现在下一步,运行 dx 将其转换为与 Android 一起使用。处理继续进行,直到此处描述的致命错误。(有一个小警告。)
错误飞溅:
UNEXPECTED TOP-LEVEL ERROR:
java.lang.ExceptionInInitializerError
at java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream.java:91)
at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:201)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:244)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:136)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:113)
at com.android.dx.command.dexer.Main.processOne(Main.java:247)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:183)
at com.android.dx.command.dexer.Main.run(Main.java:139)
at com.android.dx.command.dexer.Main.main(Main.java:120)
at com.android.dx.command.Main.main(Main.java:89)
at com.spartacusrex.spartacuside.external.dx.main(dx.java:14)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.UnsatisfiedLinkError: native_get
at android.os.SystemProperties.native_get(Native Method)
at android.os.SystemProperties.get(SystemProperties.java:47)
at com.htc.profileflag.ProfileConfig.<clinit>(ProfileConfig.java:168)
... 12 more
开发环境是Terminal-IDE。(谷歌代码网站在这里。)
我正在运行 Terminal-IDE v 2.02 - 最新的。我的安卓版本是:
Android 4.0.3
Software version 2.14.531.3 71ORD
(the rest aren't likely pertinent, but more on request)
编辑 - 新信息
考虑到终端 IDE 环境中缺少某些东西,我开始尝试在运行 Eclipse 的 Windows 7 机器上运行 dx。Eclipse以某种方式运行 DX,因为它将代码从普通的 .jar 转换为实际作为 Android 应用程序的一部分运行的东西。但是,我无法让 dx 从命令行运行 - 它抱怨找不到源输入文件!(有什么线索吗?)
同时,在某人的建议下,我开始在 Terminal-IDE 环境中进行整个构建。这意味着为了简化场景而进行一些黑客攻击,而且由于找不到 java.RMI 一直失败,所以我将这些部分注释掉了——我想我可以指向一个 Android-Ready RMI 库吗?...继续,一切正常,直到我再次到达 DX 并出现了一个非常相似的错误,如上所述:
UNEXPECTED TOP-LEVEL ERROR:
java.lang.ExceptionInInitializerError
at com.android.dx.util.FileUtils.readFile(FileUtils.java:72)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:139)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:196)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:127)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:196)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:127)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:113)
at com.android.dx.command.dexer.Main.processOne(Main.java:247)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:183)
at com.android.dx.command.dexer.Main.run(Main.java:139)
at com.android.dx.command.dexer.Main.main(Main.java:120)
at com.android.dx.command.Main.main(Main.java:89)
at com.spartacusrex.spartacuside.external.dx.main(dx.java:14)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.UnsatisfiedLinkError: native_get
at android.os.SystemProperties.native_get(Native Method)
at android.os.SystemProperties.get(SystemProperties.java:47)
at com.htc.profileflag.ProfileConfig.<clinit>(ProfileConfig.java:168)
... 14 more