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

springboot2/Kotlin/JDK9——由以下原因引起:java。lang.ClassNotFoundException:javax。交易系统例外

施振海
2023-03-14

实际上,我正在使用Kotlin开发SpringBootV2应用程序。我在版本9中使用JDK。

在添加了依赖项sping-boot-starter-data-jpa后,我得到了ClassNot找到错误:

原因:org。springframework。豆。工厂BeanCreationException:创建名为“entityManagerFactory”的bean时出错,该bean在类路径资源[org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]中定义:调用init方法失败;嵌套的异常是java。lang.NoClassDefFoundError:javax/transaction/SystemException

我找到了一些关于这个问题的文章,并在/src/main/kotlin下添加了模块信息。具有以下内容的java

    module de.sample.backend {

//    requires java.xml.bind;
    requires javax.transaction.api;
//    requires validation.api;
    requires hibernate.jpa;
//    requires hibernate.validator;
    requires spring.beans;
    requires spring.core;
    requires spring.context;
    requires spring.tx;
    requires spring.web;
    requires spring.webmvc;
    requires spring.data.commons;
    requires spring.data.jpa;
    requires spring.boot;
    requires spring.boot.autoconfigure;
//    requires cache.api;

}

但是接下来我会得到一个由java引起的。lang.ArrayIndexOutOfBoundsException:32800

[错误]无法执行目标组织。阿帕奇。专家插件:maven编译器插件:3.7.0:ProjectNaehmeisterei服务上的编译(默认编译):目标组织的执行默认编译。阿帕奇。专家插件:maven编译器插件:3.7.0:编译失败:32800-

这是我完整的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>de.sample.backend</groupId>
    <artifactId>sample-services</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>sample-services</name>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!--<java.version>1.8</java.version>-->
        <maven.compiler.source>1.9</maven.compiler.source>
        <maven.compiler.target>1.9</maven.compiler.target>
        <maven.compiler.release>9</maven.compiler.release>
        <kotlin.version>1.2.20</kotlin.version>
    </properties>

    <dependencies>

        <!-- Camunda - Spring Boot -->

        <dependency>
            <groupId>org.camunda.bpm.springboot</groupId>
            <artifactId>camunda-bpm-spring-boot-starter-webapp</artifactId>
            <version>2.3.0</version>
        </dependency>


        <!-- Spring Boot -->

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

        <!-- https://jaxenter.de/spring-boot-2-actuator-2-0-68749 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- Kotlin -->

        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib-jdk8</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-reflect</artifactId>
        </dependency>

        <!-- JUnit -->

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- Persistence / Database -->

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
        </dependency>

        <!-- Firebase -->

        <dependency>
            <groupId>com.google.firebase</groupId>
            <artifactId>firebase-admin</artifactId>
            <version>5.9.0</version>
        </dependency>

    </dependencies>

    <build>
        <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
        <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>

        <plugins>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>kotlin-maven-plugin</artifactId>
                <groupId>org.jetbrains.kotlin</groupId>
                <configuration>
                    <args>
                        <arg>-Xjsr305=strict</arg>
                    </args>
                    <compilerPlugins>
                        <plugin>spring</plugin>
                    </compilerPlugins>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.jetbrains.kotlin</groupId>
                        <artifactId>kotlin-maven-allopen</artifactId>
                        <version>${kotlin.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <Implementation-Version>${project.version}</Implementation-Version>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>9</source>
                    <target>9</target>
                    <jdkToolchain>
                        <version>9</version>
                    </jdkToolchain>
                </configuration>
            </plugin>
        </plugins>
    </build>


</project>

我实际上不知道如何解决那个问题。在另一台使用JDK 8的计算机上,它可以很好地编译。

有人能帮忙吗?

谢谢

更新

我使用spring初始值ZR创建了一个新的spring boot项目:https://github.com/Chris81T/spring-boot-jdk9-kotlin-demo

没有任何变化,我将得到同样的错误。也许有人可以找到它来让它工作。那就太好了:-)

共有1个答案

贾沛
2023-03-14

您需要包含所有从Java9弃用的javaee依赖项(替代方法是添加--add-模块java.se.ee--add-模块ALL-SYSTEM到maven编译器选项和java启动应用程序,但不推荐,因为类将在Java11)。

1.您需要删除module-info.java文件并添加下面的依赖项。

<properties>                                                                
    <argLine>--add-modules java.base</argLine>
 </properties>

