如何修复java.lang.不支持的major.minor版本

我正在尝试使用记事本++作为我的一体化工具编辑、运行、编译等。

我安装了JRE,并将路径变量设置为.../bin目录。

当我在Notepad++中运行“Hello world”时,我收到以下消息:

java.lang.UnsupportedClassVersionError: test_hello_world :Unsupported major.minor version 51.0at java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClassCond(Unknown Source).........................................

我认为这里的问题是关于版本的;Java的某些版本可能是旧的或太新的。

  1. 我该怎么修?
  2. 我应该安装JDK,并将路径变量设置为JDK而不是JRE吗?
  3. JRE或JDK中的PATH变量有什么区别?
2144317 次浏览

别担心,我已经解决了。

它实际上很简单-您需要安装具有相同版本的JRE/JDK。

JRE 6->JDK 6

JRE 7->JDK 7

诸如此类。

java.lang.UnsupportedClassVersionError发生是因为编译时的JDK较高,运行时的JDK较低。

显示的版本号描述了类文件兼容的JRE版本。

报告的主要数字是:

Java SE 19 = 63,Java SE 18 = 62,Java SE 17 = 61,Java SE 16 = 60,Java SE 15 = 59,Java SE 14 = 58,Java SE 13 = 57,Java SE 12 = 56,Java SE 11 = 55,Java SE 10 = 54,Java SE 9 = 53,Java SE 8 = 52,Java SE 7 = 51,Java SE 6.0 = 50,Java SE 5.0 = 49,JDK 1.4 = 48,JDK 1.3 = 47,JDK 1.2 = 46,JDK 1.1 = 45

