代码之家  ›  专栏  ›  技术社区  ›  Yash

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

  •  0
  • Yash  · 技术社区  · 11 年前

    我正在关注这个 link 我第一次成功执行了这个命令。

    javac <path + filename>.java 
    

    然后,当我试图执行以下命令时,我遇到了一个错误“ 类名与路径不匹配 ".

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

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

    3 回复  |  直到 7 年前
        1
  •  5
  •   JesusFreke    11 年前

    dx对你给它的路径很挑剔——类文件相对于工作目录的相对路径必须与类的包相匹配。

    例如,如果您的命令是

    dx --dex --output=classes.dex out/com/example/HelloWorld.class
    

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

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

    dx --dex --output=classes.dex out/./com/example/HelloWorld.class
    

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

        2
  •  2
  •   Imposter    11 年前

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

        3
  •  2
  •   Nikolay Kuznetsov    11 年前

    您的命令似乎是错误的:

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

    你试过这个吗?

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