问题标签 [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.
java - 如何解决 JDK9 中的 java.lang.module.ResolutionException
我正在使用 Jigsaw build 构建 JDK9 的 109 版本。
我正在尝试一个 hello-world 类型的示例,只是为了开始使用 JDK9 模块化开发。当我启动应用程序时,我得到以下信息RuntimeException
(我也提供了 java 启动器命令):
如您所见,我已将 设置-modulepath
为引用包含用户定义模块的目录。
我应该针对什么进行调试。
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 之一
如果有人为此错误提供最佳解决方案,我们将不胜感激。
java - 如何修补集成了 Jigsaw 的 OpenJDK 9?
在 Jigsaw 之前,在 OpenJDK 中替换一个或多个类非常容易(执行一些测试或做出贡献)。我可以从 OpenJDK 源中复制一个原始文件,例如,复制java/util/ArrayList.java
到src/java/util/
中,添加我想要的任何更改,然后正常编译它(输出到mypatch
目录):
之后,我可以启动 JVM来用打补丁-Xbootclasspath/p
的替换原来的:ArrayList
然而,自从 Java 9-ea+111 中的 Jigsaw 集成以来,这不再起作用。编译命令报告大量错误,如下所示:
即使我使用旧版 JDK 编译,JVM 也无法启动:
如何使用 Jigsaw 为 JDK 打补丁?
java - Java 9 中的新关键字
Java 9 最大的特性之一将是由 Project Jigsaw 定义的模块系统。在阅读Project Jigsaw: Under the Hood at JavaOne 2015 的幻灯片时,我注意到以下源代码:
对我来说有趣的是该文件以.java
并且似乎使用了两个新关键字结尾:module
和exports
. Java 9 中还会引入哪些其他关键字?如何处理向后兼容性(即名为 的函数或变量module
)?
java - 是否可以使用 Jigsaw 在 Java 9 中通过反射来访问包范围内的方法?
我有以下代码URLStreamHandlers
通过访问静态包作用域方法来检索在 Java 8 中工作的 http 和 https的默认值URL.getURLStreamHandler()
:
这在 Java 9 中是否仍然可以使用jigsaw或禁止以这种方式修改可见性?
java-9 - 如何使用 JLink 命令为 JDK9 应用程序创建跨平台可执行文件
我正在尝试为我的 JAVA-9 应用程序/项目拼图创建跨平台/平台独立的可执行文件。
我认为 jlink 命令只会创建特定于平台的可执行文件/运行时。
java - 使用JDK9在Eclipse Neon中构建JavaFX程序
我有最新的 Eclipse Neon 里程碑版本以及 e(fx)clipse 插件和安装的附加 JDK9 支持,现在想用 JDK9 构建第一个 JavaFX 程序。不幸的是,所有 JavaFX 模块都不在类路径上。谁能告诉我如何添加这些模块,以便我可以使用此配置构建 JavaFX 程序?
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 的注解模块,但是在我们的工具链中这样做似乎需要做很多工作。
java - 使用 Java 9 将自定义 JMOD 添加到模块路径
我用这样的 jmod 工具创建了一个简单的JMOD
文件
接下来,我尝试通过运行在该模块中执行一个类:
这导致了以下异常:
如果我只是将我的classes
目录(我用来创建 JMOD 文件的目录)设置为模块路径,那么一切都会按预期工作。
模块路径上通常不可能有JMOD
文件吗?如果是这样的话,有什么理由吗?
java - 是否可以在 Java 9 模块中使用没有 module-info.class 的依赖项
我创建了两个小项目de.app1和de.app2,其中App
de.app1使用de.app2Test
。
第一个项目中的module-info.java只包含module de.app1 {}
我编译了第二个项目并创建了一个 jar 文件:
然后尝试像这样编译第一个项目:
由于Test
找不到而失败。当我在没有module-info.java的情况下编译项目时,一切都照常工作。
是否可以在 Java 9 模块中使用不是 Java 9 模块的 jar 中的类?特别是对于依赖于 3rd-party 项目的项目(例如 apache-commons,...),我认为需要这样的东西。