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

maven - JHipster Spring Boot 模块化拆分包

我正在尝试模块化 JHipster 5 (Spring Boot 2) 应用程序,但遇到了拆分包问题。

在 module-info.java 我有以下冲突的自动模块:

当我使用 Maven 构建项目时,由于包名冲突,我收到了几个错误,org.zalando.problem如下所示:

我想知道如何解决这个问题。我是否也必须等待第三方库也被模块化?解决这种冲突的好方法是什么?

本文解释了如何解决拆分包问题。我应用它来解决拆分包之间的问题jsr305,并在构建时java.xml.ws.annotation使用--patch-module参数,如此所述。但是,当我对这些包进行相同尝试时,该项目没有编译。

该项目的源代码在GitHub上可用

0 投票
0 回答
668 浏览

java - 带有 Maven 的 Java 自动模块

软件版本:

Apache Maven 3.5.3 Maven 主页:C:\apache-maven-3.5.3 Java 版本:10.0.1,供应商:Oracle Corporation

mvn compile当我在终端中运行命令时,我有 Maven 依赖项,它给了我这个错误:

这个 jar 已经在我的 Maven 存储库中。我知道这些是自动模块,但我不知道如何解决这个问题。我尝试了一些我在网上找到的方法,但没有成功。

0 投票
2 回答
50651 浏览

java - 如何让 Eclipse 在创建新的 Java 项目时停止要求创建模块信息 java 文件?

每次我尝试创建一个新的 java 项目时,Eclipse 都会不断询问我是否要将一个 module-info java 文件添加到源文件夹中。这变得非常烦人,因为没有立即明显的选项可以选择退出此检查。

面向 Java 开发人员的 IDE,Photon 版本 4.8.0

0 投票
1 回答
136 浏览

junit - 如何在 Java <= 8 中强制执行模块边界

我想通过使用 Java 模块(由 Project Jigsaw 引入)来模块化一个单一的应用程序。

不幸的是,我目前坚持使用 Java 8。无论如何我都想构建这些模块(jar 文件),但没有使用 module-info.java 文件来声明依赖项和导出 API 的功能。

几周前,我偶然发现了一个 API/框架,它允许定义几乎与您在 module-info.java 文件中可以做的事情相同的事情。它可以在 JUnit 测试中使用,以强制模块不使用另一个模块的内部,并且该模块只能访问它们显式依赖的模块。

当然,您没有编译器或 IDE 的任何帮助,但您可以强制通过 JUnit 进行访问。不幸的是,我再也找不到提供 API 的项目了。

任何人都可以帮忙吗?

顺便提一句。如果除了单元测试还有其他好的方法,请告诉我!

0 投票
2 回答
10638 浏览

java - 错误:在顶级目录中找到 Main.class(模块中不允许使用未命名的包)

尝试将应用程序更新到 Java 11 并在使用模块进行地狱排序之后,我认为我已经摆脱了所有红色错误,现在我得到了这个我以前从未见过的错误:

在此处输入图像描述

环顾四周,我看到人们建议可以使用应用程序结构:

在此处输入图像描述

或 module-info.java 文件:

在此处输入图像描述

任何人都可以看到我需要做些什么来摆脱这个吗?

编辑:将 Main.java 移动到名为“main”的包并尝试运行它后出错:

在此处输入图像描述

0 投票
1 回答
5499 浏览

java - 将 jlink 与自动模块一起使用

我有一个依赖于自动模块的显式模块化项目;例如在 java.activation 上。仍然可以使用jlink吗?

请参阅此模块信息.java:

那么jlink无法添加模块:

据我了解,自动模块无论如何都会包含整个类路径。所以我想用 jlink 创建运行时映像没有任何好处?

另请参阅:什么是自动模块?

有没有可能规避这个问题?也许为这些依赖项生成一个 module-info.java ?

0 投票
1 回答
2965 浏览

java-11 - 使新的 JDK 11 java.net.http 包在 Netbeans 10 中可见

在 Apache Netbeans 10 中打开现有的 Netbeans 8 项目并将 Java 版本设置为最新的 JDK 11 后,Netbeans 仍然无法解析对新java.net.http包的引用,其中包括改进的 HTTP 处理,如HttpClientHttpRequestHttpResponse.