或者您可以切换到surefire 2.21.0-请参阅http://maven.apache.org/surefire/maven-surefire-plugin/java9.html

我认为这是一个完整的列表,您可以选择,也可以全部使用:

    <dependency>                                                                                                                                                         
        <groupId>org.glassfish.jaxb</groupId>                               
        <artifactId>jaxb-runtime</artifactId>                               
        <version>2.3.0</version>                                            
    </dependency>                                                           
    <dependency>                                                            
        <groupId>org.glassfish.jaxb</groupId>                               
        <artifactId>jaxb-core</artifactId>                                  
        <version>2.3.0</version>                                            
    </dependency>                                                           
    <dependency>                                                            
        <groupId>javax.xml.bind</groupId>                                   
        <artifactId>jaxb-api</artifactId>                                   
        <version>2.3.0</version>                                            
    </dependency>                                                           
    <dependency>                                                            
        <groupId>javax.activation</groupId>                                 
        <artifactId>javax.activation-api</artifactId>                       
        <version>1.2.0</version>                                            
    </dependency>                                                           
    <dependency>                                                            
        <groupId>javax.annotation</groupId>                                 
        <artifactId>javax.annotation-api</artifactId>                       
        <version>1.3.1</version>                                            
    </dependency>                                                           
    <dependency>                                                            
        <groupId>javax.transaction</groupId>                                
        <artifactId>javax.transaction-api</artifactId>                      
        <version>1.2</version>                                              
    </dependency>                                                           
    <dependency>                                                            
        <groupId>javax.xml.ws</groupId>                                     
        <artifactId>jaxws-api</artifactId>                                  
        <version>2.3.0</version>                                            
    </dependency>                                                           
    <dependency>                                                            
        <groupId>com.sun.xml.ws</groupId>                                   
        <artifactId>jaxws-rt</artifactId>                                   
        <version>2.3.0</version>                                            
    </dependency> 
 类似资料:
  • 我使用spring数据来创建jpa和mongo。 附属国: spring版本是4.0。2.释放 SpringDataJPA版本是1.4。3.释放 spring数据mongodb版本为1.2。0.1释放 XML配置: 型号: 例外: 有人知道吗? 非常感谢。。

  • 问题内容: 当我通过SOAP UI运行WS时,我间歇性地收到以下错误。有时它不工作,然后继续工作,然后有时又不工作。另一个问题是,由客户端提供的测试Web服务运行正常,没有任何问题,但是当我们切换到产生问题的产品时。谷歌搜索并做了一些更改(HttpConfig上的超时,码头maxIdleTime),但仍然无法使其工作:(任何想法,我如何可以缩小问题的根源? 只需将SOAP UI与生产端点一起使用即

  • 问题内容: java和slf4j的一些问题使用想法制作项目,可以。但是如果我尝试用gradle制作罐子,我会遇到一些问题。 build.gradle Test.java 终奌站: 输出: 我试图使用gradle / maven(mvn包)相同的问题。由于某些原因,它无法在类路径中找到Logger和LoggerFactory。 问题答案: 谢谢迈克尔记得关于胖子的事。在您的评论尝试谷歌搜索后:“ g

  • 问题内容: 我是Spark框架的新手。我试图使用spark和java创建一个示例应用程序。我有以下代码 Pom.xml 资源 我正在尝试使用IntelliJ IDE运行以上代码。但是我有这样的错误 我在代码中错过了什么吗? 问题答案: 您的日志中的实际错误是: 引起原因:java.lang.StringIndexOutOfBoundsException:开始0,结束3,长度2 这是由于Java 9

  • 问题内容: 在关于sqlite的android vogella教程期间,我遇到了令人讨厌的问题,并出现以下错误: 我无数次地一步步修改所有文件,以正确重新创建R. class。关于此错误的非常奇怪的是,我不知道为什么在“ com.example.de.vogella.android”中有关于“ com.example”的任何内容。这是某种标准生成的名称吗?我所有的包/名称/路径都从未以“ com.

  • 我不熟悉自动化。尝试简单的硒POC。下面是webdriver配置的详细信息 JDK 版本 17.0.2 硒版本 4 Chrome 浏览器版本 98.0.4758.102 (官方构建) (64 位) Chromedriver 版本相同 这是我的代码: 网络驱动程序 = 新的铬驱动程序();驱动程序(“https://demoqa.com/login”); 我做了设置属性。请找到随附的屏幕截图。 错误