java - dx java转换错误

标签 java exception compiler-errors dex

我的 HelloWorld.java 中有以下代码:

public class HelloWorld {
    public static void main(String[] args) {
         System.out.println("Hello World!");
    }
}

然后我毫无问题地执行javac HelloWorld.java

然后我尝试以下操作将其转换为 .dex 文件:

dx --dex --output=classes.dex HelloWorld.class

但出现以下错误:

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.RuntimeException: Exception parsing classes
    at com.android.dx.command.dexer.Main.processClass(Main.java:752)
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:718)
    at com.android.dx.command.dexer.Main.access$1200(Main.java:85)
    at com.android.dx.command.dexer.Main$FileBytesConsumer.processFileBytes(Main.java:1645)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
    at com.android.dx.command.dexer.Main.processOne(Main.java:672)
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:574)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:311)
    at com.android.dx.command.dexer.Main.run(Main.java:277)
    at com.android.dx.command.dexer.Main.main(Main.java:245)
    at com.android.dx.command.Main.main(Main.java:106)
Caused by: com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
    at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
    at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
    at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
    at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
    at com.android.dx.command.dexer.Main.parseClass(Main.java:764)
    at com.android.dx.command.dexer.Main.access$1500(Main.java:85)
    at com.android.dx.command.dexer.Main$ClassParserTask.call(Main.java:1684)
    at com.android.dx.command.dexer.Main.processClass(Main.java:749)
    ... 11 more

有人可以帮忙吗?

最佳答案

您正在使用 Java 8 (0034.0000) 编译源代码;您的 dx 版本不支持此功能。

您可以使用 -sourcetarget 标志编译早期版本的 Java,例如

javac -source 1.6 -target 1.6 HelloWorld.java

关于java - dx java转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36404559/

相关文章:

javascript - 如何中止或停止JavaScript执行?

c - 无法用 make 编译 | fatal error 设备上没有剩余空间

java - 我必须将 hibernate 设置为 weblogic 吗?

java - JMS 性能

c# - 为什么在使用 Environment.Exit() 时需要返回,而不是抛出的异常?

ruby - 引发异常 : string vs custom class

java - 当有人输入过去的日期时,我该如何阻止用户为 Android Studio 执行此操作?

java - 尽管设置为超过两分钟,但套接字在两分钟后超时

c# - 为什么这个异常既不沉默也不提供信息?

c# - C# 中需要 String.Format 以抛出参数不匹配的编译时错误