Где скачать JRE 11

220
17 января 2019, 11:20

Скачал вчера свежую JDK 11 и поставил, но возникает ошибка.

Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: hel 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 52.0

Как я понял, это из-за того что JDK 11, и код скомпилирован на нём, а но моём компьютере версия джавы другая (восьмая), но вопрос в том, где я могу скачать JRE 11? Официальный сайт Оракла предлает только восьмую версию. Не бейте только за этот вопрос, я пытаюсь научиться, а вчера 11 Java вышла вот я её и скачал.

Answer 1

В Java 11 нет JRE. Если вы разработчик, вы можете запускать свою программу при помощи JDK 11. Если вы хотите делать это из командной строки, вы должны позаботиться о том, чтобы путь к java или к java.exe из JDK11 стоял, в переменной окружения PATH, раньше пути к java или к java.exe более старых JRE. При этом вы должны учесть, что в Windows установщики старых Public JRE копировали java.exe в директорию C:\Windows\System32, которая так же прописана в PATH. Лучше всего просто удалить старую Public JRE. Старый JDK удалять не обязательно, он не помешает.

Если же вы хотите послать свою программу конечному пользователю, у которого теперь нет подходящего JRE и который не хочет устанавливать JDK, вы должны создать рантайм среду (некое подобие старого JRE), которая будет включать лишь необходимые Java модули, включая модуль вашей программы.

Для примера разберём простой Hello world. Пусть ваша программа состоит из одного класса com.example.MainClass и является модулем tryout, то есть кроме com/example/MainClass.java у вас есть и module-info.java (в default пакете, то есть над com) с описанием модуля. Например с таким минимальным:

module tryout {
}

Кстати, в IntelliJ IDEA добавление модуля является отдельной операцией от добавления класса в меню New. Создать module-info.java тем же способом, которым вы создаёте обычный класс вы не сможете.

После сборки вашего проекта, например при помощи Maven, у вас получится некий jar файл, точное название которого совершенно неважно. Это jar файл и будет вашим модулем, описание которого будет у него внутри в module-info.class. Для создания рантайм среды вы должны запустить примерно такую комманду:

jlink --module-path . --add-modules tryout --launcher start=tryout/com.example.MainClass --output tryoutapp

Описание используемых параметров:

--module-path . говорит о том, где искать модули, кроме модулей JDK. В данном случае в текущей директории ..

--add-modules tryout говорит о том, какие модули включить, кроме модулей, включаемых по-умолчанию из JDK.

--launcher start=tryout/com.example.MainClass говорит о том, что нужно создать скрипты запуска start (UNIX Shell script) и start.bat (Batch script) которые будут запускать модуль tryout, запуская класс com.example.MainClass в этом модуле. Указание класса опционально и в моём случае понадобилось потому, что я поленился указать его в MANIFEST.MF внутри jar файла.

--output tryoutapp говорит о том, в какой директории создавать рантайм среду. При этом если такая директория уже существует и даже если она пустая, будет ошибка: "Error: directory already exists: tryoutapp".

В конечном итоге вы получите директорию tryoutapp внутри которой будет всё необходимое для запуска вашей программы (вашего модуля). При этом ваш jar файл вы там не найдёте. Ваш модуль (а значит и класс com.example.MainClass), вмести с остальными модулями, будет находиться в файле tryoutapp/lib/modules. В моём случае размер этого файла 23 мегабайта. Стартовые скрипты start и start.bat будут находиться в директории tryoutapp/bin.

Более детальное описание утилиты jlink вы можете получить запустив jlink --help.

Answer 2

jre 11 не будет. ссылка с картинки https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later

Answer 3

Выше комментирующий заявил, что Java 11 JRE не существует.

Файл имеет название: jre-11-ea+8_windows-x64_bin.exe Фактический размер: 98,7Мб

Answer 4

Ссылка на скачивание JDK 11 с сайта Oracle

READ ALSO
реверс TranslateAnimation android

реверс TranslateAnimation android

как можно заставить анимацию двигаться в обратном направлении каждый раз после выполнения?

173
расположение JPanel на нужном месте

расположение JPanel на нужном месте

Не могу заставить располагаться кнопку на нужном месте, делаю Layout командой add(buttonPanel, BorderLayoutSOUTH);и add(centerPanel, BorderLayout

152
JavaFX. Взаимодействие Controller и Aplication

JavaFX. Взаимодействие Controller и Aplication

Я создаю приложениеЕсть основной функционал, но хотелось бы видеть его функциональность в виде счетчика

145
Хранилище Массивов

Хранилище Массивов

Когда создадим массив, например, типа char, где он сохраняется - в heap, stack или pool?

175