Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Dx错误1,无法转换为Dalvik格式_Java_Android_Dalvik - Fatal编程技术网

Java Android Dx错误1,无法转换为Dalvik格式

Java Android Dx错误1,无法转换为Dalvik格式,java,android,dalvik,Java,Android,Dalvik,我对这个问题感到绝望:我想导出/运行我的Android应用程序,并在构建路径中添加一个.jar。我确信我添加的是正确的,还有5个其他的罐子,它们都很好用 通过这个特殊的例子,我得到了上面提到的错误。 我已经尝试了这个问题中的所有方法: 谷歌还抛出了其他几个链接。主要问题是,我实际上不明白我附加的消息想告诉我什么,因为如果我将所有JAR添加到一个“普通”javaproject中,它运行得非常好 在Android 4.0.3上开发 proguard 4.8 adt 16.0.1.v20111215

我对这个问题感到绝望:我想导出/运行我的Android应用程序,并在构建路径中添加一个
.jar
。我确信我添加的是正确的,还有5个其他的罐子,它们都很好用

通过这个特殊的例子,我得到了上面提到的错误。 我已经尝试了这个问题中的所有方法:

谷歌还抛出了其他几个链接。主要问题是,我实际上不明白我附加的消息想告诉我什么,因为如果我将所有JAR添加到一个“普通”javaproject中,它运行得非常好

在Android 4.0.3上开发

proguard 4.8

adt 16.0.1.v201112150204-238534

eclipse 3.7.1.r37

请帮帮我

[2012-07-18 10:45:48-myapp]Dx警告:忽略匿名内部应用程序的InnerClasses属性 类(iaik.xml.crypto.XSecProvider$1),该类不附带 关联的EnclosingMethod属性。这门课很可能是制作出来的 由不以现代.class文件格式为目标的编译器执行。这个 建议的解决方案是使用 最新的编译器,无需指定任何“-target”类型选项。 忽略此警告的后果是反射操作 在该类上,将错误地指示它不是内部 班级

。。。

[2012-07-18 10:45:48-myapp]Dx警告:忽略匿名内部应用程序的InnerClasses属性 类(iaik.xml.crypto.XSecProvider$2),该类不附带 关联的EnclosingMethod属性。这门课很可能是制作出来的 由不以现代.class文件格式为目标的编译器执行。这个 建议的解决方案是使用 最新的编译器,无需指定任何“-target”类型选项。 忽略此警告的后果是反射操作 在该类上,将错误地指示它不是内部 班级

在以下情况下不明智或错误地使用核心类(java.*或javax.*): 没有建立核心库

这通常是由于无意中将核心库文件包含在 使用IDE(如Eclipse)时,应用程序的项目。如果 你确定你不是故意定义一个核心类,那么 这是最可能的解释

然而,实际上您可能正在尝试在核心中定义一个类 命名空间,例如,您可能从 非Android虚拟机项目。这肯定不会 工作至少,它会危及你的应用程序与的兼容性 平台的未来版本。这也常常令人怀疑 合法性

如果您真的打算构建一个核心库,那么 作为创建完整虚拟机分发版的一部分, 与编译应用程序相反,请使用 “--core library”选项以抑制此错误消息

如果您继续使用“-core library”,但实际上正在构建 应用程序,然后预先警告您的应用程序仍将失败 在某一点上建立或运行。请为愤怒的顾客做好准备 例如,谁发现您的应用程序一旦停止运行 他们升级了操作系统。你应该为此负责 问题

如果您合法地使用某个代码,而该代码恰好位于内核中 包装,那么最简单安全的选择就是重新包装 那个密码。也就是说,将有问题的类移动到您自己的包中 命名空间。这意味着它们永远不会与核心冲突 系统类。JarJar是一个可以帮助您进行这项工作的工具。 如果你发现你不能做到这一点,那么这表明 你所走的道路最终会导致痛苦、痛苦、悲伤, 哀叹

[2012-07-18 10:45:48-myapp]Dx 1错误;流产

[2012-07-18 10:45:48-myapp]转换为Dalvik格式 失败,错误为1

这是我的项目在浏览器中的外观:

如果使用Win7,请更改此行:

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %*     
proguard.bat
文件中:

call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9     
proguard.bat
位于:

[Android SDK安装目录]\tools\proguard\bin\proguard.bat

编辑
我希望这些结合起来对您有所帮助:
1-尝试从项目中删除库项目。
2-尝试导出项目(作为存档文件),从工作区删除项目及其源,然后再次导入。

3-尝试从path中删除JAR,进行干净构建,然后再次将它们添加到项目中

同意哈桑哈福里安的观点。最简单的解决方案是删除项目库。
右键单击您的项目->属性->Java构建路径,然后删除库项目

问题是您包含的jar在Java.*或javax.*命名空间中有一个类。dx不允许这样做,如上一条大错误消息中所述


如果您确实需要这些类,则需要使用类似于jar工具的工具将它们移动到另一个包中。否则,您将需要从jar中删除它们——我不确定,在一切都得到dx’d之前,proguard可能会删除它们。

我在使用自己的模糊lib jar时也遇到了同样的错误

我的日志:

警告:忽略匿名内部类的InnerClasses属性,该匿名内部类没有关联的EnclosingMethod属性。该类可能是由未针对Moden.class文件格式的编译器生成的


我这样解决了这个问题:在混淆我的jar之前,我在proguard.cfg(或最新android adt版本中的proguard-project.txt)中添加了“-keepattributes EnclosingMethod”。

我遇到了同样的问题,我最终通过显式导出我的私有库解决了这个问题

比如: 项目>>属性>>Java构建路径>>库>>添加外部JAR

注意:已从libs文件夹中删除我的所有私有库。我知道
project
  > properties
    > java build path
      > libraries
        > remove all including android jars
android tools
  > fix project properties.