Можем ли мы установить две версии Java JDK в Windows? - PullRequest
7 голосов
/ 01 апреля 2019

Я создал исполняемый файл JAR, разработанный на Java версии 8. Файл JAR открывался по двойному щелчку. Но поскольку приложения Oracle поддерживают только Java 6, мне пришлось установить JRE 6, но после установки JRE 6 мой исполняемый файл JAR не открывается.

Я установил путь к корзине JDK 8 в переменных среды Path. Есть ли решение этой проблемы? Почему файл JAR не открывается после двух версий Java в системе?

JAR должен открываться, даже если в системе установлены две версии 6 и 8 Java.

Ответы [ 4 ]

10 голосов
/ 01 апреля 2019

Вы столкнулись с проблемой обратной совместимости.Обратная совместимость означает, что вы можете запускать программу Java 6 во время выполнения Java 8, но не наоборот.

Вы можете запустить более низкую конфигурацию в более высокой конфигурации, а не наоборот

Для этого есть несколько причин:

  1. Байт-код является версионным, и JVM проверяет, поддерживает ли он версию, найденную в файлах .class.
  2. Некоторые языковые конструкции не могут быть выражены в предыдущих версиях байт-кода.
  3. В более новых JRE есть новые классы и методы, которые не будут работать со старыми.

ЕслиВы действительно, действительно хотите (совет: вы не), вы можете заставить компилятор обрабатывать исходный код как одну версию Java и генерировать байт-код для другой, используя что-то вроде этого:

javac -source 1.8 -target 1.6 MyClass.java

Вы можете скомпилировать свой код в байт-код Java 1.6, используя JDK 1.8.Просто позаботьтесь о следующем:

  • -source=1.8 и -target=1.6 опции компилятора
  • Если вы используете Maven, подумайте о наличии двух файлов pom.xml ,с необязательным родительским файлом.

Source : Может ли программа, разработанная на Java 8, работать на Java 7?

1 голос
/ 03 апреля 2019

Привет всем Спасибо за ваш ответ.Я сохранил java6 и переустановил java8, и теперь формы и jar оба работают!

1 голос
/ 02 апреля 2019

Я не уверен, сработает ли это решение или нет. Попробуйте запустить команду java -version и посмотрите, возвращает ли она путь java 6 или 8. Также попробуйте указать путь JDK 8 как переменную JAVA_HOME и добавить его в путь, например, как этот путь =% JAVA_HOME% / bin, и посмотреть, работает ли он. Если вы получаете java 6 в качестве java-версии, попробуйте использовать описанный выше метод, а затем установите JRE 6

0 голосов
/ 01 апреля 2019

В краткосрочной перспективе
ответ да .Поскольку оба JDK-файла загружаются как jar-файлы, будет нормально скачивать оба jar-файла.Причина, по которой не открывается после двух версий Java, заключается в том, что @Elliott сказал: «в системе Java 6 не может запускать скомпилированный код Java 8, вы должны получить ошибку».Это действительно так, но проблема в том, как использовать несколько версий JDK на одном компьютере.

Затем мы должны перейти к долгосрочной перспективе,
Хитрость в том, чтобы управлять этими несколькими JDK и IDE.Это просто, если я просто использую Eclipse для компиляции своего кода, потому что IDE позволяет мне конфигурировать несколько версий среды выполнения Java.К сожалению (или к счастью), я должен использовать командную строку / оболочку для сборки своего кода.Поэтому важно, чтобы у меня была правильная версия JDK, присутствующая в PATH, и другие связанные с ней переменные среды (например, JAVA_HOME).

Изменение переменных среды вручную каждый раз, когда я хочу переключаться между JDK, не так ли?Т счастливое задание.Но благодаря Windows Powershell я могу написать сценарий, который может сделать для меня тяжелую работу.

По сути, вы хотите добиться установки переменной PATH для добавления папки bin Java иустановите переменную среды JAVA_HOME и затем запустите правильную среду разработки Eclipse.И я хочу сделать это с помощью одной команды.Давайте сделаем это.

  1. Откройте Windows Powershell.
  2. Я предпочитаю писать пользовательские сценарии Windows в файле своего профиля, чтобы он мог запускаться при каждом открытии оболочки.Для редактирования профиля выполните следующую команду: notepad.exe $profile - $ profile - это специальная переменная, которая указывает на файл вашего профиля.
  3. Запишите приведенный ниже скрипт в файл профиля и сохраните его.

function myIDE {$ env: Path = «C: vraajavajdk7bin;» $ env: JAVA_HOME = «C: vraajavajdk7» C: расположение набора vraaideeclipseeclipse C: воспроизведение vraaworkspacemyproject} * 10

function officeIDE{
$env:Path  = "C:vraajavajdk6bin;"
$env:JAVA_HOME = "C:vraajavajdk6"
C:officeeclipseeclipse
}
Закройте и перезапустите Powershell. Теперь вы можете выполнить команду myIDE, которая установит надлежащие переменные PATH и среды, а затем запустит Eclipse IDE.

AsВы можете видеть, есть две функции с различными конфигурациями.Просто вызовите имя функции, которую вы хотите запустить, из командной строки Powershell (myIDE).

Если возникнет проблема, оставьте комментарий ниже!

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