Путь JAVAFX_HOME в Ubuntu
Поэтому моя проблема - openjfx и использование его в проекте Scala-sbt. Фактическая проблема - путь JAVAFX_HOME.
Прежде всего, у меня на компьютере установлена java версия 10.0.2, а openjfx (который я использую как JavaFX) находится в репозиториях Ubuntu на основе java 8jre (требуется openjdk-8-jre). Поэтому, когда я устанавливаю его, нужна другая версия Java.
Но все равно после установки openjfx моя сборка sbt не открывает проект и выдает ошибку
java.lang.ExceptionInInitializerError
...
Вызвано: java.util.NoSuchElementException: ключ не найден: JAVAFX_HOME
Я так понимаю, поскольку текущая версия java - 10, а javafx - 8. Однако, когда я пытаюсь сделать
update-alternatives --config java
и выберите версию 8, Java, кажется, не работает вообще. Выходные данные java --version говорят тогда:
Нераспознанная опция: --version
Ошибка: не удалось создать виртуальную машину Java.
Ошибка: произошло фатальное исключение. Программа будет закрыта.
Итак, есть ли способ экспортировать только javafx в.bashrc, подобный этому:
export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"
чтобы заставить работать путь JAVAFX_HOME, или мне нужно как-то переустанавливать java в java 8, чтобы заставить javafx работать правильно?
1 ответ
Итак, у sbt были ошибки, поскольку в файле сборки были ссылки на систему environemnt [system.getenv("JAVA_HOME")) в java, а в sbt это был scala.sys.env("JAVA_HOME") и аналогично JAVAFX_HOME]
Обычно используется системная переменная JAVA_HOME, поэтому она добавляется в linux путем добавления места установки java в файл / etc / environment. Мой был JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64". Не забудьте не использовать CLASSPATH в файле среды, поскольку это мешает запуску файлов Java.
/ И т.д. / окружающая среда:
...
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
JAVAFX_HOME="/usr/share/java/openjfx"
Не забудьте перезагрузить компьютер после установки новых переменных среды.
Также обратите внимание, что альтернативы обновления должны быть сделаны как для java, так и для javac. И
java --version
не работает, так как в Java 8 это просто
java -version
Также в SBT вы можете использовать эту строку, чтобы добавить
unmanagedJars in Compile += Attributed.blank(
file(System.getenv("JAVA_HOME") + "/jre/lib/jfxrt.jar"))
установить текущий файл jfxrt (javaFX), где бы он ни находился (изменить соответствующим образом)