如何在模块化 java 应用程序中使用 SynthLookAndFeel?
How to use SynthLookAndFeel in a modular java application?
我正在尝试使用 SynthLookAndFeel
class 但无法在我的模块化应用程序中使用它。
我回到了官方Synth Application sample from the Java Tutorial page on The Synth Look And Feel的基础,并添加了一个包含以下内容的module-info.java
文件:
module SynthApplication {
requires java.desktop;
}
构建正常,但是当 运行 时,控制台显示 NullPointerException
堆栈跟踪指向 java.desktop/sun.awt.SunToolkit.getImageFromHash(SunToolkit.java:653)
,并且仅显示空白 window。
问题似乎出在 L&F 的 buttonSkin.xml
定义中引用的图像(例如 images/button.png
)的分辨率:图像路径被转换为伪包名称( lookandfeel.images
) 未导出到 java.desktop
模块。
我尝试将 exports lookandfeel;
添加到 module-info.java
=> 同样的错误
我试图将 exports lookandfeel.images;
添加到 module-info.java
=> 构建错误 Error:(4, 24) java: package is empty or does not exist: lookandfeel.images
有没有办法使图像分辨率正常工作,或者 SynthLookAndFeel 是否与 java 模块完全不兼容?
谢谢。维克纳
注意:我使用的是 openJdk 14
好的,在 JDK 中挖掘更多代码后,我发现它测试了模块是否为 "open"(又名开放自省)。所以我尝试将模块声明为 "open" 如下:
open module SynthApplication {
requires java.desktop;
}
太棒了。
好的,学到了一些东西:SynthLookAndFeel
必须是开放模块的一部分才能工作。
希望对大家有帮助。
我正在尝试使用 SynthLookAndFeel
class 但无法在我的模块化应用程序中使用它。
我回到了官方Synth Application sample from the Java Tutorial page on The Synth Look And Feel的基础,并添加了一个包含以下内容的module-info.java
文件:
module SynthApplication {
requires java.desktop;
}
构建正常,但是当 运行 时,控制台显示 NullPointerException
堆栈跟踪指向 java.desktop/sun.awt.SunToolkit.getImageFromHash(SunToolkit.java:653)
,并且仅显示空白 window。
问题似乎出在 L&F 的 buttonSkin.xml
定义中引用的图像(例如 images/button.png
)的分辨率:图像路径被转换为伪包名称( lookandfeel.images
) 未导出到 java.desktop
模块。
我尝试将 exports lookandfeel;
添加到 module-info.java
=> 同样的错误
我试图将 exports lookandfeel.images;
添加到 module-info.java
=> 构建错误 Error:(4, 24) java: package is empty or does not exist: lookandfeel.images
有没有办法使图像分辨率正常工作,或者 SynthLookAndFeel 是否与 java 模块完全不兼容?
谢谢。维克纳
注意:我使用的是 openJdk 14
好的,在 JDK 中挖掘更多代码后,我发现它测试了模块是否为 "open"(又名开放自省)。所以我尝试将模块声明为 "open" 如下:
open module SynthApplication {
requires java.desktop;
}
太棒了。
好的,学到了一些东西:SynthLookAndFeel
必须是开放模块的一部分才能工作。
希望对大家有帮助。