【问题标题】:Android javac and dx - trouble processing, class name and path do not matchAndroid javac和dx - 故障处理,类名和路径不匹配
【发布时间】:2013-02-26 09:35:04
【问题描述】:

我正在使用 SpartacusRex 的终端 IDE 和另一个应用程序 DroidEdit 在 Android 上构建和运行 Java 应用程序。一个简单的单文件 Hello World 可以完美地构建和运行,但是当我引入包时,我无法将类文件正确地 dex 到 jar 文件中:

从我的项目目录:
javac src/mypack/*.j​​ava
编译成功
dx --dex --output=Test.jar src
这给了我以下警告

问题处理:
类名 (mypack/Main) 与路径 (Main.class) 不匹配
... 在解析 Main.class
... 在处理 Main.class

所有路径和包名都是正确的。 Main.java 位于一个名为“mypack”的文件夹中,并且有一个 package 语句“package mypack;”。
我做错了什么? 另外,使用 --no-strict 会消除警告,但输出的 jar 文件未正确构建,无法运行。

感谢任何帮助。谢谢:)

【问题讨论】:

    标签: java android compilation dalvik dx


    【解决方案1】:

    您必须将类文件放在与其包名完全相同的目录中,然后从中创建 jar 文件。

    例如 com.test.me.MyActivity 必须位于 com/test/me/MyActivity.class

    【讨论】:

      【解决方案2】:

      根据您的问题,所有 *.class 文件都在 mypack/ 目录中,因此发出以下命令可能会对您有所帮助。

      dx --dex --output=classes.dex src/mypack/
      

      dx 将直接从mypack 中选择所有文件。 考虑阅读此SO question

      【讨论】:

        【解决方案3】:

        我有同样的开发环境和同样的问题。 解决方案是使用中间罐。

        1. 首先用包编译类。 javac -d classes $srclist
        2. 创建中间 jars(只允许 1 个 arg)jar cf $idedir/a.jar a jar cf $idedir/b.jar b
        3. 创建可执行的 dx jar dx --dex --verbose --output=$jarfile $idedir/a.jar $idedir/b.jar

        那么 dx jar 对每个类都有正确的包

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-09-22
          • 1970-01-01
          • 1970-01-01
          • 2014-05-30
          • 2019-10-16
          • 2011-05-19
          • 1970-01-01
          相关资源
          最近更新 更多