繁体   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