Почему я получаю LinkageError, когда кажется, что доступна только одна версия Java? - PullRequest
0 голосов
/ 31 октября 2018

Это моя среда Java:

~: java -version
    java version "11.0.1" 2018-10-16 LTS
    Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
    Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

Но при попытке выполнить программу после ее компиляции я получаю следующую ошибку:

Error: LinkageError occurred while loading main class ClassName
    java.lang.UnsupportedClassVersionError: ClassName has been 
    compiled by a more recent version of the Java Runtime 
    (class file version 55.0), this version of the Java Runtime 
    only recognizes class file versions up to 54.0

Мои переменные PATH и JAVA_HOME указывают на эту версию Java. я загрузили другие версии, но, похоже, они не зарегистрированы в системе:

update-alternatives --display java
java - auto mode
  link best version is /usr/lib/jvm/java-11-openjdk-amd64/bin/java
  link currently points to /usr/lib/jvm/java-11-openjdk-amd64/bin/java
  link java is /usr/bin/java
  slave java.1.gz is /usr/share/man/man1/java.1.gz
/usr/lib/jvm/java-11-openjdk-amd64/bin/java - priority 1101
  slave java.1.gz: /usr/lib/jvm/java-11-openjdk-amd64/man/man1/java.1.gz

Так почему же компиляция и выполнение выполняются в разных версиях?

1 Ответ

0 голосов
/ 01 ноября 2018

Проблема в том, что другие загруженные версии Java доступны через мою переменную PATH. Поэтому после указания полного пути к исполняемым файлам javac и java при компиляции и выполнении моей программы все работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...