(来源:维基百科

要解决实际问题,您应该尝试使用较新版本的JavaJRE运行Java代码,或者为Java编译器指定目标参数,以指示编译器创建与早期Java版本兼容的代码。

例如,为了生成与Java1.4兼容的类文件,请使用以下命令行:

javac -target 1.4 HelloWorld.java

使用较新版本的Java编译器,您可能会收到有关未设置引导类路径的警告。有关此错误的更多信息,请参阅博客文章用于设置没有bootclasspath的旧源的新javac警告

此错误意味着您正在尝试加载一个Java的“类”文件,该文件是用比您安装的更新版本的Java编译的。

例如,您的.class文件可能是为JDK 7编译的,并且您正在尝试使用JDK 6运行它。

所以解决方案是:

  • 升级您的Java运行时或
  • 如果您有源代码,请使用本地Java编译器(如果您有)重新编译类。

    FileName.java

对于开发人员来说,如果另一个开发人员签入. class文件,并且他们拥有比您拥有的更新版本的java,则可能会发生这种情况!

在Eclipse中,我只需转到菜单命令窗口->偏好->Java->编译器,然后将“编译器合规性级别”设置为1.6。

您可以在Java7中编译一些JAR库,而您只有Java6Java运行时。

在Eclipse的菜单窗口->偏好->Java->编译器中还选中“配置项目特定设置”。

如果您仍然有相同Java版本的错误:尝试手动删除项目的构建文件夹。然后重新启动Eclipse。

正如一些人在其他地方回答的那样,Java程序正在运行的Java版本比编译它的版本旧。它需要“交叉编译”以实现向后兼容。换句话说,源和目标Java版本之间不匹配。

更改Eclipse菜单中的选项并不能回答最初的发帖人,他/她说他/她没有使用Eclipse。在OpenJDK javac版本1.7上,如果您使用参数-source-target,您可以交叉编译为1.6,并在编译时提供目标版本(即旧版本)的rt.jar-文件。如果您实际安装了1.6 JRE,您可以指向它的安装(例如,Ubuntu上的 /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar,SunOS上的 /usr/jdk/jdk1.6.0_60/jre/lib/rt.jar显然。对不起,我不知道它在Windows系统上的位置)。像这样:

javac -source 1.6 -target 1.6 -bootclasspath /usr/lib/jvm/java-6-openjdk-i386/jre/lib/rt.jar HelloWorld.java

看起来你可以从网上下载rt.jar,然后指向它。但这并不太优雅:

javac -source 1.6 -target 1.6 -bootclasspath ./rt.jar HelloWorld.java

您正在尝试使用不支持编译代码的版本的Java版本运行程序。因此,基本上您必须使用更高版本编译代码并尝试使用较低版本运行它。

正如你得到的

Unsupported major.minor version 51.0

版本51.0对应于j2se7,您很可能在Java7中编译了代码并尝试使用较低版本运行它。检查java -version显示的内容。它应该是Java7版本。如果没有在PATH/JAVA_HOME中进行适当的更改。或者您可以使用相同的版本编译您正在尝试运行的代码。如果配置令人困惑,您可以始终给出绝对路径/home/user/jdk1.7.0_11/bin/javac/home/user/jdk1.7.0_11/bin/java

当我使用蚂蚁脚本构建我的应用程序时,我遇到了同样的问题。

我使用Eclipse进行应用程序开发,并在项目的构建属性中更改了编译器版本。但这对我不起作用。然后我发现我可以在ant脚本中提供编译器版本。

我在它编译Java文件的部分修改了ant脚本。

<target name="build-java" depends="prepare-build"><echo message="Compiling java files"/><javac ....target="1.5"...</javac></target>

这对我来说解决了不受支持的主要小问题。

当我安装JDK 1.7时,问题得到了解决。

我在Mac上遇到了类似的情况,以下过程对我有效:

在终端中,键入

vi ~/.profile

然后将此行添加到文件中,并保存

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk<version>.jdk/Contents/Home

其中版本是您计算机上的版本,例如1.7.0_25

退出编辑器,然后键入以下命令使其生效

source ~/.profile

然后键入java-version以检查结果

java -version

什么是.profile文件?

.配置文件是一个隐藏文件。它是一个可选文件,它告诉系统当其配置文件的用户登录时运行哪些命令。例如,如果我的用户名是bruno并且在 /Users/bruno/中有一个.配置文件,则其所有内容将在登录过程中执行。

来源:http://computers.tutsplus.com/tutorials/speed-up-your-terminal-workflow-with-command-aliases-and-profile--mac-30515

我在Eclipse中运行ant时也遇到了同样的错误消息,但是这里提到的其他解决方案并没有解决我的问题。有趣的是,从Windows命令行运行ant运行得很好,所以它必须是Eclipse中的配置问题。

事实证明,在Eclipse下,您可以指定ant应该运行的环境,并且这被设置为JRE而不是JDK。

  • 进入:运行->外部工具->外部工具配置…
  • 为您的项目选择蚂蚁build.xml(如果您有多个项目)
  • 激活选项卡“JRE”
  • 这里选择了“单独的JRE: jre6”。当我将其从1.6或1.7系列更改为JDK时,错误消失了。

如果您在使用Maven时遇到此问题,您可以使用插件Maven编译器编译代码。

 <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.6</source><target>1.6</target></configuration></plugin>.....

更新:如果您使用的是JDK 8,请将sourcetarget设置为1.8

首先,让我们得到一些基本的权利…

JRE是NetBeans/Eclipse中的一个组件,它将为您提供库、JVM、Java插件和JavaWeb启动。请注意,它不提供编译器或调试器。

JDK是JRE以及编译器和调试器的超集。

因此,当您将默认库作为JRE而不是JDK时,您将很高兴导入内容,但它不会编译。

相反,将您的路径设置为JDK(我使用NetBeans,并使用netBeans/etc/netbeans.conf中的netbeans.conf设置它们并更改路径)。

今天,此错误消息出现在我们的Tomcat 7关于Ubuntu 12.04.2 LTS(精确穿山甲):

/var/log/tomcat7/localhost2014-04-08.log:
Apr 8,2014 9:00:55 AMorg.apache.catalina.core.Standard ardContext filterStart
SEVERE:异常启动过滤器struts2
java.lang.不支持major.minor版本51.0(无法加载类控制器。

Struts应用程序是用Java7编译的。

原来,有人使用“service tomcat[Stop/start]”重新启动Tomcat 7,

$ps-ef|grep java
tomcat7 31783 1 32 20:13?00:00:03/usr/lib/jvm/default-java/bin/java…
$ /usr/lib/jvm/default-java/bin/java-version
Java版本“1.6.0_27”

这会导致“不受支持的major.minor版本51.0”错误。

当我们使用“/etc/init. d/tomcat7[Stop/start]”重新启动Tomcat 7时,问题就解决了。

$ps-ef|grep java
tomcat7 31886 1 80 20:24?00:00:10 /usr/local/java/jdk1.7.0_15/bin/java
$ /usr/local/java/jdk1.7.0_15/bin/java-version
Java版本“1.7.0_15”

当我恢复到Java6并尝试运行以前用Java7编译的类时遇到了这个问题。对我有用的是首选项>java>编译器-->将合规性级别设置为1.6,至关重要的是“配置项目设置”。

基于此…

J2SE 8 = 52J2SE 7 = 51J2SE 6.0 = 50J2SE 5.0 = 49JDK 1.4 = 48JDK 1.3 = 47JDK 1.2 = 46JDK 1.1 = 45

在Eclipse中,右键单击包资源管理器中的项目:

构建路径->配置构建路径

下:

Java构建路径->图书馆->添加库->JRE系统库->安装JRE->搜索

通过在搜索完成后选择列表中可用的库来添加所需的JRE。

我遇到了一个问题,我必须从命令行在我的项目上运行Maven编译才能运行我的单元测试;如果我对测试类进行了更改并让Eclipse自动重新编译它,那么我得到了“不受支持的major.minor版本51.0”错误。

我确实安装了JDK6和JDK7,但我所有的JRE设置都指向1.6,无论是在pom中还是在Eclipse的项目属性页面中。没有多少Maven Update Project和/或刷新解决了这个问题。

最后,我尝试关闭项目并重新打开它,这似乎解决了它!

您已经使用JDK 7编译了Java类,并且正在尝试在JDK 6上运行相同的类。

  • 安装JDK 7.0.55并将Java设置为JDK 7.0.55的Eclipse
  • 通过在构建路径JDK 7.0.55上配置,使用JDK 7.0.55构建项目。
  • 通过菜单windows->偏好->Java->编译器-选择1.7在Eclipse for JDK 7.0.55中设置编译器。

我解决了。我跑了:

JAVA_HOME=/usr/lib/jvm/java-7-openjdk-i386

错误是误导,Unsupported major.minor version 51.0。这给人的印象是不支持版本51(Java7)。我们应该使用Java6。

错误应该是:

当前Java版本50不受支持。请改用Java版本7(51:0及更高版本)。

我用1.7编写的项目遇到了同样的问题,并尝试在1.6中执行。

我在Eclipse中的解决方案:

  • 右键单击项目属性->Java构建路径->库

  • 选择您的JRE系统库并单击右侧的Edit,然后选择目标JRE。

  • 现在转到左侧的Java编译器,并将编译器合规性级别更改为您的目标。

这对我很有效。

我遇到了同样的问题,我在Mac上通过这个解决方案修复了这个问题。我希望它能帮助某人。这是因为系统不知道较新版本的JDK,它仍然指向旧的JDK。

您使用了更高版本的JDK进行编译并尝试从较低版本的JDK/JRE运行。

要检查这一点,请参阅版本信息:

javac -version
java -version

它们会有所不同,javac会有更高的版本号。

要解决这个问题,请使用JDK版本的java运行,或者如果您有更新的JRE/JDK也可以运行。

which javac会告诉你位置,例如/usr/bin/javac。直接使用/usr/bin/java <program>运行即可。

或者您可以将环境变量设置为永久解决方案。

我遇到了同样的情况,但上述任何提示都没有帮助:)在我们的环境中,我们在Windows上运行了tomcat作为服务。我们安装了Java1.7并在此版本上设置了JAVA_HOME。当然,源是建立在Java1.7上的。尽管如此,tomcat说它使用以前版本的JVM。经过深入分析,安装在Windows上的Tomcat服务仍然保留JAVA_HOME的旧值,指向Java1.6。安装新的Tomcat服务后,一切都解决了。所以结论是:当你改变java版本和tomcat作为服务运行时,你必须重新安装tomcat服务。

我该怎么修?

此错误意味着用于执行类代码的JRE无法识别所使用Java的版本。通常是因为生成类文件(即编译它)的Java版本较新。

要修复它,你可以

a)使用将用于运行它的相同或更旧版本的Java编译器编译您的Java源。

