Java FX CSS @ проблема с путём импорта

В Java8_31 Я импортировал разные CSS такие файлы в моем main.css:

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

Все файлы были в пакете style/common и это сработало отлично.

Теперь со сборкой Java8_40 Я сделал то же самое, но я получаю следующее сообщение об ошибке:

Не удалось найти таблицу стилей: файл:/mypath/../style/common/style/common/test2.css com.sun.javafx.css.parser.CSSParser handleImport

Все мои стили от CSS файл test1.css работают. Что мне было любопытно, так это то, что мой стиль пути / общее проявляется два раза.

Поэтому я попытался изменить свой импорт следующим образом:

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

С этим импортом оба стиля файла test1 и файл test2 работают. Но оба файла все еще находятся в одном пакете.

Что тут происходит? Есть ли известная проблема с @import и, возможно, проблема в CSSParser?

2 ответа

Решение

На самом деле это известная проблема:

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

Доступно временное исправление, и проблема должна быть исправлена ​​в следующей сборке Java8_u60.

Временное исправление может быть сделано в CSSParser учебный класс. Ссылка на git diff:

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";
Другие вопросы по тегам