Путь 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), где бы он ни находился (изменить соответствующим образом)

Другие вопросы по тегам