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

Spring Boot-不支持Major.Minor版本51.0

丌官嘉良
2023-03-14

我在Tomcat6服务器上部署了一个Spring Boot应用程序,它返回以下错误

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)

我知道这意味着“您不能在这个容器上运行用JRE1.7编译的应用程序”,但是我的项目确实是用JRE1.6运行时编译的,并且我已经在我自己的Tomcat6容器上本地测试了这个应用程序,没有任何问题。

为了使应用程序与Servlet-2.5兼容,我遵循了以下指导:http://docs.spring.io/spring-boot/docs/current/reference/html/howto-tradition-deployment.html

@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;
   }
<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>

在我的本地服务器和部署打包的war文件之间,我可能忽略了什么吗?我搞不懂为什么我的项目坚持任何1.7依赖项。

共有1个答案

姚胡媚
2023-03-14

请参阅Spring Boot GitHub问题#2347,即javax.transaction:javax.transaction-api-1.2与Java 6不兼容,以及关于在Java 6上使用的Spring Boot文档。

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

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

 类似资料:
  • 我已经下载了程序: 解压缩它: 进入文件夹并运行: 这是我得到的错误: 我这样做过: 但是同样的错误 我的java版本: javac1.6。0_35 Java版本"1.6.0_35"OpenJDK运行时环境(IcedTea6 1.13.7) (6b35-1.13.7-1~Deb7u1)OpenJDK 64位服务器VM(build 23.25-b01,混合模式) 我读到这篇文章是因为我编译的版本比J

  • 我的pom.xml: 似乎所有的设置都是正确的,我指的是在pom和服务器上的java版本。

  • 当我试图编译我的GWT应用程序时,我得到的异常值低于异常值。知道吗?提前道谢。

  • 错误:(1,0)原因:com/android/build/gradle/libraryplugin:不受支持的Major.minor版本52.0 存档中 MyPath\AndroidStudioProjects\MyApp\App\libs\ColorPickerPreference\ColorPickerPreference\build.grad 和java版本 java版本“1.7.0_79”

  • 我试图按照Kafka网站https://kafka.apache.org/quickstart上的指南操作,但当我使用kafka2.12-2.5.0并尝试启动zookeeper时,我得到了: 我用的是Redhat7.1。尝试更新Java: 我应该有什么版本的Java?

  • 问题内容: 我正在尝试构建一个应用程序,但是它给出了一些错误。我的JDK版本如下: 这是我的错误日志: 问题答案: 发生这种情况是因为在编译时JDK较高,而在运行时JDK较低。 以下是版本列表: