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";
在 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";