簡體   English   中英

spring-boot編譯使用jdk 1.7但運行使用1.6

[英]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”

另外看看這里:

http://docs.spring.io/spring-boot/docs/1.2.2.RELEASE/reference/htmlsingle/#getting-started-system-requirements

我確實意識到你使用的是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM