4

我有两个 JPMS 模块:

  • 模块-a
  • 模块-b

在 module-a 我有类似的东西:

public class MyAppplication extends Application {
   ....
   public static void addCss(String path) {
       stage.getScene().getStylesheets().add(path);
   }
}

在 module-b 中,我有想要添加到的 CSS 文件MyApplication。如何在 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());
4

2 回答 2

2

我在@AlanBateman 的帮助下找到了解决方案。

假设,该 css 文件在com/foo/some-package/file.css我在 module-b 中使用以下代码:

package com.foo.some-package;

public class SomeClass {

  public void init() {
      MyApplication.addCss(this.getClass().getResource("base.css").toString());
  }
}

此外,在 module-b 的 module-info 中,我有:

opens com.foo.some-package to module-a;
于 2017-09-26T14:50:22.457 回答
0
package org.apis.style.css;

public class CommonCss {

    public static String getCommonCssStyle(){
       return CommonCss.class.getClassLoader().getResource("common.css").toExternalForm();
    }
}

将此包导出给所有人。

在其他模块中,我添加了这个

getStylesheets().add(CommonCss.getCommonCssStyle());
于 2019-09-04T04:50:05.800 回答