如何 运行 具有超过 1 个 DEX 文件的 DalvikVM 应用程序?
How to run a DalvikVM application with more than 1 DEX files?
我刚刚将一个自定义的 Minecraft 服务器(控制台中的 PC 服务器 运行ning)编译成一个名为 test.zip
的 .zip 文件,其中包含 classes.dex
和 classes2.dex
, 使用 sdk-dx 工具。
我想 运行 使用 "dalvikvm" shell 命令的应用程序,但它一直抛出 java.lang.NoClassDefFoundError: test.server.Start
.zip文件的路径为/sdcard/Test/test.zip
,原主class在classes.dex
中为test.server.Start
。 (我认为它没有被修改,因为我尝试了 dex2jar 并且 class 名称保持不变。)
这些是我试过的命令。没有一个有效。
dalvikvm -cp /sdcard/Test/test.zip test.server.Start
dalvikvm -cp /sdcard/Test/test.zip/classes.dex;/sdcard/Test/test.zip/classes2.dex test.server.Start
dalvikvm -cp "/sdcard/Test/test.zip/classes.dex /sdcard/Test/test.zip/classes2.dex" test.server.Start
有人知道这里出了什么问题吗?
抛开更大的问题,Dalvik 类路径是一个以冒号分隔的文件名列表(例如 /sdcard/foo1.jar:/sdcard/foo2.jar
)。每个 jar/apk 包含一个 classes.dex
。对于 APK,您可以使用 multidex 解决此问题,但对于命令行调用,您只需将每个 classes.dex
放入其自己的 jarfile 中即可。
我刚刚将一个自定义的 Minecraft 服务器(控制台中的 PC 服务器 运行ning)编译成一个名为 test.zip
的 .zip 文件,其中包含 classes.dex
和 classes2.dex
, 使用 sdk-dx 工具。
我想 运行 使用 "dalvikvm" shell 命令的应用程序,但它一直抛出 java.lang.NoClassDefFoundError: test.server.Start
.zip文件的路径为/sdcard/Test/test.zip
,原主class在classes.dex
中为test.server.Start
。 (我认为它没有被修改,因为我尝试了 dex2jar 并且 class 名称保持不变。)
这些是我试过的命令。没有一个有效。
dalvikvm -cp /sdcard/Test/test.zip test.server.Start
dalvikvm -cp /sdcard/Test/test.zip/classes.dex;/sdcard/Test/test.zip/classes2.dex test.server.Start
dalvikvm -cp "/sdcard/Test/test.zip/classes.dex /sdcard/Test/test.zip/classes2.dex" test.server.Start
有人知道这里出了什么问题吗?
抛开更大的问题,Dalvik 类路径是一个以冒号分隔的文件名列表(例如 /sdcard/foo1.jar:/sdcard/foo2.jar
)。每个 jar/apk 包含一个 classes.dex
。对于 APK,您可以使用 multidex 解决此问题,但对于命令行调用,您只需将每个 classes.dex
放入其自己的 jarfile 中即可。