Вопрос по ubuntu, java – Разрешение конфликта версий между java и javac в Ubuntu

16

У меня проблема с моим скомпилированным Java-приложением в Ubuntu. БросаетUnsupportedClassVersionError. Я компилирую с более высокой версией JDK, чем та, которая настроена в моем PATH для запуска Java:

$ javac -version
javac 1.7.0_147

$ java -version
java version "1.6.0_23"
OpenJDK Runtime Environment (IcedTea6 1.11pre) (6b23~pre11-0ubuntu1.11.10.2)
OpenJDK Client VM (build 20.0-b11, mixed mode, sharing)

Как я могу решить это?

Вы можете предпочесть задать этот вопрос на Askubuntu.com В любом случае, проверьте, какие java-пакеты установлены, и, если jre v1.7 также установлен, вам может потребоваться настроить, какую версию использовать с «альтернативами» Grims
Или попробуйте скомпилировать с помощью-target 1.6 или-source 1.6. Fred Foo

Ваш Ответ

4   ответа
7

чтобы найти местоположение этого

javac 1.7.0_147

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

whereis javac

ил

 locate javac

ил

find javac

После того, как вы нашли каталог, символически и принудительно свяжите содержимое корзины с / usr / bin:

sudo ln -f -s [put location here]/bin/* /usr/bin
У меня та же проблема, но когда я пытаюсь это сделать, я получаю новую, другую ошибку: «слишком много уровней символических ссылок» Paul
-1, пожалуйста, не пытайтесь ответить на этот вопрос. Я думаю, что он не должен быть выбран в качестве принятого ответа. Это, скорее всего, приведет к тому, что ваша машина необратимо испортится, создав круглые символические ссылки по всему каталогу / usr / bin, которые невозможно удалить! Paul
@ Paul Этот ответ был адресован человеку, чейjavac былн в/usr/bin. Если[put location here]/bin Оказалось, что/usr/bin тогда команда становится чем-то совершенно нелепым, что вы должны были знать - если бы вы пытались понять это решение, а не применять его вслепую Wumpus Q. Wumbley
Полагаю, это правда. Я не хотел обидеть, и я думаю, что ответ все еще полезен. Но, возможно, моя публичная глупость помешает кому-то еще совершить ту же ошибку. Paul
22

  sudo update-alternatives --config java

Он попросит вас:

Есть два варианта альтернативной Java (предоставив /usr/bin/java)

  Selection      Path                                            Priority   Status

    0           /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      auto mode

    1           /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java   1061      manual mode

    2            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java  1051      manual mode


  Press enter to keep the current choice[*], or type selection number:

Я ввожу 2, так как хочу использовать Java 1.7.0_21

16

Тебе также нужно будет сделать:

sudo update-alternatives --config javac

Выберите нужный Java-компилятор из предоставленного списка. Например на Centos 5

There are 2 programs which provide 'javac'.
Selection    Command
-----------------------------------------------
1           /usr/lib/jvm/java-1.6.0-openjdk/bin/javac
*+ 2        /usr/lib/jvm/java-1.7.0-openjdk/bin/javac
Спасибо ...-- конфиг Javac работал здесь. CoDe
работал для меня .. Спасибо Varun Arya
3

Java и Ubuntu. У меня в основном тот же конфиг, но я переключаюсь с Glassfish и Java7. Посмотрите и попробуйте настроить Java Java Env аналогичным образо

Похожие вопросы