运行我编译的jar文件时出现此错误:
java.lang.UnsupportedClassVersionError: eventtrigger/test/FulfillPurchaseOrder : Unsupported major.minor version 51.0
我跟踪了与此错误相关的stackoverflow中的大部分答案:
>java -version
java version "1.6.0_41"
OpenJDK Runtime Environment (IcedTea6 1.13.13) (6b41-1.13.13-0ubuntu0.14.04.1)
OpenJDK 64-Bit Server VM (build 23.41-b41, mixed mode)
>javac -version
java version "1.6.0_41"
> sudo update-alternatives --config java
* 2 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 manual mode
> sudo update-alternatives --config javac
* 1 /usr/lib/jvm/java-6-openjdk-amd64/bin/javac 1061 manual mode
我的eclipse编译器也设置为1.6,尽管我使用ant来构建jar文件:
build.xml
<?xml version="1.0"?>
<project name="EventTriggerTestFulfillPurchaseOrder" default="main" basedir=".">
<!-- set global properties for this build -->
<property name="jar.name" value="plugin-event-trigger-test-fulfill-purchase-order.jar"/>
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="build.deploy.dir" value="${build.dir}/deploy"/>
<property name="build.classes.dir" value="${build.dir}/classes"/>
<property name="emp-jar.dir" value="/usr/java/jboss/server/default/deploy"/>
<property name="lib.dir" value="/usr/java/jboss/server/default/lib"/>
<!-- define classpath -->
<path id="base.path">
<pathelement location="${build.classes.dir}" />
<fileset dir="${lib.dir}">
<include name="*.jar"/>
</fileset>
<fileset dir="${emp-jar.dir}">
<include name="emp-*.jar"/>
</fileset>
</path>
<target name="init">
<mkdir dir="${build.classes.dir}"/>
<mkdir dir="${build.deploy.dir}"/>
</target>
<!-- Compile the java code from ${src.dir} into ${build.classes.dir} -->
<target name="compile" depends="init">
<javac
srcdir="${src.dir}"
destdir="${build.classes.dir}"
debug="on"
deprecation="off"
optimize="on"
includes="*.java"
classpathref="base.path"
>
</javac>
</target>
<!-- Put everything in ${build.classes.dir} into the ${build.deploy.dir}/${jar}.jar file -->
<target name="jar" depends="compile">
<echo message="Compiling jar files"/>
<delete file="${build.deploy.dir}/${jar.name}"/>
<jar jarfile="${build.deploy.dir}/${jar.name}"
basedir="${build.classes.dir}">
<manifest>
<attribute name="Main-Class" value="eventtrigger.test.FulfillPurchaseOrder" />
</manifest>
<!-- <zipgroupfileset dir="${lib.dir}" includes="gson-2.2.2.jar" />-->
</jar>
</target>
<target name="main" depends="jar">
</target>
<!-- Cleans up the current ${build.dir} -->
<target name="clean">
<delete dir="${build.dir}}"/>
</target>
</project>
它正确编译而没有问题:
init:
compile:
[javac] /home/test/test-optional/plugins/eventtrigger/test/FulfillPurchaseOrder/build.xml:40: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 1 source file to /home/test/test-optional/plugins/eventtrigger/test/FulfillPurchaseOrder/build/classes
[javac] Note: /home/test/test-optional/plugins/eventtrigger/test/FulfillPurchaseOrder/src/FulfillPurchaseOrder.java uses unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
jar:
[echo] Compiling jar files
[delete] Deleting: /home/test/test-optional/plugins/eventtrigger/test/FulfillPurchaseOrder/build/deploy/plugin-event-trigger-test-fulfill-purchase-order.jar
[jar] Building jar: /home/test/test-optional/plugins/eventtrigger/test/FulfillPurchaseOrder/build/deploy/plugin-event-trigger-test-fulfill-purchase-order.jar
main:
BUILD SUCCESSFUL
Total time: 1 second
我正在使用ubuntu。
有任何建议吗?