java.io.IOException: rsrc:application/application.bss неправильная двоичная версия CSS: 5. Ожидаемая версия меньше или равна 3

Я создал образец приложения с использованием javafx. Из-за определенных ограничений в моей сети я не могу установить инструменты fxpackaging, такие как e(fx)clipse и т. д.

Я создал jar, используя приложение eclipse (версия 4.5.1), которое отлично работает, когда я запускаю файл jar, используя команду ниже в cmd

java -jar myjarfile.jar

Проблема 1: (решена)

Я наблюдал это исключение в «командной строке»

java.net.MalformedURLException: Coult not open InputStream for URL 
'rsrc:application/application.bss'

Я создал файлы bss, используя команду ниже (выполняется на корневом уровне проекта)

javafxpackager -createbss -srcfiles application.css -outdir .

Затем скопируйте выходной файл bss в нужное место (программа за исключением ресурса, расположенного в определенной папке).

Проблема 2: (не решена)

Первоначальное исключение было разрешено, и я мог видеть, что шрифты отображаются, как и ожидалось. Но на заднем плане я мог видеть исключение ниже

java.io.IOException: rsrc:application/application.bss неправильная двоичная версия CSS: 5. Ожидаемая версия меньше или равна 3

Вопрос:

Как исправить это исключение «неправильная двоичная версия CSS» (отображается в командной строке)? Обратите внимание, я не вижу никаких проблем с приложением, которое работает на переднем плане.

В целях тестирования я использовал код стиля с одним вкладышем в моем файле application.css.

.label{-fx-text-fill: black;}

→ файл jar, созданный с использованием eclipse (JDK 1.7), и окна работают на JRE 1.7.0_91

файл css: один вкладыш, как указано выше.

CSS-файл

файл bss файл bss

структура пакета

пакет


person Raju    schedule 21.02.2016    source источник
comment
Не могли бы вы опубликовать свои версии JDK: ту, которая использовалась для создания проекта, и файл bss, и ту, с которой вы запускаете свой проект (java -version)?   -  person José Pereda    schedule 14.03.2016
comment
@JoséPeda, Jar-файл, созданный с использованием eclipse (с jdk 1.7), и application.bss, созданный с использованием Windows JRE версии 1.7.0_91   -  person Raju    schedule 15.03.2016
comment
Можем ли мы увидеть файл bss, который вызывает это исключение?   -  person Abob    schedule 15.03.2016
comment
@ Abob78, я прикрепил изображения к своему вопросу. В целях тестирования я поместил в свой файл *.css только метку.   -  person Raju    schedule 15.03.2016
comment
У вас установлен JDK8? Убедитесь, что вы не используете его.   -  person José Pereda    schedule 15.03.2016
comment
Ваш синтаксис в порядке, поэтому проблема должна заключаться в том, как был скомпилирован файл css. Вы сказали, что не можете ничего установить, но не могли бы вы обновить eclipse с помощью пакетов javafx, добавив репо (не требует прав администратора)?   -  person Abob    schedule 15.03.2016
comment
@JoséPeda, я установил JDK1.8 на свой рабочий стол, но я выбрал jdk1.7 в eclipse, я настроил переменную PATH Windows на JRE 1.7   -  person Raju    schedule 15.03.2016
comment
@Abob78, наша корпоративная сеть ограничивает прямой доступ в Интернет. Я не могу добавлять какие-либо плагины помимо предоставленного нам программного обеспечения.   -  person Raju    schedule 15.03.2016
comment
@ Раджу хорошо, все в порядке. Чтобы уточнить, есть ли в банке каждый связанный класс файлов и файл css? И application.bss, и application.class находятся в одном и том же месте внутри вашей банки? Или вы используете fxml для всего? В общем, как выглядит ваша банка внутри?   -  person Abob    schedule 15.03.2016
comment
@Abob78, в моей банке есть все необходимые файлы   -  person Raju    schedule 15.03.2016
comment
@ Abob78, @JoséPeda Я опубликовал свое наблюдение в ответе. Это не полное решение, так как утилита должна работать в JRE 1.7 и выше. Можете ли вы проверить, если вы можете помочь мне с этим наблюдением.   -  person Raju    schedule 15.03.2016


Ответы (2)


Как заявил Хосе Переда, bss — это версия 5 на Java 8. На основе Справочное руководство по CSS для JavaFX 8 для метки синтаксис правильный. Однако это для Java 8, в то время как вы в настоящее время используете Java 7. Если у вас есть Java 8, настройте eclipse и установите путь сборки для его использования, а также установите переменную PATH в соответствии с Java 8.

Если проблема не устранена:

Если он не работает даже после обновления, мы попробуем скомпилировать его немного по-другому, чтобы посмотреть, что произойдет. Согласно этой публикации, вам не нужен файл .css после того, как вы скомпилировали файл .bss.

