Jenkins не запускается на Windows Server после Java Runtime обновить удаленную старую версию JRE

У меня есть сервер Jenkins под управлением Windows Server 2012, и Java предложила мне обновить его до более новой версии (с jre1.8.0_261 до jre1.8.0_271), и во время этой установки он попросил удалить более старые версии (для соображения безопасности), что я разрешил. Когда я перезапустил службу Jenkins, она не перезапустилась. В журнале ошибок указано это Информационное сообщение:

Запуск C: \ Program Files \ Java \ jre1.8.0_261 \\ bin \ java.exe -Xrs -Xmx256m -Dhudson.lifecycle = hudson.lifecycle.WindowsServiceLifecycle -jar "C: \ Prog ram Files \ Jenkins \ jenkins.war "--httpPort = 8080 --webroot =" C: \ Windows \ system32 \ config \ systemprofile \ AppData \ Local \ Jenkins \ war "

И эта ошибка:

Служба не может быть запущенным. System.ComponentModel.Win32Exception (0x80004005): система не может найти файл, указанный в System.Diagnostics.Process.StartWithCreateProcess (ProcessStartInfo startInfo) в winsw.Util.ProcessHelper.StartProcessAndCallbackForExit (ProcessToStart аргументы, String Execution, String Execution, String workingDirectory, приоритет Nullable1, обратный вызов ProcessCompletionCallback, логическое redirectStdin, LogHandler logHandler, Boolean hideWindow) в winsw.WrapperService.StartProcess (процесс processToStart, String arguments, исполняемый файл String, LogHandler logHandler, Boolean redirectStdin) в String. ) в System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback (состояние объекта)

Информационное сообщение дало мне ключ к разгадке проблемы: Jenkins указывает на расположение более старой версии Java здесь: C: \ Program Files \ Java \ jre1.8.0_261

Однако папка пуста, и самое главное, в ней нет папки bin (без сомнения, из-за вышеупомянутую деинсталляцию).

Более новая версия здесь содержит полные двоичные файлы Java: C: \ Program Files \ Java \ jre1.8.0_271

Как заставить Дженкинса указать на новую JRE?

0
задан 23 October 2020 в 18:47
2 ответа

Обратитесь к ответу @Jeff Mergler для первичного решения

Мы обходим всю проблему, используя ссылку . mklink / D C: Java \ jre1.8 C: \ Program Files \ Java \ jre1.8.0_261 , и поместите его в jenkins.xml . Сначала мы устанавливаем jdk вручную, затем просто останавливаем все наши приложения, перенаправляем одну ссылку и запускаем все наши приложения. Затем удалите старый jdk. У нас также есть ссылка для 8 и одна для 11. Мы делаем то же самое на стороне Linux, откуда мы взяли решение!

Кроме того, в соответствии с новыми условиями лицензирования Oracle, вы должны использовать что-то вроде acceptOpenJDK , чтобы не противоречить условиям Big Red.

например:

C:\Tools\Java>echo %JAVA_HOME%
C:\Tools\Java\jdk

C:\Tools\Java>dir
 Volume in drive C is L103437
 Volume Serial Number is 28B0-4574

 Directory of C:\Tools\Java

2020-10-28  12:43 PM    <DIR>          .
2020-10-28  12:43 PM    <DIR>          ..
2020-08-19  11:59 AM    <SYMLINKD>     jdk [jdk1.8]
2020-10-28  12:41 PM    <DIR>          jdk-11.0.9.11-openj9
2020-08-05  12:14 AM    <SYMLINKD>     jdk1.6 [jdk1.6.0_211]
2020-08-05  12:13 AM    <DIR>          jdk1.6.0_211
2020-03-11  01:31 AM    <DIR>          jdk1.8.0_231
2020-10-28  12:40 PM    <DIR>          jdk1.8.0_271
               0 File(s)              0 bytes
               8 Dir(s)  162,629,304,320 bytes free

C:\Tools\Java>mklink /D jdk1.8 jdk1.8.0_231
symbolic link created for jdk1.8 <<===>> jdk1.8.0_231

C:\Tools\Java>java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b32)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b32, mixed mode)

C:\Tools\Java>unlink jdk1.8

C:\Tools\Java>mklink /D jdk1.8 jdk1.8.0_271
symbolic link created for jdk1.8 <<===>> jdk1.8.0_271

C:\Tools\Java>java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b32)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b32, mixed mode)
    
C:\Tools\Java> dir

2020-08-19  11:59 AM    <SYMLINKD>     jdk [jdk1.8]
2020-10-28  12:44 PM    <SYMLINKD>     jdk1.8 [jdk1.8.0_271]
2020-03-11  01:31 AM    <DIR>          jdk1.8.0_231
2020-10-28  12:40 PM    <DIR>          jdk1.8.0_271

В приведенном выше примере JAVA_HOME = C: \ Tools \ Java \ jdk и PATH =% JAVA_HOME% \ bin;% PATH% . jdk - это символьная ссылка , в настоящее время указывающая на jdk1.8 , которая в приведенном выше примере была сброшена с указания на 1.8.0_231 на 1.8.0_271 (Не забудьте включить / D для ссылки на каталог.

jenkins.xml может ссылаться на исполняемый файл любым из :
java.exe
% JAVA_HOME% \ bin \ java.exe
C: \ Tools \ Java \ jdk1.8 \ bin \ java.exe
или, если вы хотите проверить на соответствие конкретной версии:
C: \ Tools \ Java \ jdk1.8.0_271 \ bin \ java.exe

0
ответ дан 4 January 2021 в 09:53

Существует довольно простое решение: найдите файл Jenkins.xml (для меня он находится в C: \ Program Files \ Jenkins \ jenkins.xml ) и отредактируйте его. .

Найдите элемент и исправьте его, чтобы он указывал на новый путь JRE, например, в моем случае я изменил

этот C: \ Program Files \ Java \ jre1.8.0_261 \ bin \ java.exe

в этот <исполняемый файл> C: \ Program Files \ Java \ jre1.8.0_271 \ bin \ java.exe

Сохраните файл, и Jenkins теперь нормально запускается.

0
ответ дан 4 January 2021 в 09:53

Теги

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