从Java源代码创建DEX文件

5
我在网上广泛搜索了如何使用Android SDK DX工具创建Android DEX文件(Java Dalvik字节码)的详细指南。
我的目标是创建一个包含DEX字节码的Jar文件,该文件可以在运行时由应用程序加载。
为了创建Jar文件,我按照以下步骤进行:
1. 包含public类的Java源代码(Name.java)。 2. 使用“javac Name.java”将第1步中的.java文件编译为.class文件。 3. 从class文件创建Jar文件。 “jar cvf output.jar name.class”。 4. 使用dx工具将class文件转换为classes.dex。“./dx --dex --output=classes.dex output.jar”。 5. 使用aapt重新打包带有jar文件的classes.dex文件。
到目前为止,我已经完成了前四个步骤,但是在运行dx工具时出现以下错误:
UNEXPECTED TOP-LEVEL EXCEPTION:
java.io.FileNotFoundException: /home/del/Desktop/AndroidJarBuilder/output.jar (No such file or directory)
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(ZipFile.java:215)
    at java.util.zip.ZipFile.<init>(ZipFile.java:145)
    at java.util.zip.ZipFile.<init>(ZipFile.java:159)
    at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:244)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
    at com.android.dx.command.dexer.Main.processOne(Main.java:632)
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
    at com.android.dx.command.dexer.Main.run(Main.java:246)
    at com.android.dx.command.dexer.Main.main(Main.java:215)
    at com.android.dx.command.Main.main(Main.java:106)
1 error; aborting

我想知道是否有人之前遇到过这个问题,在Stack Overflow上找不到答案,其他网站也没有解决方案。
提前感谢您。

错误非常明显,即“output.jar”不存在。 - JesusFreke
是的,这非常清楚。然而,output.jar确实存在。 - saul
如果output.jar不存在,我就不会在output.jar上运行dx命令! - saul
我所了解的唯一导致该异常的方式是:文件不存在或者用户没有足够的权限去访问该文件/其所在的目录等等。 - JesusFreke
1个回答

1
原来,jar命令的输出需要与类名相同。 将output.jar重命名为Name.jar似乎解决了这个问题。

2
这毫无意义。JAR的名称是任意的,而且一个JAR通常包含许多类。 - JesusFreke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接