问题标签 [module-info]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
750 浏览

java - Java 9:ServiceLoader 不会从测试源(模块)加载测试实现

我正在使用 Java9 模块系统(在 openjdk11 上运行)

我有

  • 从 Java8 迁移而来,代码包含使用 ServiceLoader 机制的类。
  • 此类的单元测试,它尝试加载两个测试服务实现

  • 测试实现列在 META-INF/services 文件中

src/main/example/Service.java

和一个 src/main/module-info.java

我有一个像这样的单元测试

src/main/example/ServiceTest.java

我在测试源中有两个测试服务:

src/main/example/TestService1.java

src/main/example/TestService2.java

src/test/resources/META-INF/services/example.Service

我正在使用没有任何特定配置的 maven-surefire-plugin 3.0.0-M3

正确修补示例模块(来自surefireargs文件)

当我直接在 IntelliJ 中执行测试时,测试运行成功,找到了两个服务。但是,当我在 maven 中构建模块并由 surefire 执行测试时,它没有找到服务并且测试失败。

我应该如何配置surefire以找到位于测试源中的TestServices?我无法在模块信息中定义“提供...”声明,因为它们是测试服务。我究竟做错了什么?

0 投票
1 回答
1454 浏览

java - 如果目标级别为 8,我可以使用 module-info.java 吗?

我知道 jdk9+ 可以识别 module-info.java

但是我想知道 module-info.java 是否仍然可以与目标级别 8 结合使用。

例如,我希望我的库用于 java9+ 项目,它会将其识别为导出特定包的模块,但也可以在 java8 项目中作为普通 jar 文件使用。

0 投票
1 回答
1795 浏览

java - How to add maven dependencies of json to modules in >= Java 9

in java 8 projects you simply add the following dependencys in maven

Using OpenJDK, Eclipse 2018-12
and maven module, it results in getting a error in the module-info.java:

The package javax.json.stream is accessible from more than one module: java.json, org.glassfish.java.json

So in both dependency projects there is a package called javax.json.stream and due to jigsaw module system this is not allowed anymore?

How to fix this?

EDIT:
I updated the maven dependency to 1.1.4 and put them on the classpath. The javax.json-api has a module-info.java file and is working fine, eclipse shows no more errors.
But now the packages of the implementation javax.json (org.glassfish) are not found, resulting in a ClassNotFoundException: org.glassfish.json.JsonProviderImpl

What more can I do?

EDIT:
Its working now, i forgot to generate a module-info.java in this project.

0 投票
2 回答
592 浏览

java - 如何在运行时扩展模块路径

我喜欢服务。我也喜欢模块系统。对我来说不幸的是,在我使用 Java 9 之前,我养成了在运行时通过 jar 从加载的 jar 中获取服务提供者的习惯URLClassLoader,如下所示(为了简洁起见,我将使用 Java 10 var):

这工作正常,即使在 Java 9 及更高版本中,但它会将 jar 加载到类路径中,这意味着它使用旧META-INF\services方法来查找服务提供者。我宁愿使用该module-info方法,但这需要将 jar 加载到模块路径上,但我找不到任何可以这样做的方法。所以我在这里,希望这里有更彻底了解模块系统的人会告诉我如何做到这一点(或者它不能,如果是这样的话)。

0 投票
0 回答
129 浏览

java - 项目 maven-builds 很好,但是当我创建 module-info.java 时,我得到“分叉的 VM 在没有正确说再见的情况下终止。”

我有一个使用 maven、spring-boot 并连接到 postresql 数据库的简单项目。当我运行 mvn clean install 时,一切都运行良好,甚至是测试。(我正在用 java 10 编译它)然后我添加一个 module-info.java 将它变成一个 java9 模块。现在,如果我构建它并且我没有 -DskipTests,我会收到以下错误:

并且 surefire-reports 文件包含:

(听起来有点像问题是文件路径中的空间,对吗?但如果是,我在哪里更正?)

所以,我认为这一定是模块信息的错,因为这是唯一改变的事情。我一直在纠结要放什么。自动生成的一个 Eclipse 似乎是错误的,例如因为它包含测试依赖项,这给了我其他错误。所以我尝试了一下,它目前看起来像这样:

这是我的pom:

知道是什么导致了错误吗?

