当前位置: 首页 > 知识库问答 >
问题:

Spring Boot编译使用JDK1.7,但运行时使用1.6

曾新立
2023-03-14

我编译Spring引导应用程序使用jdk1.7application.jar文件,但当我运行application.jar安装jdk1.6的机器上,出现了这个错误

线程“main”java中出现异常。lang.UnsupportedClassVersionError:com/saifiahmada/spring/Application:不支持的专业。次要版本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中的依赖项。用于spring boot starter数据jpa的xml,如下所示:

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

共有2个答案

陈夜洛
2023-03-14

较新的Java版本与较旧的Java版本兼容,但不是相反。因此,您通常无法在Java6运行时环境上运行使用JDK 7编译的代码。

确保它在Java6上工作的最佳方法是使用JDK6而不是JDK7来编译代码。

这意味着您必须下载并安装JDK 6,并确保在编译代码而不是JDK 7时使用它。(注意:Oracle不再支持JDK 6,您仍然可以下载它,但Oracle要求您创建一个帐户才能下载它)。

汤枫
2023-03-14

您遇到的问题是,您的一个依赖项需要一些根据Java7(javax.transaction-api-1.2.jar)编译的jar

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

请看看这个,它描述了如何在Java6上运行Spring Boot:

http://docs.spring.io/spring-boot/docs/1.2.2.RELEASE/reference/htmlsingle/#howto-use-java-6

此处引用的重要位仅供参考:

"虽然Java事务API本身不需要Java7,但官方API jar包含的类需要Java7。如果您使用的是JTA,那么您需要将官方的JTA 1.2 API jar替换为已经构建用于Java6的。要做到这一点,排除对javax.transactionjavax.transactionapi的任何传递依赖,并将其替换为对org.jboss.spec.javax.transactionjboss-transaction-api_1的依赖。2_spec: 1.0.0。最终”

请看这里:

http://docs.spring.io/spring-boot/docs/1.2.2.RELEASE/reference/htmlsingle/#getting-启动系统需求

我知道你正在使用Spring Bug 1.2.1,我的所有引用都是1.2.2,但是很有可能这个问题在1.2.1中已经存在,并且1.2.1已经不能下载了,所以你可能想考虑升级。但是使用Java6会遇到麻烦,所以您最好考虑升级您的环境。

FWIW,你的pom中甚至不需要这些线条。xml:

<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
 类似资料:
  • 我的Android项目设置为使用Maven,所以我从pom.xml文件导入IntelliJ。IntelliJ中的编译器设置正确地指向1.7,但当我尝试编译时我得到: 错误:java:javacTask:源版本1.7要求目标版本1.7 我对maven编译器插件的设置将源和目标都设置为这个,所以这不是问题所在。但是,在模块设置中,我看到我的模块正在使用 Maven Android API 19平台(j

  • 问题内容: 我正在尝试使用JavaMail API发送电子邮件。我从自解压二进制文件在我的主目录中安装了jdk 1.5。我正在使用Ubintu 9.10 我使用下一条命令编译程序: 〜/ jdk1.5.0_22 / bin / javac -classpath〜/ jdk1.5.0_22 / jre / lib / javamail-1.4.3 / mail.jar:〜/ jdk1.5.0_22

  • 我有一个Spring启动应用程序,需要: 可以在servlet容器中作为战争部署 通过“mvn Spring Boot:运行”可运行`` 我还希望通过右键单击并运行它,能够在我的IDE(Eclipse或IntelliJ IDEA社区)中运行此应用程序。 下面是我的pom.xml的有趣部分(注意,我不是从spring boot starter父pom继承的): 这是我的: 在IDE中运行main时,

  • 我正在用Java编写一个程序,并且使用JavaFX作为GUI。直到今天,我一直在使用javafx独立编写代码,所有的事情都运行得很顺利。我已经决定开始使用maven,现在项目不编译,也不运行或执行。 这是我的主要课程: 我在其他项目中使用过maven,但从未使用过JavaFX。我该怎么办?

  • 问题内容: 我在文件MyClass.java文件中有一个名为MyClass的类(下面提到的代码) 我在上课 但是我正在尝试使用 要么 我遇到错误 但是,如果我省略了软件包名称,则可以运行该程序。我要去哪里错了? 问题答案: 确保您位于包文件夹(已编译的类文件所在的文件夹)的父目录中,并执行以下命令: 下面是一个示例文件结构: 在上面的示例结构中,您将必须从“ bin”目录中执行命令。 另外,将类定