无法通过 Davik VM 执行 .java 文件

Yas*_*ash 0 java dalvik

我正在点击此 链接, 我首先成功执行了此命令。

javac <path + filename>.java 
Run Code Online (Sandbox Code Playgroud)

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

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

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

Jes*_*eke 5

dx 对您提供的路径很挑剔 - 类文件相对于工作目录的相对路径必须与类的包匹配。

例如,如果您的命令是

dx --dex --output=classes.dex out/com/example/HelloWorld.class
Run Code Online (Sandbox Code Playgroud)

然后dx假设HelloWorld的包名应该是out.com.example,如果不是则抱怨。

但是,有一个技巧 - 您可以/./在给定 dx 的路径中添加路径组件,以指定相对于 java 包的“根”位置。如果上一个示例中的包实际上是 com.example,那么您可以执行以下操作:

dx --dex --output=classes.dex out/./com/example/HelloWorld.class
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用 --no-strict 选项,该选项禁用 dx 的路径检查。