0 投票
1 回答
1299 浏览

java - 可以从 JDK 11 模块系统中的多个模块访问包

我们正在使用 Zulu JDK 11,但我们正面临问题包 com.sample.test 可以从多个模块访问:test1.module、test2.sample。

以下是示例项目的 git url 和屏幕截图供您参考。

https://github.com/kkvaranasi88/test1.git

0 投票
0 回答
454 浏览

spring - 无法在 Spring 示例中创建 EntityManager 对象

我正在通过采用一个找到的示例来了解 Spring 框架。EntityManager该示例按如下方式实例化一个对象:

不幸的是,一些错误的设置会导致运行时错误:

我读过类似的帖子,比如这个那个,但仍然无法解决我的问题。也许,解决这个问题的一个线索可能是我在包含module-info.java文件时遇到的错误:

导致以下错误;注释此文件会删除所有编译时错误:

有什么问题module-info.java?我的 有什么遗漏或错误persistence.xml

使用正在使用的 module-info.java 文件的 Eclipse(如果已注释,则不存在编译时错误)

这也是pom.xml文件:

编辑: 这里有两个错误消息: 从 Eclipse 复制到 Excel 的错误消息

0 投票
1 回答
90 浏览

java - 在教育环境中使用 Java 模块系统的最佳方式是什么?

我在大学环境中教授 Java 编程课程。在课程中使用最新的 LTS 版本(Java 11)是有意义的。我们使用 JavaFX 教授用户界面。然而,JavaFX 加上模块系统的组合会产生复杂性,尤其是对于初学者而言。

为了使用 JavaFX,必须有一个module-info.java看起来像这样的文件:

学生通常为每门课程使用一个 Java 项目。在每门课程中,他们都会从我这里得到很多例子,并且会自己编写更多的程序。这些示例和练习中的每一个都有自己的主类,并且它们被组织成许多不同的包。

问题在于第一条exports语句:据我所知,每条语句仅适用于单个包,不能使用通配符,也不包括子包。因此,如果我们有一个包含 50 个不同包的 Java 项目,module-info.java将包含 50个exports语句。这是一团糟。

也许这看起来微不足道,但对于刚学习编程的人来说,这又是一个障碍。我是否忽略了一些概括exports以涵盖多个包的方法?或者,是否有人对如何为我的学生简化此问题提出了很好的建议?

0 投票
0 回答
309 浏览

eclipse - 部署时出现 JavaFX-11 错误:找不到模块

我正在尝试部署一个非常基本的 JavaFX 应用程序。我只是在创建一个新的 JavaFX 项目并尝试将其部署到 .exe,但它给了我一个找不到模块的错误。

这是控制台日志:

我正在使用 jdk11.0.4、JavaFX-11.0.2、eclipse 4.12.0 和 e(fx)clipse 3.5

0 投票
1 回答
199 浏览

java - 模块化项目使用 jOpenDocument 上升 InvalidModuleDescriptorException

我正在使用混合模块化和非模块化方法在 Eclipse 2019-06 中使用 java/javafx 12 开发模块化 java 项目。由于运行时出现异常,无法让程序运行。

我需要使用混合模块化和非模块化方法,因为该程序需要外部库。它们中的大多数都可以作为模块使用,但开发人员并未将 jOpenDocument 作为模块提供。

我没有收到 Eclipse 的任何抱怨,除了“自动模块 jOpenDocument 的名称不稳定”,这应该不是问题。

当我启动程序时,出现以下异常:

我在模块路径中有所有外部 jar,模块信息文件如下所示。

该项目可以使用非模块化方法顺利运行,但我想继续使用模块。我发现这两个参考是针对同一种问题

使用 Java 11 在 Eclipse 中混合模块化和非模块化开发

使用 Maven 构建具有非模块化依赖项的 JDK 9 项目需要什么

但没有帮我解决。

jOpenDocument 的源代码可在https://jopendocument.org/download/jOpenDocument-src-1.4rc2.zip获得,因此通过添加 module-info 文件将 jar 更新为模块是可行的。我也尝试过,但没有成功,如果有人能做到这将有助于我认为的社区。

有没有人这么好心地暗示我的模块化项目可以通过使用可用的 jOpenDocument 二进制 jar 或将其从源代码转换为模块来工作?