![](/img/trans.png)
[英]Can I use multiple spring-boot containers with different JDK versions?
[英]spring-boot compile use jdk 1.7 but run use 1.6
我使用jdk 1.7編譯spring boot應用程序到application.jar文件,但是當我在安裝了jdk 1.6的機器上運行application.jar時,會出現此錯誤
線程“main”中的異常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編譯的jar(javax.transaction-api-1.2.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替換為官方JTA 1.2 API jar。為此,請在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版本與較舊的Java版本兼容,但不是相反。 因此,您通常無法在Java 6運行時環境中運行使用JDK 7編譯的代碼。
確保它在Java 6上運行的最好方法是使用JDK 6而不是JDK 7來編譯代碼。
這意味着您必須下載並安裝JDK 6 ,並確保在編譯代碼而不是JDK 7時使用它。(注意:Oracle不再支持JDK 6,您仍然可以下載它但Oracle要求您創建一個帳戶,以便下載它)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.