Creating a DEX file from Java source code

混江龙づ霸主 提交于 2019-12-10 15:46:19

问题


I have searched extensively on the web for a comprehensive guide to creating an Android DEX file (Java Dalvik bytecode) using the Android SDK DX tool.

My aim is to create a Jar file that contains DEX byte code which can be loaded by an application at runtime.

To create the Jar file I have been following these steps:

  1. Java source code containing a public class (Name.java)
  2. Compile .java file from step 1 into .class file using javac Name.java
  3. Created a Jar file from the class file. jar cvf output.jar name.class
  4. Use the dx tool to convert class file into classes.dex. ./dx --dex --output=classes.dex output.jar
  5. Use aapt to repackage the classes.dex file with the jar file.

So far I have managed to make it to step 4, which is where I am experiencing issues. When running the dx tool, I get the following error:

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

I wonder if anyone has experienced this problem before, i could not find any answers on Stack Overflow, and the rest of the web did not provide me with any solutions.

Thanks in advance.


回答1:


Turns out the output of the jar command needs to be the same as the name of the class.

Renaming output.jar to Name.jar seemed to resolve the issue.



来源:https://stackoverflow.com/questions/29348327/creating-a-dex-file-from-java-source-code

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!