需要做什么才能使新java.net.http包对 Apache Netbeans 10 中的现有项目可见?

0 投票
2 回答
492 浏览

java - Eclipse m2e 不支持带有 JPMS 模块的 Maven 测试罐

我有一个项目“java11-core”,它生成一个测试 jar 工件以与项目“java11-app”共享。这些项目使用命令行 Maven 构建良好,但在 Eclipse 中,无法找到测试 jar 中共享的类。

版本信息:

  • Apache Maven 3.6.0(命令行和 Eclipse)
  • Java 版本:11.0.1,供应商:甲骨文公司
  • Eclipse IDE:版本:2018-09 (4.9.0)
  • M2E 插件:1.9.1.20180912-1601

我最初将这些项目创建为传统的非 JPMS 项目。这些项目按预期正常编译和运行测试。在我将 module-info.java 添加到 java11-core 和 java11-app 之后,Eclipse 编译器无法识别来自核心项目的共享测试文件。

这是项目结构概述的包资源管理器的快照。

在此处输入图像描述

分别添加了 java11-app 和 java11-core module-info 内容:

如您所见,我没有从 com.java11.core 导出测试实用程序包。我不想导出测试包,因为这会使测试类公开可用。我也不希望引入一个新的测试项目,因为在现实世界的场景中,这很可能需要测试实用程序和它们协助测试的项目之间的循环依赖关系。

在此处输入图像描述

AppTest.java 中的构建错误。Eclipse 报告的失败很有趣,它并没有声称找不到 CoreTestUtil 类,而是:

我的假设是缺少从 java11-core 导出此包和/或在 java11-app 中缺少此包的要求使 eclipse 认为访问受到限制,即使这些类存在于单独的 test-jar 中.

java11-app 的模块路径显示它包含 java11-core 作为模块,并且无测试代码设置为No

在此处输入图像描述

我知道我正在使用新发布的功能,并且怀疑跨 Eclipse JPMS 项目共享测试类尚不支持。但是,我不确定在哪里寻找支持的更新(Eclipse?M2E 插件)。我也不知道有一种变通方法可以让我在为我的软件项目采用 JPMS 时提高工作效率。

对于那些认为不应以这种方式共享测试实用程序的人...

这个主题被描述为一个最佳实践问题,应该通过将测试实用程序重构到一个单独的模块中来解决。我尊重这种观点,但在尝试遵循该指导时,我发现自己被迫违反其他最佳实践,包括 DRY(不要重复自己)和包之间的循环依赖关系。

在开发一个既有助于对该模块进行有效测试又依赖于该模块的模块时,通常会出现一个测试实用程序。如果这些实用程序被拉出到单独的模块,这将创建一个循环。此外,在测试依赖于该模块的其他模块时,其中一些实用程序同样有用。如果将这些实用程序复制到依赖项的新测试模块,则会创建重复代码。这个推理可能是最初添加 Maven 'test-jar' 支持的原因。

0 投票
0 回答
852 浏览

java - Java 11 模块 + 焊接

我使用 Weld 3.0.5 创建了一个简单的 Java 11 SE maven 项目。

一切都很好,但是当我添加到我的项目 module-info.java 文件时,焊接停止工作。

例外:

线程“主”org.jboss.weld.exceptions.WeldException 中的异常:
WELD-001524:无法使用类接口 javax.enterprise 加载带有限定符 [@Default] 的 bean Implicit Bean [javax.enterprise.inject.Instance] 的代理类.inject.Instance 使用类加载器 jdk.internal.loader.ClassLoaders$AppClassLoader@2ed94a8b

java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

0 投票
1 回答
86 浏览

javafx - 更改 JavaFX 选项卡顺序时出现 NullPointerException

我从https://berry120.blogspot.com/2014/01/draggable-and-detachable-tabs-in-javafx.html下载并尝试了 Michael Berry 编写的 javafx 示例“JavaFX 2 中的可拖动和可拆卸选项卡”

它在 Java 8 中工作得很好,但在 Java 11 和拼图模块中尝试它时它就坏了。问题是,有时当我更改选项卡的顺序时,我得到一个 NullPointerException,即使在堆栈跟踪中也没有 fxtabs 类。

这是我的模块信息:

这是堆栈跟踪:

顺便提一句。用 try/catch 包围代码也无济于事。