我使用 jdk 1.7 将 spring boot 应用程序编译为 application.jar 文件,但是当我在安装了 jdk 1.6 的机器上运行 application.jar 时,出现此错误
线程“主”java.lang.UnsupportedClassVersionError 中的异常:com/saifiahmada/spring/Application:不支持的 major.minor 版本 51.0
这是我的pom.xml
<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>
谢谢
[编辑] 对于@Saurabh,我在我的 pom.xml 中更改了对 spring-boot-starter-data-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>
最佳答案
您遇到的问题是您的一个依赖项需要一些针对 Java 7 (javax.transaction-api-1.2.jar) 编译的 jar
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
请看一下这个,它描述了如何在 Java 6 上运行 Spring Boot:
http://docs.spring.io/spring-boot/docs/1.2.2.RELEASE/reference/htmlsingle/#howto-use-java-6
重要的一点在这里引用以供引用:
“虽然 Java Transaction API 本身不需要 Java 7,但官方 API jar 包含已构建为需要 Java 7 的类。如果您使用的是 JTA,则需要将官方 JTA 1.2 API jar 替换为一个已经构建为在 Java 6 上工作。为此,排除对 javax.transaction:javax.transaction-api 的任何传递依赖,并将它们替换为对 org.jboss.spec.javax.transaction:jboss-transaction-api_1 的依赖.2_spec:1.0.0.Final"
也可以看看这里:
我确实知道您使用的是 Spring Boot 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 - spring-boot 编译使用 jdk 1.7 但运行使用 1.6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28983247/