我刚刚学习Java。我为一个带有轻型 GUI 的简单问答游戏编译并创建了一个 jar 文件。所有操作均通过 Ubuntu 14.04 终端手动使用“javac -d ...
”和“jar -xvmf...
”
这是我的版本详细信息:
java version "1.8.0_11"
Java(TM) SE Runtime Environment (build 1.8.0_11-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)
javac 1.8.0_11
我按照有关 Java SE 5.0 的教程来创建它,所以我猜没有使用“1.8”中的新功能。它编译并且对我来说效果很好。当我在 Ubuntu 14.04 中使用 OpenJDK(可用的最新版本)的 friend 尝试运行它时,他收到了很多错误,包括不支持的主要次要... 52...。
我没有终端的完整详细输出。有什么方法可以避免这种情况,尽管我没有使用特定于最新版本的任何新功能,但为什么会发生这种情况?
我认为 Java 应该是“一次编写,到处运行”,即使是最简单的事情(仅涉及稍微旧的版本)也会出现兼容性问题我重新思考事情!
最佳答案
字节码的版本并不取决于您是否使用Java 8新功能。这仅取决于您使用的编译器。默认情况下,Java 8 编译器将生成 Java 8 字节码,除非您使用选项 -target
指定早期版本。
旁注:您的 friend 没有使用最新版本的 OpenJDK(即 Java 8),否则,他不会得到此异常。
关于Java 不支持主要次要版本 52?尽管我没有使用 Oracle Java 1.8 的新功能,为什么会发生这种情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26493037/