b)使用较新版本的Java编译器编译您的Java源代码,但在兼容模式下。

c)在与用于编译类的JDK版本相同或更新的JRE中运行已编译的类。

您可以检查当前使用的版本javac -version表示编译器,java -version表示运行时。

我应该安装JDK,并将我的PATH变量设置为JDK吗而不是JRE?

对于编译,当然,安装和配置您想要的特定JDK。

对于运行时,您可以使用JDK或独立JRE附带的版本,但无论如何,请确保您安装了正确的版本并且已配置了PATH,以免出现意外。

JRE或JDK中的PATH变量有什么区别?

PATH环境变量告诉命令shell在哪里查找您键入的命令。当您键入java时,命令shell解释器将从左到右查看PATH变量中指定的所有位置,以找到合适的java运行时可执行文件来运行。如果您安装了多个版本的Java-即您在PATH变量中指定的多个位置都有java可执行文件,那么从左到右时遇到的第一个将是被执行的那个。

编译器命令是javac,仅随JDK一起提供。运行时命令是java,随JDK一起提供,位于JRE中。

很可能您安装了javac的一个版本(51.0=Java7),并且您还安装了相同版本的java,但是java的另一个先前版本出现在PATH中,因此正在调用而不是您期望的版本。

最常见的问题是JAVA_HOME变量配置错误,如果您安装了多个,它应该指向正确的JavaDevelopment Kit库。

