2

我正在使用 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 mypack;”。
我究竟做错了什么 ?此外,使用 --no-strict 会删除警告,但输出的 jar 文件未正确构建且无法运行。

任何帮助表示赞赏。谢谢 :)

4

3 回答 3

6

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

例如com.test.me.MyActivity必须在com/test/me/MyActivity.class

于 2013-06-18T13:33:17.473 回答
0

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

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

dxmypack直接从中选择所有文件。考虑阅读这个SO question

于 2013-02-27T19:10:44.513 回答
0

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

  1. 首先用包编译类。javac -d classes $srclist
  2. 创建中间罐子(只允许 1 个参数)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 对每个类都有正确的包

于 2015-04-16T19:18:40.390 回答