当前位置: 首页 > 面试题库 >

Java 9,Hibernate和java.sql / javax.transaction

戚育
2023-03-14
问题内容

我试图使用Hibernate将项目“升级”到Java 9,但是在使模块正常运行方面遇到问题。

我的相关部分module-info.java看起来像这样:

module test {

    ...

    requires java.base;
    requires hibernate.core;
    requires javax.transaction;
    requires java.sql;

}

和我的POM中的相关依赖项是

  • org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec,2.0.0.Alpha1
  • org.hibernate:hibernate-core,5.2.12。最后
  • javax.transaction:javax.transaction-api,1.2

问题是,如果我运行该程序,则会得到NoClassDefFoundErrorforjavax.transaction.SystemException。我调查了一下,很显然,我的模块缺少requiresonjavax.transaction

因此,我在上添加了模块依赖项javax.transaction-api。然后我继续尝试再次运行该程序-
现在我不见了java.sql.SQLException

这是我遇到的问题:如果我在java.sql包含此类的模块上添加依赖项,则最终会发生冲突:

模块javax.transaction.xajava.sql和读取包javax.transaction.api

java.sqljavax.transaction.api包含不同的软件包,并且有一个共同的(javax.transaction.xa),
但我都需要它们

我该如何处理?有什么简单的我想念的吗?


问题答案:

使用1.3版而不是1.2 javax.transaction-api版,此版本javax.transaction.xa已被删除。

Maven的依赖:

<dependency>
    <groupId>javax.transaction</groupId>
    <artifactId>javax.transaction-api</artifactId>
    <version>1.3</version>
</dependency>


 类似资料:
  • 食氧;视窗7;JDK 9决赛从9日开始,21日结束;JUnit4.12和现有的应用程序。作为起点,可以编译、执行应用程序,并且所有JUnit测试都显示为绿色。现在我们使用eclipse生成文件模块信息。JAVA结果是: 但有一个错误:junit无法解析为模块。问题是:如何告诉文件junit没有定义任何模块,应该在兼容模式下运行?

  • 我试图实现java.time来解析不同的日期格式并返回为java.sql.日期。但是,如果我使用java.sql.Date.value(LocalDate date),我将失去时间。如何获得与java.sql.日期(java.util.日期date.get时间())相同的方式?我的应用程序中可能的格式是。 ormatter.of模式("yyyy-MM-dd");日期时间格式(DateTimeFor

  • 我对Java编程比较陌生,我正在上的课正在向我介绍MySQL。我使用的是JDK 10.0.2,我的课有JDK 1.7或1.8的说明。我刚刚下载了MySQL连接器文件,提取了它,并将“mysql-connector-java-8.0.12.jar”文件放在桌面上的临时文件夹中。我的导师想让我将该文件复制到“JAVA_HOME\jre\lib\ext”。然而,通过这里,我了解到,从JDK 9及更高版本

  • Java文档可以使用工具生成。 它目前以格式生成文档。 在java 9中,可以通过在命令行参数中使用选项生成格式的文档。 旧式的java文档 考虑F:\worksp\java9文件夹中有一个Java文件:Tester.java,其代码如下 - 可以运行jdk 7 的javadoc工具来生成文档。 使用标志运行jdk 9的javadoc工具以生成新类型的文档。 打开生成的文件,如下所示 -

  • 类是在Java 8中引入的,可以通过设置其值和状态显式来完成。 它可以用作。 它支持未来完成时触发的相关函数和操作。 在Java 9中,CompletableFuture API进一步得到了增强。 以下是对API进行的相关更改。 支持延迟和超时。 改进了对子类的支持。 添加了新的工厂方法。 1. 支持延迟和超时 如果在给定超时之前未完成,则此方法使用给定值完成。 如果在给定的超时之前没有完成,则此

  • 主要内容:takeWhile(Predicate接口),dropWhile(Predicate接口)流(Stream)是在Java中引入的,以帮助开发人员从一系列对象中执行聚合操作。在Java 9中,使用较少的方法就可以使流更好。 takeWhile(Predicate接口) 语法 方法获取所有值直到返回。 在有序流的情况下,它返回一个流,该流包含从此流中匹配给定的元素的最长前缀。 示例 方法获取所有,和值,然后当字符串为空,它将停止执行。 dropWhile(Predicate接口) 语法 方