Почему я не могу запустить JDK 8 для устаревшей версии PaperMC через start.bin?

Вопрос или проблема

У меня на ПК установлены JDK 8, 17 и 21, но основная версия — это JDK-21. Мне нужно запустить сервер на устаревшей версии PaperMC, и возможно ли как-то сделать так, чтобы JDK-8 использовалась только для этого PaperMC вместе со start.bin (Windows) или start.sh (Linux)?

Вот пример, который я использовал, и он некорректен. Я не отрицаю, что, возможно, где-то допустил ошибку, и хотел бы получить помощь и разъяснения.

start.bin (Windows)

@echo off
java -jar "C:\Program Files\Java\jre1.8.0_431\bin\java.jar"
java -Xmx3G -jar paper-1.13.2-657.jar
PAUSE

Консоль на paper-1.13.2-657

Ошибка: невозможно получить доступ к jar-файлу C:\Program Files\Java\jdk-21\bin\java
Обнаружена неподдерживаемая версия Java (65.0). Поддерживаются только версии до Java 12.

Правильное использование:

@echo off
"C:\Program Files\Java\jre1.8.0_431\bin\java.exe" -Xmx3G -jar paper-1.13.2-657.jar
PAUSE

Ответ или решение

Одной из распространенных проблем, с которыми сталкиваются IT-специалисты при работе с устаревшими версиями программного обеспечения, является необходимость совмещения современных инструментов с устаревшими системами. В вашем случае, проблема заключается в невозможности запуска старой версии PaperMC с использованием JDK 8, в то время как основная версия JDK на вашем компьютере — JDK 21.

Теоретическая часть (Theory)

Java Development Kit (JDK) включает в себя необходимые инструменты для компиляции, отладки и запуска Java-программ. Каждая версия JDK может иметь свои специфики и несовместимости, особенно когда речь идет о новых функциях и методах, которые могут отсутствовать в более ранних версиях. PaperMC, являясь программой на Java, будет зависеть от определенной версии JDK, в пределах которой он был разработан и протестирован.

В вашем случае, правильно заметить, что инициализация PaperMC через JDK 21 вызывает ошибку из-за неподдерживаемых функций или классов, появившихся после Java 12. Следовательно, необходимо убедиться, что JDK 8 используется именно для запуска данной программы.

Пример (Example)

Проанализируем пример, который вы представили. Из вашей первой попытки:

@echo off
java -jar "C:\Program Files\Java\jre1.8.0_431\bin\java.jar"
java -Xmx3G -jar paper-1.13.2-657.jar
PAUSE

Эта команда пытается запустить java.jar, однако это неправильно, поскольку необходимо явно указать путь к исполняемому файлу java.exe, который находится в папке вместе с установленной JDK 8. Ошибка, возникающая из-за этого, связана с попыткой использования неправильной версии JDK. Консольная ошибка указывает, что запускается JDK 21:

Error: Unable to access jarfile C:\Program Files\Java\jdk-21\bin\java
Unsupported Java detected (65.0). Only up to Java 12 is supported.

Применение (Application)

Для решения данной проблемы, необходимо явно указывать путь к версии JDK 8, которую следует использовать для запуска PaperMC. Это достигается путем редактирования вашей команды следующим образом:

@echo off
"C:\Program Files\Java\jre1.8.0_431\bin\java.exe" -Xmx3G -jar paper-1.13.2-657.jar
PAUSE

Почему это работает? Вы указываете конкретный путь к java.exe JDK 8, тем самым обходитесь без использования системной переменной PATH, которая может указать на другую, более новую версию JDK.

Алгоритм действий:

  1. Определите правильный путь к JDK 8: Вам необходимо знать точный путь, где установлена версия JDK 8. Это помогает избежать путаницы с другими версиями, установленными на вашем ПК.
  2. Измените командный файл (start.bin): Убедитесь, что путь к исполняемому файлу java.exe JDK 8 указан в двойных кавычках, что защитит от проблем, связанных с пробелами в пути.
  3. Тестируйте выполнение: После изменения командного файла выполните его, наблюдая за выводом в консоли. Это позволит убедиться, что PaperMC запускается с использованием требуемой версии JDK.

Заключение

Проблема с несовместимостью версий JDK и устаревшими программами, такими как PaperMC, требует внимательного подхода и знаний о том, как Java взаимодействует с системной конфигурацией. Основное преимущество, которое дает явное указание версии JDK, заключается в точной настройке окружения для каждой отдельной задачи, которая может быть необходима в большом количестве сценариев в корпоративной среде.

Оцените материал
Добавить комментарий

Капча загружается...