问题标签 [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 回答
820 浏览

java - 如何在 SBT 中创建拼图模块?

我想使用 jlink 从 Scala 源代码为所有平台(darwin、linux、windows)创建自包含的应用程序包。似乎jlink只适用于新的(相对)拼图模块 - 所以我需要将我的代码打包为一个模块。在 Java 世界中,通过将特殊的 module-info.java 文件放入将成为模块的包中似乎很容易实现。

我试图跟随直觉,只是将这个 module-info.java 放入src/main/java/my.package.name/module-info.java. 虽然这不起作用。似乎scalac正在尝试像通常的 Java 文件一样读取 module-info.java(事实并非如此),因此出现错误

我需要做什么才能将我的 Scala 代码打包为一个模块?

打开 JDK:11 Scala:2.12.4 SBT:1.1.6

0 投票
1 回答
184 浏览

java - 是否可以跨 Java 模块使用 SharedSecrets?

鉴于:

  • 模块AB, whereB导入A.
  • 模块A出口external.class1。它定义但不导出external.class1.secretProvider, internal.SharedSecretsand internal.class2(更多内容见下文)。
  • 模块A使用SharedSecrets 机制在using中授予external.class1对私有方法的访问权限。internal.class2external.class1.secretProvider

我希望授予external.class3(在 Module 中定义B)对私有方法的访问权限,但internal.class2我无法这样做。internal.SharedSecretsexternal.class1.secretProviderA

有没有办法在不将它们导出给全世界看到的情况下B访问's 的秘密?A

0 投票
1 回答
863 浏览

java - 在 maven 和 java 9+ 中使用 java 自动模块 cdi.api

我想在 java 模块中使用 CDI 功能。我希望我的代码保持通用并且不依赖于特定的实现。

我使用 Java 11 和 Maven 3.6.0。

为简单起见,我的目标简化为javax.enterprise.context在 java 文件中导入包。当我在没有模块(没有module-info.java)的情况下这样做时,一切都很好。

现在,当我在module-info.java不需要其他模块的情况下添加 a 时,我收到以下错误消息:
package javax.enterprise.context is not visible (package javax.enterprise.context is declared in the unnamed module, but module javax.enterprise.context does not read it)

到现在为止一切正常。这个消息很有意义,因为我不需要 CDI 模块。

为了解决这个问题,我添加requires cdi.api;到我的module-info.java,只是得到以下错误:
module not found: cdi.api

我的理解是 CDI 库应该采用受 jar 文件名称启发的自动模块名称。当我使用-X指令运行 maven 时,我cdi-api-2.0.jar在类路径中看到。我相信,如果我错了,请纠正,这应该转换为cdi.api自动模块名称。但这仍然行不通。

这是我的最小示例:

pom.xml:

src/main/java/module-info.java:

src/main/java/com/acme/Main.java

任何见解都受到高度赞赏。

0 投票
2 回答
3583 浏览

java - 未找到 module-info.java 中所需的模块

module-info.java运行 gradle 时,找不到我声明的所有必需模块:

模块信息.java:

文件夹结构:

在此处输入图像描述

0 投票
0 回答
641 浏览

eclipse - 如果 module-info.java 存在,Eclipse 2018-09 找不到测试类

我在 Eclipse 中有一个简单的 Java 11 项目,具有以下依赖项:

项目结构如下:

项目结构

module-info.java仅导出模块 simple.tests 中simple.tests

我已经定义了以下 Gradle 任务来正确设置 Eclipse 项目及其依赖项。测试依赖项位于类路径上,这些仅对测试源可见。

我可以使用以下设置在 Gradle (5.0) 中编译和运行测试用例:

但是,我无法在 Eclipse 中执行 JUnit 测试,因为我收到一条错误消息(没有使用测试运行器“Junit 5”找到测试)和以下堆栈跟踪:

将测试依赖项移动到模块路径并不能解决问题。在这种情况下,即使在将 Junit Launcher 添加到模块路径之后,我也会得到以下堆栈跟踪:

我找到的唯一解决方案是删除 module-info.java 文件。删除模块描述符后,测试用例可以在 Eclipse 和 Gradle 中执行。

我的配置中有错误的设置吗?还是我做错了什么?

先感谢您!

0 投票
2 回答
6761 浏览

java - Java:`sun.awt.image` 包是否已弃用?

我想使用一些sun.awt.image.PNGImageDecoder在我的项目中使用的代码。问题是源代码基于Java 8,而我的项目使用JDK 9+ (11)。所以我得到了这个错误:

包 ' sun.awt.image' 在模块 ' java.desktop' 中声明,它不会将其导出到未命名的模块

对于import sun.awt.image.*,并且:

符号在模块 ' java.desktop' 中声明,它不导出包 ' sun.awt.image'

用于使用PNGImageDecoderImageDecoder等。

经过一番努力寻找解决方案,我发现了一些类似的情况,建议添加requires java.desktop;module-info.java文件中(比如这个案例这个案例)。module-info.java但是当我意识到这个解决方案只有在你的项目已经有一个文件并且你缺少一个使用过的模块时才有用。

我的项目还没有这个文件(注意第一条错误消息中的“未命名模块”)。据我所知,这意味着所有模块都是自动导入的。因此,添加此文件并添加该行没有任何效果,除了(更改错误消息和)导致我的代码的其他部分出现类似问题(当然,可以通过将所需模块添加到module-info.java文件来解决)。

确定我在(JDK 11的)文件夹中导入了所有模块jmods,但问题没有解决:


我知道这个包(sun.awt.image)存在于java.desktop(JDK 11的)模块中,但不知道如何访问它。

我使用 IntelliJ IDEA 作为 IDE。

0 投票
1 回答
913 浏览

java - WildFly 服务模块加载器 - jdk.incubator.http.HttpClient 上的 ClassNotFound

我正在使用 WildFly15 和 JDK 10 来使用新的 HTTP 客户端构建一个应用程序,当我jdk.incubator.httpclient在我的模块中声明它是唯一且单一的要求时,它工作正常。(我不能去JDK11,因为我们需要以32位运行)。

这是两组值的完整命令行(我从 Eclipse 复制了它):

我正在正确添加添加--add-modules jdk.incubator.httpclient到 JVM 启动。

但是,当我删除javaee.api模块的注释并将其添加为要求时,我得到ClassNotFoundException

由于我在 EJB 中使用 HTTP 客户端 API,这可能是 javaee.api 中断构建的原因吗?如何解决?

使用选项 use 启动 java--show-module-resolution确认模块已加载:

0 投票
1 回答
738 浏览

java - Java 模块指令如何影响对模块的反射访问?

根据https://www.oracle.com/corporate/features/understanding-java-9-modules.html,Java Module 系统引入了以下指令:

  • 出口,出口……到
  • 用途
  • 提供...与
  • 打开,打开,打开……到

每个指令对使用反射访问内部成员的外部模块有什么(如果有)影响?

例如,是否exports <package>允许外部模块使用反射访问导出包的所有public成员?其他指令呢?protectedprivate

0 投票
2 回答
1167 浏览

java - 模块信息中的 Javadoc 注释

module-info除了package-info以前存在的文件之外, Java 9 模块功能还添加了(更高级别的)文件。(源代码)文件是否可以module-info.java包含 JavaDoc 工具将提取并(有用地)作为模块级文档呈现的标记注释?

0 投票
0 回答
31 浏览

java - 如何使 module-info.java 保持最新

无论如何要找出您的模块需要什么?

在编写了一个基本的微服务之后,需要进行一些修改才能确定我需要添加到我的 module-info.java 中的内容。

这是一个带有硬编码端点的简单应用程序;把它做好似乎相当痛苦,我找不到任何可以给我任何提示的东西需要添加。(我使用这些模块多次运行该应用程序,但会因为缺少某些东西而出错,不清楚缺少什么)

我有更大的微服务需要转换并且可以看到它非常痛苦