java - Spring Boot - 不支持的主要.次要版本 51.0

标签 java spring maven

我已将 Spring Boot 应用程序部署到 Tomcat 6 服务器上,该应用程序返回以下错误

org.springframework.beans.factory.BeanCreationException: Error creating bean
with name 'entityManagerFactory' defined in class path resource [com/myApp/PersistenceJPAConfig.class]: 
Invocation of init method failed; nested exception is 
java.lang.UnsupportedClassVersionError: 
javax/transaction/SystemException : 
Unsupported major.minor version 51.0 (unable to load class javax.transaction.SystemException)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1566)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)

我知道这意味着“您无法在此容器上运行使用 JRE 1.7 编译的应用程序”,但是我的项目确实是使用 JRE 1.6 运行时编译的,并且我已经在我自己的 Tomcat 6 容器上本地测试了该应用程序没问题。

我已按照此处的说明进行操作,以使我的应用程序符合 Servlet-2.5 标准:http://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html

这是我的 PersistenceConfig.xml LocalEntityManager 配置,返回错误:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories("com.myapp.repositories")
@PropertySource("classpath:application.properties")
public class PersistenceJPAConfig{

    @Autowired
    private Environment environment;

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(dataSource());
        em.setPackagesToScan(new String[] { "com.myapp" });
        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        em.setJpaVendorAdapter(vendorAdapter);
        em.setJpaProperties(additionalProperties());
        return em;
   }

以及我的 pom.xml 依赖项

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.2.RELEASE</version>
    </parent>

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-batch</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>net.sourceforge.jtds</groupId>
            <artifactId>jtds</artifactId>
            <version>1.2.4</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.jaxrs</groupId>
            <artifactId>jackson-jaxrs-json-provider</artifactId>
            <version>2.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.dbunit</groupId>
            <artifactId>dbunit</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-legacy</artifactId>
            <version>1.0.1.RELEASE</version>
        </dependency> 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>

        </dependency>

    </dependencies>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <build>
        <plugins>
            <!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> 
                <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> 
                <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> 
                </executions> </plugin> -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>

                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

这是项目方面

enter image description here

构建路径

enter image description here

在我的本地服务器和部署打包的 war 文件之间可能有什么我忽略的事情吗?我不明白为什么我的项目保留任何 1.7 依赖项。

最佳答案

参见Spring Boot GitHub issue #2347 that javax.transaction:javax.transaction-api-1.2 not compatible with Java 6Spring Boot documentation about use on Java 6 .

您正在部署的 .war 文件可能包含 javax.transaction-api-1.2.jar (包含 Java 7 编译的类文件)和 jboss-transaction-api_1.2_spec-1.0.0.FINAL.jar (包含 Java 6 个已编译的类文件),因为引用的问题 #2347。首先加载这两个 .jar 文件中的哪一个可能是特定于环境的,这可以解释为什么您在本地得到不同的结果?

如果发生这种情况,那么添加非 JBoss 依赖项的排除可能会为您解决问题。

关于java - Spring Boot - 不支持的主要.次要版本 51.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29262788/

相关文章:

java - com.github.javaparser.JavaParser 找不到

java - 将 JSON 对象映射到 Hibernate 实体

java - ClassNotFoundException : org. slf4j.LoggerFactory Maven 问题

Maven 无法识别标签 : 'executions'

maven - 如何使用 Maven 设置工作的 Vaadin 项目并使用 Jetty 运行它?

带有mysql数据库的java应用程序

Java Rmi数据库连接?

java - Windows 检查在 Tic Tac Toe 游戏中不起作用?

java - Spring - JMS,如何在应用程序启动后启动 JMS 并在应用程序关闭时不断尝试重新连接

json - Spring @ReponseBody @RequestBody 与抽象类