【发布时间】:2017-09-22 18:44:17
【问题描述】:
我有两个 JPMS 模块:
- 模块-a
- 模块-b
在 module-a 中我有类似的东西:
public class MyAppplication extends Application {
....
public static void addCss(String path) {
stage.getScene().getStylesheets().add(path);
}
}
在 module-b 中,我有想要添加到 MyApplication 的 CSS 文件。如何在 module-b 的代码中做到这一点?我不明白如何从另一个模块传递路径。
我的意思是在模块-b中:
...
MyApplication.addCss(???);
...
编辑
在 OSGi 中,我在 bundle-b 中使用了以下解决方案(假设 module-a 是 bundle-a,module-b 是 bundle-b):
String pathInBundleB = "com/foo/package-in-bundle-b/file.css"
Bundle bundleB = FrameworkUtil.getBundle(this.getClass()).getBundleContext().getBundle();
URL cssFileUrl = bundleB.getEntry(pathInBundleB);
MyApplication.addCss(cssFileUrl.toString());
【问题讨论】:
-
到目前为止你尝试过什么?更新问题,请不要在没有调试或尝试的情况下简单地发布问题。
-
另外请注明,这怎么和stackoverflow.com/questions/46369101/…不一样?
-
module-b 可以访问自己的资源,因此 module-b 应该有一个公共方法,该方法返回对 Class.getResource 或 Class.getResourceAsStream 的内部调用的结果。
-
@nullpointer 那是完全不同的问题。这个问题是关于 ResourceBunlde 的。正如它发现的那样,为了在另一个模块中使用一个模块的 ResourceBundle,那么第一个模块必须提供一些 JPSM 服务,而第二个模块必须使用该服务。知道了,还是看不到在另一个模块中添加css到应用程序的方法吧?
-
@Alan Bateman 你能给点提示吗?在 OSGi 中,我们可以传递包含包地址的 URI。 JPMS 有类似的吗?
标签: java javafx java-9 java-module javafx-9