问题标签 [java-platform-module-system]

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 投票
4 回答
13483 浏览

java - 如何在 Maven 中表达对 java ee 特性的依赖以过渡到 Java 9?

我们使用maven并拥有依赖于其他内部工件的工件。我正在迁移到,并打算首先将所有内容迁移到 Java 9 而不模块化代码(即在未命名的模块中)。

我遇到的问题是我们依赖于java.xml.bind,它现在不包含在默认模块中。是否有一种“正确”的方式来表达对java.xml.bindMaven 的这种依赖?

0 投票
2 回答
3541 浏览

java - Java 9 中创建了多少个未命名的模块?

我试图了解 JPMS 是如何工作的。

这里

类路径还没有完全消失。类路径上的所有 JAR(模块化或非模块化)和类都将包含在未命名模块中。与自动模块类似,它导出所有包并读取所有其他模块。但它显然没有名字。因此,命名的应用程序模块不能要求和读取它。未命名的模块反过来可以访问所有其他模块。

请注意...on the classpath will be contained in the Unnamed Module。模块是单数的。

这里

为了兼容性,类路径上的所有代码都打包为一个特殊的未命名模块,没有隐藏的包和对整个 JDK 的完全访问权限。

再次unnamed module。模块是单数的。

我是否理解在 JPMS 中总是只有一个未命名的模块?这是否意味着在 Java9 之前开发且未针对 Java9 更新的应用程序将作为一个未命名的模块加载?

0 投票
2 回答
21396 浏览

java - 是否可以在 javac(JDK 9)中混合 --class-path 和 --module-path ?

当我编译一个依赖于我之前编译过的其他模块的模块时,我必须指定该--module-path <directory>选项。这使得我依赖的模块可见。

但同时我也想让一些非模块化的 Jar 文件可见。但是,如果不使它们成为自动模块并仅指定--class-path some.jar旁边的右侧--module-path <directory>,那么javac似乎会忽略 claspath 并抛出“未找到包 yyy”和其他“未找到”错误。

我可以理解在同一(编译)时间使用--class-pathand是非法的,但javac不会以任何方式警告我。--module-path

0 投票
2 回答
259 浏览

java - ResolvedModule、Module 和 Observable Module 有什么区别

这些状态中的每一个的文档如下:

ResolvedModule

已解析模块图中的模块。ResolvedModule定义了配置方法来获取已解析模块所在的配置。它定义了引用方法来获取对模块内容的引用。

Module

表示运行时模块,命名或未命名

问:- 这两者何时不同,是在编译和运行时,还是只是模块的不同表示?

另一方面,模块路径定义

编译时或运行时环境中内置的模块,以及由模块路径上的工件定义的模块,统称为可观察模块的宇宙。

问:- 所有这些都相关吗?有人可以举例说明如何以及在什么时间解释这个概念吗?

0 投票
1 回答
355 浏览

java - Java 9u181 javac:找不到模块目录

我正在尝试编译一个简单的模块,但是,我不断得到这个:

我正在使用一个 Oracle Java 9u181 docker 镜像,我将它放在一起用于试用 Java 9,adenix/java:9u181

项目结构

模块信息.java

主.java


更新 1

这是我的 Dockerfile,概述了我安装 Java 9u181 所采取的步骤

Dockerfile

0 投票
0 回答
417 浏览

java - Java 9 Jigsaw 将如何影响普通的 Maven/Gradle Java 应用程序?

我已经阅读并完成了Jigsaw 快速入门中的所有练习

我还注意到,我所有现有的 Maven/Gradle/SBT Java 项目似乎在 Java 9 下都可以正常工作,没有任何更改或好处。没有定义或使用 Java Jigsaw 模块。

Maven/Gradle/SBT 的普通 Java/JVM 世界是否会以更明显的方式采用 Jigsaw?JVM 世界的所有库和框架都将使用 Jigsaw 吗?今天存在的 Maven 依赖系统有什么理由或好处吗?普通 Java 开发人员使用 Jigsaw 有什么意义或好处吗?

编辑:我用这些搜索词阅读了几个 StackOverflow 问题,但没有一个解决了我的问题。链接的 StackOverflow 问题来自一年多以前,关于 Maven 3.3 对 JDK 9 早期版本的错误。这完全无关紧要。我没有收到错误。此外,Maven 3.5 和最终的 JDK 9 在本文发布时已经发布。

0 投票
2 回答
2457 浏览

java - 如何为其名称中包含“-”(连字符)的工件添加“要求”

我在我的 Maven pom.xml 中包含了这些依赖项:

我正在尝试在 module-info.java 中添加此依赖项,如下所示:

对于 commons-io,我收到编译错误。我怎样才能使这项工作?

0 投票
3 回答
2553 浏览

java - JDK 9 + Mac OS + jlink?

我在 Mac OS 上安装了 JDK 9 的发行版。

jshell 很好用,Jigsaw 模块支持很好用,但是没有 jlink:

这是空的:

供参考:

0 投票
1 回答
7321 浏览

java - 如何运行 JDK 9 jlink 生成的图像?

我在这里遵循 Jigsaw快速入门。我成功运行了jlink给定的命令:

这会产生一个“运行时映像”,它是一个展开的目录结构,如下所示:

我该如何运行?我期待一个二进制可执行文件,而不是一个分解的目录树。

bin目录有一个java和一个keytool。我没有看到任何 .jar 文件或 .class 文件可以通过捆绑的java可执行文件运行。

0 投票
3 回答
4408 浏览

java - Java 9 模块和 JUnit 4

日食氧气;Windows 7的; JDK 9 final 从 9、21;JUnit 4.12 和现有应用程序。作为起点,可以编译、执行应用程序,并且所有 JUnit 测试都显示为绿色。现在我们使用eclipse生成文件module-info.java。结果如下所示:

但出现错误:junit 无法解析为模块。问题是:如何告诉文件junit没有定义任何模块,它应该在兼容模式下运行?