Java spring引导编译使用JDK1.7,但运行时使用1.6
我使用JDK1.7将spring引导应用程序编译为application.jar文件,但当我在安装JDK1.6的机器上运行application.jar时,出现了这个错误 线程“main”java.lang.UnsupportedClassVersionError:com/saifiahmada/spring/Application:Unsupported major.minor Version51.0中出现异常 这是我的pom.xmlJava spring引导编译使用JDK1.7,但运行时使用1.6,java,spring-boot,jdk1.6,Java,Spring Boot,Jdk1.6,我使用JDK1.7将spring引导应用程序编译为application.jar文件,但当我在安装JDK1.6的机器上运行application.jar时,出现了这个错误 线程“main”java.lang.UnsupportedClassVersionError:com/saifiahmada/spring/Application:Unsupported major.minor Version51.0中出现异常 这是我的pom.xml <project xmlns="http://mav
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.saifiahmada.spring</groupId>
<artifactId>dashboard</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>dashboard tsd</name>
<description>dashboard tsd</description>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.1.RELEASE</version>
</parent>
<properties>
<webjars-bootstrap.version>3.2.0</webjars-bootstrap.version>
<webjars-jquery-ui.version>1.9.2</webjars-jquery-ui.version>
<webjars-jquery.version>2.1.1</webjars-jquery.version>
<java.version>1.6</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<tomcat.version>7.0.59</tomcat.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.10.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- <configuration>
<source>1.6</source>
<target>1.6</target>
</configuration> -->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
4.0.0
com.saifiahmada.spring
仪表板
0.0.1-快照
仪表板tsd
仪表板tsd
罐子
org.springframework.boot
spring启动程序父级
1.2.1.发布
3.2.0
1.9.2
2.1.1
1.6
UTF-8
UTF-8
${java.version}
${java.version}
7.0.59
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧启动装置
org.springframework.boot
弹簧起动试验
测试
org.springframework.boot
spring引导启动器数据jpa
mysql
mysql连接器java
org.apache.poi
poi
3.9
org.scala-lang
scala图书馆
2.10.4
文件上传
文件上传
1.3.1
org.springframework.boot
springbootmaven插件
org.springframework
弹簧负载
1.2.0.1发布
谢谢
[编辑]
对于@Saurabh,我在pom.xml中更改了spring boot starter数据jpa的依赖关系,如下所示:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<exclusions>
<exclusion>
<groupId>javax.transaction</groupId>
<artifactId>javax.transaction-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.transaction</groupId>
<artifactId>jboss-transaction-api_1.1_spec</artifactId>
<version>1.0.0.Final</version>
</dependency>
org.springframework.boot
spring引导启动器数据jpa
javax.transaction
javax.transaction-api
org.jboss.spec.javax.transaction
jboss-transaction-api_1.1_规范
1.0.0.1决赛
较新的Java版本与较旧的Java版本兼容,但不是相反。因此,您通常无法在Java6运行时环境中运行使用JDK7编译的代码
确保它在Java6上工作的最佳方法是使用JDK6而不是JDK7来编译代码
这意味着您必须这样做,并确保在编译代码而不是JDK 7时使用它。(注意:Oracle不再支持JDK 6,您仍然可以下载它,但Oracle要求您创建一个帐户以下载它)。您遇到的问题是,您的一个依赖项需要一些根据Java 7编译的jar(javax.transaction-api-1.2.jar)
org.springframework.boot
此处引用的重要位仅供参考:
“虽然Java事务API本身不需要Java 7,但官方API jar包含的类是为需要Java 7而构建的。如果您使用的是JTA,那么您需要将正式的JTA1.2API jar替换为一个为在Java6上工作而构建的jar。为此,请排除javax.transaction:javax.transaction-api上的任何可传递依赖项,并用org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:1.0.0.Final上的依赖项替换它们。”
请看这里:
<>我意识到你使用的是Spring Bug 1.2.1,所有的引用都是1.2.2,但是这个问题很可能也存在于1.2.1,1.2.1已经不再用于下载了,所以你可能想考虑升级。但是你会遇到java 6的麻烦,所以你不妨考虑一下升级你的环境。耳鼻喉科
FWIW,在pom.xml中甚至不需要这些行:
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
${java.version}
${java.version}
您的POM看起来不错。您确定是Maven创建了类文件(也许您也在IDE中打开了项目)?正如@DaveSyer所说,它看起来不是用java 1.6编译的,而是用java 1.7编译的(51.0版表示java 7,请参阅)。也许你是用其他工具构建的。或者你是用maven clean package
构建的?@MatkoMedenjak:没错,我使用mvn package命令编译这个spring启动应用程序来生成jar文件。谢谢all@DaveSyer:是的,我确信根据我的经验,您完全可以在Java6RU上运行使用JDK7编译的代码有时,只要编译器目标设置为Java 6。好的,但这仍然不会阻止您使用Java 7标准库中存在但Java 6中不存在的API-只有在运行时获得NoClassDefFoundError
或NoSuchMethodError
时,您才会注意到它们。这是正确的。但这不是他看到的,他看到的。”不支持的major.minor版本51.0”,这是一个为Java 7编译的类文件,在本例中是“javax.transaction-api-1.2.jar”“被他的一个下属拉进来。在那之后,如果他使用Java 7 api,很可能会有其他问题,但我们无法从他发布的内容中看出。感谢您的建议和参考,我确实在spring boot starter数据jpa上使用javax.transaction-api替换了pom.xml,并添加了jboss-transaction-api_1.1_规范依赖项,而且,我确实将我的jdk降级为openjdk 6,并使用mvnpackage命令构建我的应用程序,到目前为止,它在jdk6上运行良好,谢谢大家
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>