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

在 Java 9 中,我应该需要哪个模块才能使用 JPA?

易骁
2023-03-14

我正在用一个需要JPA(javax.persistence.*classes)的项目测试Java9。当我添加<code>模块信息时。java并声明我的模块,javax下的所有类。persistece包变得不可用。

我搜索了很多,但找不到在Java9模块项目中使用JPA所需的模块。

更新 正如艾伦建议的那样,我跑了

$ jar --describe-module --file=javax.persistence-api-2.2.jar

No module descriptor found. Derived automatic module.

java.persistence@2.2 automatic
requires java.base mandated
contains javax.persistence
contains javax.persistence.criteria
contains javax.persistence.metamodel
contains javax.persistence.spi

但还是有了这个module-info.java

module my.module {

    requires java.persistence;

}

我得到“module-info.java:[3,18] module not found: java.persistence”。

更新2这是我的项目结构:

.
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   ├── my
    │   │   │   └── module
    │   │   │       └── MyBean.java
    │   │   └── module-info.java
    │   └── resources
    └── test
        ├── java
        └── resources

pom.xml具有javax.persistence-api依赖项。

测试回购:https://github.com/heruan/java9-jpa

共有3个答案

费和惬
2023-03-14

尝试使用此 maven 依赖项:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.5.2.Final</version>
</dependency>
皇甫飞光
2023-03-14

我认为JPA还没有作为一个模块发布,但是你应该可以把它作为一个自动模块来使用。你能使用< code>jar - file=

池麒
2023-03-14

使用maven,您可以使用依赖项,例如

<dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>javax.persistence-api</artifactId>
    <version>2.2</version>
</dependency>

maven-compiler-plugin 一起更新,以配合此处详述的 jdk9。

与gradle的依赖性相似

compile group: 'javax.persistence', name: 'javax.persistence-api', version: '2.2'

它基于javaee/jpa-spec。这将有助于

requires java.persistence 

作为一个自动模块,建议作为此处模块的名称。

除了细节之外,这是在 META-INF/MANIFEST 中定义的。MF as :

Manifest-Version: 1.0
Bundle-Description: Java(TM) Persistence 2.2 API jar
Automatic-Module-Name: java.persistence
...

注意Alan建议的确定模块名称的方法是精确的,但没有广告,我仍然喜欢使用某个包的类,然后让IntelliJ(2017.2.4)在我说“导入类”和“添加要求”时为我解决这个问题。;)

 类似资料:
  • 问题内容: 我想在我的网站上使用我的图像编辑工具。我还需要吗? 我不了解这种情况。如果我不需要它,那么我们什么时候可以同时使用nodejs和angularjs? 问题答案: 您不需要NodeJS即可创建客户端图像编辑工具。 AngularJS是一个由Google和社区维护的Web应用程序框架,可帮助创建单页应用程序,该应用程序由一个HTML页面组成,该页面包含客户端的CSS和JavaScript。

  • 我是编程新手,我想在我的macbook中安装netbean,但我一直有这样的文本“JDK丢失,需要运行一些NetBeans模块请使用--jdkhome命令行选项指定JDK安装或查看http://wiki.netbeans.org/FaqRunningOnJre了解更多信息。”

  • 我正在使用HIbernate core 3.6.2 final。我将注释类映射放在hibernate中。cfg。xml,例如 由于我使用3.6.2的Hibernate版本,所以我不需要创建注释配置类对象。因此,我将配置对象创建为私有静态最终SessionFactory SessionFactory; 但给我错误作为初始SessionFactory创建failed.org.hibernate.Map

  • 问题内容: 在这个问题中,如何在C 11中有效地选择标准库容器?是选择C 集合时要使用的便捷流程图。 我认为对于那些不确定应该使用哪个集合的人来说,这是一个有用的资源,因此我试图找到类似的Java流程图,但未能做到。 哪些资源和“备忘单”可用来帮助人们选择使用Java进行编程时使用的正确Collection?人们如何知道应该使用哪些List,Set和Map实现? 问题答案: 由于找不到相似的流程图

  • 在这个问题中,如何在C 11中有效地选择标准库容器?是选择C集合时使用的方便流程图。 我认为对于那些不确定应该使用哪个集合的人来说,这是一个有用的资源,所以我试图找到一个类似的Java流程图,但没能做到。 有哪些资源和“备忘单”可以帮助人们在用Java编程时选择正确的集合?人们如何知道他们应该使用什么列表、集合和映射实现?

  • 问题内容: Java 8中有一整套日期类: ; ; ; ; ; 。 我已经忽略了他们的JavaDocs,并注意所有这些类都包含我需要的所有方法。因此,目前,我可以随机选择它们。但是我想为什么有6个单独的类并且每个类都专用于特定目的是有原因的。 技术信息和要求: 输入为,将转换为这些日期格式之一。 我不需要显示时区,但是当我比较两个日期时,能够正确比较纽约和巴黎的时间很重要。 精确的级别是秒,无需使