要查找SDKJava文件夹的位置,请运行以下命令:

jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));'

Debian/Ubuntu

要检查您安装了哪些java(openjdk),请检查通过:

dpkg -l "openjdk*" | grep ^i

或:

update-java-alternatives -l

要更改它,请使用:

update-alternatives --config java

如果需要,前缀为sudo

选择替代java版本。

或者检查哪些可用于安装:

apt-cache search ^openjdk

如果需要,前缀为sudo

然后您可以安装,例如:

apt-get install openjdk-7-jre

如果需要,前缀为sudo

Fedora、OracleLinux、Red Hat

通过以下方式安装/升级适当的软件包:

yum install java-1.7.0-openjdk java-1.7.0-openjdk-devel

java-1.7.0-openjdk包只包含Java运行时环境。如果要开发Java程序,请安装java-1.7.0-openjdk-devel包。

BSD

FreeBSD Ports集合中有一个名为openjdk7的OpenJDK 7包,可能需要重新配置。

见:OpenJDK wiki页面

windows

只需从oraclesite安装适当的JavaSE开发工具包库或安装

Jenkins

如果Jenkins遇到此问题,请参阅:

但是,使用update-alternatives选择正确版本的Java(更新版本)应该可以。

哦,Mac OS X我可以通过设置JAVA_HOME变量来解决这个问题:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home

我在Grails项目的Spring Source Tool(STS)IDE中遇到了同样的问题。我检查了安装的Java版本,项目Java版本为1.7.*。后来我发现在GGTS.ini文件中Java版本设置为1.6:

解决方案:

-Dosgi.requiredJavaVersion=1.6改为
-Dosgi.requiredJavaVersion=1.7
在-vmargs
之前添加下面两行-vm
0_21/jre/lib/amd64/server/libjvm.so

问题解决。编码愉快。

在安装了自制的Mac OS X上修复此问题的另一种方法是:

brew install Caskroom/cask/java

将其添加到您的pom.xml文件中:

<project ....><properties><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target></properties></project>

其中1.7是您打算使用的Java版本。这将覆盖Maven编译器设置,因此可以从这里进行调试。

我通过检查部署程序集中是否部署了Maven依赖项来解决这个问题。在我的情况下,它们没有。

添加它解决了问题。

  • 如果您使用Maven,请设置您的Java编译级别。打开命令行并为您的编译级别编写java -version

    在此处输入图像描述

  • 如果您使用IntelliJ IDEA,请选择项目→文件设置构建执行部署编译器Java编译器。然后将字节码更改为1.7,如下图:

    在此处输入图像描述

如果您有第二个项目添加到您的构建路径中,请确保它将相同的编译器版本作为您的第一个项目:属性->Java编译器->编译器合规性级别

