Java不支持的主要次要版本52?尽管我没有使用Oracle Java 1.8的新功能,为什么会发生这种情况?

Sai*_*S.R 2 java compatibility sun jar java-8

我只是在学习Java.我编译并创建了一个jar文件,用于带有简单GUI的简单测验游戏.全部从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
Run Code Online (Sandbox Code Playgroud)

我跟着一个关于Java SE 5.0的教程来创建它,所以我想没有使用'1.8'的新功能.它汇编了,它对我来说很好.当我的朋友谁在Ubuntu 14.04使用了OpenJDK(提供最新版本)试图运行它,他收到了很多错误,包括不支持的主要和次要... ... 52.

我没有来自终端的完整详细输出.有没有办法避免这种情况,为什么会发生这种情况虽然我没有使用任何特定于最新版本的新功能?

我认为Java应该是"一次编写,随处运行",兼容性问题,即使是最简单的事情,只涉及一点点旧版本,这让我重新思考一些事情!

JB *_*zet 7

字节代码的版本不取决于您是否使用Java 8新功能.它只取决于您使用的编译器.除非您使用该选项-target指定早期版本,否则Java 8编译器将默认生成Java 8字节码.

旁注:你的朋友没有使用最新版本的OpenJDK(这是Java 8),否则,他不会得到这个例外.

  • 这取决于谁将使用您的应用程序,如何分发/安装它等等.我会坚持默认,并记录您的应用程序需要Java 8的事实.这样做的危险性小得多:没有使用风险目标中不存在的方法,没有遇到Java 8中不再存在的Java先前版本的错误的风险等.如果要定位Java 5,则应使用Java 5进行开发. (4认同)