Java FX CSS @导入路径问题

Java FX CSS @import path issue

Java8_31 中,我在 main.css 中导入了不同的 CSS 文件:

@import "style/common/test1.css";
@import "style/common/test2.css";

所有文件都在包 style/common 中,效果很好。

现在构建 Java8_40 我做了同样的事情,但我收到以下错误消息:

Could not find stylesheet: file:/mypath/../style/common/style/common/test2.css com.sun.javafx.css.parser.CSSParser handleImport

CSS 文件 test1.css 中我的所有样式都有效。我很好奇的是我的路径 style/common 出现了两次。

所以我尝试将导入更改为以下内容:

@import "style/common/test1.css";
@import "test2.css";

通过这些导入,文件 test1 和文件 test2 的两种样式都可以使用。但是这两个文件仍然在同一个包中。

这里发生了什么?是否存在关于 @import 的已知问题并且可能是 CSSParser 中的问题?

这实际上是一个已知问题:

https://javafx-jira.kenai.com/browse/RT-40346

有可用的临时修复程序,应该会在下一个版本中修复该问题 Java8_u60。

可以在 CSSParser class 中进行临时修复。 Link 到 git 差异:

http://hg.openjdk.java.net/openjfx/8u-dev/rt/rev/839912277bf0

如果您不想尝试修复或等待 u60,只需将所有 css 文件添加到同一文件夹并像那样导入即可(临时解决方案! ):

@import "css/test1.css";
@import "test2.css";
@import "test3.css";
@import "testX.css";

只是参与讨论(不是直接回答你的问题): 您不必显式设置完整的 .css 文件路径。您只需指定 .css 文件夹和文件名:

原路径:

@import "css/nodes/path/CssFile.css";

没有指定文件夹的完整路径:

@import "../../path/CssFile.css";

两者的工作原理相同。请注意,在第二个示例中,“../”指的是路径级别,而不是具体的文件夹名称。

所以在你的情况下,那就是

@import "../common/test1.css";