我正在使用OS X v10.11.5(El Capitan),我尝试通过Maven设置JAVA_HOME并强制使用“正确”的Java版本。没有帮助。

问题发生在应用程序仍在运行时注销OS X帐户时。再次登录后,OS X打开了具有灰色历史记录的旧终端会话。我使用相同的终端会话构建项目,但因不支持的类版本错误而失败。

清理Maven项目根本没有帮助。

为了解决这个问题,我只需要关闭自动打开的终端窗口并使用一个新的。

您的Java文件使用与您尝试运行它的版本(较低运行时版本)不同的版本(较高编译器版本)进行编译。

基本的理解是,使用较低版本编译的类预计会在更高版本中运行。但相反(使用更高的编译器版本编译并尝试以较低的运行时版本运行它)有时是不可能的。

因此,当您尝试执行程序时,会显示此错误。不支持major.minor版本x. x

Q:我在Java7中创建了一个应用程序,但是当我的用户尝试运行它,他们会得到一个不受支持的major.minor版本51.0错误。什么这意味着什么,我能做些什么呢?

答:如果您在Java7中使用javac编译应用程序,生成的类文件将具有51.0版本号7之前的Java无法识别此号码,因此您的用户将有在运行应用程序之前升级到Java7使用任何Java7个API,您可以尝试使用javac-Target 1.6创建一个1.6兼容的类文件。如果您的应用程序使用webstart部署,您可以指定最小需要的版本。有关详细信息,请参阅Web StartJava文档和JNLP在这里。一旦我们触发autoupdate,这个问题就会消失Java7,适用于目前桌面上Java6的最终用户时间表尚未确定,我们希望给开发人员首先解决他们的代码和JDK 7之间的任何问题。

