0

我正在关注这个 链接 ,我首先成功地执行了这个命令。

javac <path + filename>.java 

然后,当我尝试执行以下命令时,我遇到了错误“类名与路径不匹配”。

dx --dex --output=<path + filename>.dex <path + filename>.class

我对 .class 和 .java 有相同的名称,但我认为我必须编写 .class 文件名的显式路径。那么现在该怎么办。我正在做一些小错误,但找不到。

4

3 回答 3

4

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 的路径检查。

于 2013-02-26T18:50:14.243 回答
2

您的命令似乎是错误的:

dx --dex --output=.dex .class

你试过这个吗?

dx --dex --output=YourClass.dex YourClass.class
于 2013-02-26T12:44:46.763 回答
2

为避免幻数问题,首先检查您的 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 命令将选择该文件夹中的一个或所有类文件。

于 2013-02-27T12:34:09.677 回答