我正在关注这个 链接 ,我首先成功地执行了这个命令。
javac <path + filename>.java
然后,当我尝试执行以下命令时,我遇到了错误“类名与路径不匹配”。
dx --dex --output=<path + filename>.dex <path + filename>.class
我对 .class 和 .java 有相同的名称,但我认为我必须编写 .class 文件名的显式路径。那么现在该怎么办。我正在做一些小错误,但找不到。
dx 对你给它的路径很挑剔——类文件相对于你的工作目录的相对路径必须与类的包相匹配。
例如,如果您的命令是
dx --dex --output=classes.dex out/com/example/HelloWorld.class
然后 dx 假设 HelloWorld 的包名应该是 out.com.example,如果不是,则抱怨。
但是,有一个技巧 - 你可以/./
在你给 dx 的路径中添加一个路径组件,以指定相对于 java 包的“根”在哪里。如果上一个示例中的包实际上是 com.example,那么您可以这样做:
dx --dex --output=classes.dex out/./com/example/HelloWorld.class
另一个选项是使用 --no-strict 选项,它禁用 dx 的路径检查。
您的命令似乎是错误的:
dx --dex --output=.dex .class
你试过这个吗?
dx --dex --output=YourClass.dex YourClass.class
为避免幻数问题,首先检查您的 jdk 版本,似乎 jdk 1.7* 有问题。我恢复到 jdk 1.6 。
我们可以做一件事,而不是使用dx --dex --output=<path + filename>.dex <path + filename>.class
,将一个或所有 .classes 文件放在一个文件夹中,说classFolder
现在发出以下命令:
dx --dex --output=YourClass.dex absolutePath/classFolder
dx 命令将选择该文件夹中的一个或所有类文件。