(来源:oracle.com

  1. 单击项目中的属性。
  2. 转到Java构建路径。
  3. 单击添加库。
  4. 单击JRE系统库上的下一步。如果默认未选择,请选择您需要的。
  5. 单击完成。

你完蛋了!

对我来说,我在com/sun/javadoc/Doclet类上得到了这个错误。经过一些挖掘,我发现我不小心将tools.jar从Java8复制到我的Java7文件夹中。

找到Java7的tools.jar并将其放回文件夹解决了我的问题。所以尝试一下。

我遇到了同样的问题,我在Linux中修复了它。

检查你的$JAVA_HOME

需要JDK 1.8来编译/构建APK

安装JavaJDK 1.8并更改JAVA_HOME

编辑~/.bashrc并将您的JDK 1.8路径添加为JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/java-8-oracle/jre/

source ~/.bashrc

关闭当前终端窗口/选项卡并运行$JAVA_HOME以检查路径。

我尝试了一切。重新安装Tomcat终于奏效了。这是我在重新安装之前检查的内容。

确保您的环境变量看起来像这样。

$ echo $JAVA_HOMEC:\Program Files\Java\jdk1.7.0_51\$ echo $JRE_HOMEC:\Program Files\Java\jdk1.7.0_51\jre\bin

确保Eclipse使用的是您设置JAVA_HOME相同的jre(如果JAVA_HOME未设置,它将查看JRE_HOME)。Window > Prefrences > Java > Installed JREs(选中的是默认的)

如果您对tomcat文件进行了任何更改,特别是catalina.bat或startup.bat,那么您可能会告诉tomcat查看与您设置为JAVA_HOMEC:\Program Files (x86)\Apache\apache-tomcat-7.0.26\bin的Java版本不同的版本

在我的情况下,问题出在服务器运行时配置中:

服务器运行时环境

检查JRE是你需要的版本:

在此处输入图片描述

该项目的版本为1.7,服务器JRE设置为1.6,在更改为正确的java版本后,它启动得很好。

如果您使用ant,您可以在build.xml文件中为编译器指定“目标”,如下所示:

 <target name="compile" depends="init"><javac executable="${JAVA_HOME}\bin\javac" srcdir="${src.dir}" target="1.6" destdir="${classes.dir}" debug="true"deprecation="true" classpathref="compile.classpath" encoding="utf8"><include name="**/*.java" /></javac></target>

这个问题的答案是:

错误:edu/stevens/cs549/dhts/main/LocalContext:不支持major.minor版本52.0

我也遇到了同样的问题。对于那些在AWS ec2实例中遇到这种问题的人,并且以某种方式被重定向到这个问题。我正在回答这些问题,并想分享我是如何做到的。我遇到了麻烦,因为Amazon EC2实例运行的是Java 1.7版,也许我的项目与它不兼容,因为我使用的是Maven,它有点预配置为Java 1.8。所以我安装了新版本的java:

sudo yum -y install java-1.8.0

然后重要的一步是删除旧版本:

sudo yum remove java-1.7.0-openjdk

请记住在安装新版本后删除它,否则它将继续使用相同的旧版本,我希望它能解决您的问题,在我的情况下确实如此。

由于java 9-target--release替换。

在java 11之前,--release的可用数字是67891011
你可以猜到未来的版本将是1213,然后继续。

要为较旧的目标jvm编译,使用javac --release 7 Tmp.java//this将生成可以在jvm>=7上运行的. class文件,

然后您可以通过以下方式检查目标版本:

javap -v Tmp | grep version

在输出中,major version标识目标jvm版本。

  • 55->java 11
  • 54->java 10
  • 53->java 9
  • 52->java 8
  • 51->java 7
  • 50->java 6

未来版本将删除更多旧版本:

  • 从java 11开始,不支持主要版本<=49(java版本<=5)
  • 从java 12和13开始,不支持<=50(java版本<=6)的主要版本。

您可以通过命令找出当前javac支持的目标版本:
javac -help | grep releases

确保检查Java的环境变量版本,可能只是JAVA_HOME(JDK路径)和JRE_HOME(JRE路径)版本之间的差异导致问题

如您所知,为jdk(Java开发工具包)bin目录Java_home环境变量总是很好的做法。

看看你上面的问题,似乎JRE运行时环境正在寻找一个在JDk的Superset库中不兼容的类。我建议直接从Oracle下载源获得一个完整的JDK和JRE或JBoss包(如果需要),以避免任何此类问题。

在我的情况下,出现问题是因为$JAVA_HOME和$PATH中Java的不同版本。

echo $JAVA_HOME/usr/lib/jvm/java-7-openjdk-amd64/jreecho $PATH/opt/jdk/jdk1.8.0_151/bin:/usr/lib/jvm/java-7-openjdk-amd64/jre/bin:/usr/local/bin:/usr/bin:/bin

一旦我将它们更新为相同版本的Java问题就消失了。

export JAVA_HOME=/opt/jdk/jdk1.8.0_151export PATH=$JAVA_HOME/bin:$PATH

许多答案都提到了像Eclipse这样的IDE。然而,这个问题与使用Notepad++的本机开发有关。

命名错误的核心原因是使用的Java运行时环境和使用的类库不匹配。以下描述的目标是无需任何额外安装即可编译。

<强>1)检查PATH变量中的定义。如果有定义:

C:\Program Files (x86)\Common Files\Oracle\Java\javapath

和/或

C:\ProgramData\Oracle\Java\javapath

这些路径使用固定的java版本链接到java/javac。您可以在此文件夹中使用javac -version检查此版本。结果可能是:

java version "1.8.0_231"

这意味着Java版本8正在使用中。将此条目替换为%JAVA_HOME%\bin。如果JDK是手动安装的,请检查环境中是否设置了JAVA_HOME。如果没有,请添加它,例如:

JAVA_HOME="C:\Program Files\Java\jdk1.7.0_80"

<强>2)我已经使用gradle在命令行上构建了项目。在build.gradle中定义:

android {buildToolsVersion "24.0.1"dependencies {compile 'com.android.support:design:23.0.1'compile 'com.android.support:support-v4:23.0.1'...}...}

使用的build-tools dx文件比其他组件更新。因此需要修改:

buildToolsVersion "23.0.1"

如果有人正在使用Gradle,请将其放在build.gradle

java {sourceCompatibility = JavaVersion.VERSION_1_7targetCompatibility = JavaVersion.VERSION_1_7}

在上面的情况下,我们告诉编译器启用字节码与Java 7版本(我想在其中运行类的Java版本)兼容。