问题标签 [java-module]
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 - 如何从 Java 9 中的另一个模块获取 ResourceBundle?
我有两个模块:module-a 和 module-b。模块-a 具有属性文件 ( com/foo/texts_en.properties
)。模块 - 一个导出com.foo
包。在 module-b 中,我想获取此资源。为此,我在 module-b 中执行以下操作:
这就是我得到的:
我的错误是什么?
java - 如何从 Java 9 中的另一个模块添加到 JavaFX 场景样式表?
我有两个 JPMS 模块:
- 模块-a
- 模块-b
在 module-a 我有类似的东西:
在 module-b 中,我有想要添加到的 CSS 文件MyApplication
。如何在 module-b 的代码中做到这一点?我不明白如何从另一个模块传递路径。
我的意思是在模块 b 中:
编辑
在 OSGi 中,我使用了以下解决方案bundle-b
(假设 module-a 是 bundle-a,module-b 是 bundle-b):
java - 如何为其名称中包含“-”(连字符)的工件添加“要求”
我在我的 Maven pom.xml 中包含了这些依赖项:
我正在尝试在 module-info.java 中添加此依赖项,如下所示:
对于 commons-io,我收到编译错误。我怎样才能使这项工作?
java - 是否可以在 Java 9 中为子层中的模块隐藏父层中的模块?
让我们考虑以下情况。我有两层:
- 引导层
- 我的自定义层
引导层是 mycustom 层的父级。除了我有三个模块:
- 模组.a
- 模组.b
- 模组
在 mod.a 的模块信息中,我有
在 mod.c 的模块信息中,我有
在引导层我有 mod.a 和 mod.b。在 mycustom 层中,我有 mod.b 和 mod.c(出于某些原因,我希望在该层中有 mod.b)。但是,我得到以下异常:
java.lang.module.ResolutionException: mod.c 读取多个名为 mod.b 的模块。
是否可以在 mycustom 层中的模块的引导层中“隐藏”mod.b?如果是,那么如何?
这是我创建自定义层的方式:
java - 如何提取文件 jre-9/lib/modules?
在JRE-9/lib
目录中(至少在 Windows 上),有一个名为的新文件modules
,其大小约为 107 MB。是否可以提取该文件或在其中列出 java 模块?
我可以看到一个名为jmod
at 的新工具可用jdk-9/bin/jmod.exe
,但它用于读取.jmod
位于 at 的文件jdk-9/jmods
,它无法读取该文件modules
。
java - 带有 Jaxb 和 JDK 9 的小程序中的非法反射访问
我有一个 Java 小程序,它提供了一个 GUI 来调用 Web 服务。它使用 Jaxb 解析 XML 数据并将其解组为对象。它可以在 Java 1.5 到 1.8 中正确运行。使用 Java 9,就没有那么多了。
我使用容器 HTML 在 Internet Explorer 8 + JDK 9 中启动它:
小程序加载正常并且似乎可以工作;但是,一旦我连接到 Web 服务,它就会停止工作。我已将其缩小到此代码片段(其中Foo是带有 XML 绑定注释的自动生成的类):
Java 的控制台显示1
,然后......什么都没有:它不会崩溃,小程序仍然响应鼠标点击,它不会抛出任何异常......似乎根本没有错误。除了它不对接收到的数据做任何事情,而且它从不输出2
. 我尝试过替代JAXBContext.newInstance
方法(使用包名,使用包名加上类加载器),但它们都做同样的事情。
如果我使用相同的 JDK 9 从 Eclipse Oxygen 运行项目,它确实可以工作。当我连接到 Web 服务时,它会输出一些警告,包括:
但随后它继续加载数据(并将数据输出2
到控制台)。我的猜测是同样的问题,即使 Java 控制台中没有显示警告。也许JDK默认为--illegal-access=deny
从IE运行时?或者“默默地拒绝用户不知道发生了什么” ......
有什么方法可以将--illegal-access=permit
选项传递给 JVM?(请记住,我没有直接调用 JVM,我只有一个<applet>
html 标签)
有没有其他方法可以让它工作?也许在我的小程序清单文件中添加一些额外的东西?(顺便说一下,看起来像这样):
这些是我最初使用的 Jaxb 依赖项:
- javax.xml.bind:jaxb-api:2.0
- com.sun.xml.bind:jaxb-impl:2.0
- com.sun.xml.bind:jaxb-xjc:2.0
我尝试将它们从 v2.0 更新到 v2.3.0,它们应该与 Java 9 兼容:
- javax.xml.bind:jaxb-api:2.3.0
- com.sun.xml.bind:jaxb-impl:2.3.0
- com.sun.xml.bind:jaxb-core:2.3.0
- com.sun.xml.bind:jaxb-xjc:2.3.0
但问题仍然存在。在nullpointer 的回答之后也尝试了这些,也没有运气:
- javax.xml.bind:jaxb-api:2.1
- javax.xml:jaxb-impl:2.1
- 删除了 jaxb-xjc,显然不需要...
java - 什么是 Java 9 中的开放模块以及如何使用它?
前面有关键字和没有关键字的模块有什么区别open
?例如:
java - Java 9 中的类加载器层次结构
从 Java 8 开始,我知道类加载器的层次结构如下:
引导类加载器 → 扩展类加载器 → 应用程序类加载器
Java 9 中类加载器的层次结构发生了哪些变化,它是如何工作的?
java - Java 9 模块的目录布局
我一直在尝试编写 Java 9 模块,但无论我做什么,我都会收到错误“包为空或不存在”。我已经尝试在线搜索预期的目录布局,并尝试了我能想到的目录布局的所有变体,但没有任何效果。
例如,这是我尝试过的一种布局
bar.foo/module-info.java
bar.foo/bar/foo/wtf.java
但是,编译仍然像往常一样给出相同的错误。