Создайте папку Test в легкодоступном месте. Мы будем использовать это, чтобы увидеть, как файлы, скомпилированные отдельно, повлияют на исключение, поскольку обновление Java на данный момент ничего не дало.

Сначала попробуйте запустить программу с необходимыми файлами. Если ваш файл Main.java не зависит от других файлов Java в вашем проекте, скопируйте этот файл в папку test, которую мы недавно создали. Если нет, скопируйте только необходимые части, которые используют css (например, сцену и метку, вызывающую css file), и вставьте их в новый Main.java в новой папке test.

Далее вам нужно будет открыть командное окно в тестовой папке. Вы можете сделать это, нажав SHIFT + ПРАВЫЙ ЩЕЛЧОК в папке test в проводнике Windows и нажав Open command window here

После этого скомпилируйте Main.java, введя это в открывшемся окне командной строки:

javac Main.java

Затем скопируйте appication.css, но переименуйте его в Main.css для тестирования. Затем запустите это в окне командной строки (у вас не было аргумента -outfile; это не имеет значения, но это небольшая мера безопасности):

javafxpackager -createbss -srcfiles Main.css -outdir . -outfile Main

Теперь вы должны увидеть, что у вас есть Main.css. Теперь с помощью того же командного окна вы можете легко запустить файл и посмотреть, что произойдет.

java Main

Пожалуйста, оставьте комментарий, если это поможет вам, и какую часть этого ответа вы действительно использовали для решения проблемы, если этот ответ помог вам, спасибо!

person Abob    schedule 15.03.2016
comment
Я хотел бы решить свою проблему, прежде чем закончить формальности этого вопроса;) Я установил JDK 1.7.0_76, к сожалению, он не создает никаких файлов bss. Даже ошибок не показывает. Я попробую с JDK 1.7.0_79 и дам вам знать, что я нашел. - person Raju; 16.03.2016
comment
тест с jdk 1.7.0_95, javafxpackager не выдает никаких ошибок и вообще не создает никаких файлов :( - person Raju; 19.03.2016
comment
упаковщик не работает, кажется. ссылка на скриншот - person Raju; 19.03.2016
comment
Похоже, в javafxpackager есть ошибка, но причина найдена, поэтому я награждаю. Спасибо @Abob78 - person Raju; 19.03.2016

Основываясь на комментариях Хосе Переды, Abob78, я провел эксперимент. Я понял, что проблема не наблюдается, если я использую JRE 1.8.

  1. Командная строка 1: указана JRE 1.7.0_91 → наблюдается указанное выше исключение
  2. Командная строка 2: указано JRE 1.8.0_40 → исключение не наблюдается.

Оба работают одновременно и используют один и тот же файл JAR.

person Raju    schedule 15.03.2016
comment
Bss level 5 взят из JDK8, поэтому у вас не возникает проблем с запуском JDK8. Остается вопрос: откуда вы запускаете javafxpackager? - person José Pereda; 15.03.2016
comment
@JoséPeda, это хороший улов. Я думаю, что это основная причина проблемы. Хотя JRE указывает на каталог 1.7, когда я запускаю where javafxpackager.exe, он указывает на каталог JDK 1.8. - person Raju; 15.03.2016
comment
Убедитесь, что вы запустили его из дистрибутива JDK7, и проверьте еще раз, если он работает, я напишу правильный ответ - person José Pereda; 15.03.2016
comment
@JoséPeda, эти версии Java доступны в моей системе jdk1.6.0_31,jdk1.6.0_39,jdk1.7.0_25,jdk1.8.0_40,jdk1.8.0_51,jre7. К сожалению, javafxpackager.exe доступен только в jdk1.8 (2 каталога). Эта утилита должна работать в JRE1.7 и выше. Это возможно ? - person Raju; 15.03.2016
comment
JDK 1.7.0_65 до последней версии 1.7.0_79 имеют javafxpackager. Возможно, вам потребуется обновить версию JDK7. - person José Pereda; 15.03.2016
comment
@Raju Рад слышать, что это просто версия Java! В качестве примечания: 1.8.0_74 — это последняя версия Java на момент написания этого комментария. Я предлагаю обновиться, но если вы не можете хотя бы удалить JDK 1.7 с компьютера, чтобы он не мешал. Это также позволит вам увидеть, что нужно перенастроить, так как выдаст вам ошибки, если вы что-то пропустили. - person Abob; 15.03.2016
comment
@ Abob78, эта утилита должна работать в нескольких версиях Java. Итак, я поддерживаю все версии, чтобы протестировать утилиту во всех версиях Java. - person Raju; 15.03.2016
comment
Согласно этому, javafxpackager доступен только на java 8 и, возможно, может быть назван javapackager. Ниже Java 8 вам придется использовать нативные пакеты. - person Abob; 15.03.2016