问题标签 [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 投票
1 回答
4039 浏览

java - 如何解决 JDK9 中的 java.lang.module.ResolutionException

我正在使用 Jigsaw build 构建 JDK9 的 109 版本

我正在尝试一个 hello-world 类型的示例,只是为了开始使用 JDK9 模块化开发。当我启动应用程序时,我得到以下信息RuntimeException(我也提供了 java 启动器命令):

如您所见,我已将 设置-modulepath为引用包含用户定义模块的目录。

我应该针对什么进行调试。

0 投票
1 回答
408 浏览

java - 在 jdk 9 中打包为 jar 时出现没有 module-info.class 错误的 --module-version 或 --hash-dependencies 之一

我正在探索Project Jigsaw @ JDK 9,几乎所有 Java 开发人员都在考虑 Oracle 如何为 Java 9 带来模块化。

我创建了一个示例 java 项目,代码编译没有任何错误。

下面是生成的字节码文件及其结构

我尝试为上述类文件创建 jar 文件,如下所述。

没有 module-info.class 的 --module-version 或 --hash-dependencies 之一

如果有人为此错误提供最佳解决方案,我们将不胜感激。

0 投票
2 回答
2445 浏览

java - 如何修补集成了 Jigsaw 的 OpenJDK 9?

在 Jigsaw 之前,在 OpenJDK 中替换一个或多个类非常容易(执行一些测试或做出贡献)。我可以从 OpenJDK 源中复制一个原始文件,例如,复制java/util/ArrayList.javasrc/java/util/中,添加我想要的任何更改,然后正常编译它(输出到mypatch目录):

之后,我可以启动 JVM来用打补丁-Xbootclasspath/p的替换原来的:ArrayList

然而,自从 Java 9-ea+111 中的 Jigsaw 集成以来,这不再起作用。编译命令报告大量错误,如下所示:

即使我使用旧版 JDK 编译,JVM 也无法启动:

如何使用 Jigsaw 为 JDK 打补丁?

0 投票
5 回答
8309 浏览

java - Java 9 中的新关键字

Java 9 最大的特性之一将是由 Project Jigsaw 定义的模块系统。在阅读Project Jigsaw: Under the Hood at JavaOne 2015 的幻灯片时,我注意到以下源代码:

对我来说有趣的是该文件以.java并且似乎使用了两个新关键字结尾:moduleexports. Java 9 中还会引入哪些其他关键字?如何处理向后兼容性(即名为 的函数或变量module)?

0 投票
1 回答
547 浏览

java - 是否可以使用 Jigsaw 在 Java 9 中通过反射来访问包范围内的方法?

我有以下代码URLStreamHandlers通过访问静态包作用域方法来检索在 Java 8 中工作的 http 和 https的默认值URL.getURLStreamHandler()

这在 Java 9 中是否仍然可以使用jigsaw或禁止以这种方式修改可见性?

0 投票
2 回答
4100 浏览

java-9 - 如何使用 JLink 命令为 JDK9 应用程序创建跨平台可执行文件

我正在尝试为我的 JAVA-9 应用程序/项目拼图创建跨平台/平台独立的可执行文件。

我认为 jlink 命令只会创建特定于平台的可执行文件/运行时。

0 投票
1 回答
4746 浏览

java - 使用JDK9在Eclipse Neon中构建JavaFX程序

我有最新的 Eclipse Neon 里程碑版本以及 e(fx)clipse 插件和安装的附加 JDK9 支持,现在想用 JDK9 构建第一个 JavaFX 程序。不幸的是,所有 JavaFX 模块都不在类路径上。谁能告诉我如何添加这些模块,以便我可以使用此配置构建 JavaFX 程序?

0 投票
1 回答
6060 浏览

annotations - Java 9 的 JSR-305 注释替换

到目前为止,我们一直在使用 Findbugs JSR-305 注释(com.google.code.findbugs:jsr305),包括工具支持(Sonar、Eclipse、Findbugs……)在内的一切都运行良好。

然而,我们的理解是 Java 9 中的 Jigsaw 将破坏 JSR-305 注释(两个模块中的一个包是不允许的)。这在 JavaOne 2015 上得到了证实。Oracle 的理由是 JSR-305 从未发生过,JSR-250 将不得不认可这些注释。

我们正在寻找适用于 Java 8 和 Java 9 的 JSR-305 注释的替代品。如果历史可以作为指导,Java 9 GA 和 Java 8 EOL 之间的时间将相当短,我们希望修复我们的任何不兼容问题提前打码。理论上我们可以升级 JDK 的注解模块,但是在我们的工具链中这样做似乎需要做很多工作。

0 投票
1 回答
4305 浏览

java - 使用 Java 9 将自定义 JMOD 添加到模块路径

我用这样的 jmod 工具创建了一个简单的JMOD文件

接下来,我尝试通过运行在该模块中执行一个类:

这导致了以下异常:

如果我只是将我的classes目录(我用来创建 JMOD 文件的目录)设置为模块路径,那么一切都会按预期工作。

模块路径上通常不可能有JMOD文件吗?如果是这样的话,有什么理由吗?

0 投票
1 回答
8369 浏览

java - 是否可以在 Java 9 模块中使用没有 module-info.class 的依赖项

我创建了两个小项目de.app1de.app2,其中Appde.app1使用de.app2Test

第一个项目中的module-info.java只包含module de.app1 {}

我编译了第二个项目并创建了一个 jar 文件:

然后尝试像这样编译第一个项目:

由于Test找不到而失败。当我在没有module-info.java的情况下编译项目时,一切都照常工作。

是否可以在 Java 9 模块使用不是 Java 9 模块的 jar 中的类?特别是对于依赖于 3rd-party 项目的项目(例如 apache-commons,...),我认为需要这样的东西。