Безголовая непрерывная интеграция с Jenkins
Я пытаюсь настроить Jenkins на облачном сервере RackSpace ArchLinux, но не смог.
Всякий раз, когда я пытаюсь получить доступ к сайту Дженкинс, я получаю эту ошибку:
AWT is not properly configured on this server. Perhaps you need to run your container with "-Djava.awt.headless=true"?
java.lang.NullPointerException
at sun.awt.X11FontManager.getDefaultPlatformFont(X11FontManager.java:779)
at sun.font.SunFontManager$2.run(SunFontManager.java:428)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.SunFontManager.<init>(SunFontManager.java:371)
at sun.awt.X11FontManager.<init>(X11FontManager.java:32)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at java.lang.Class.newInstance0(Class.java:372)
at java.lang.Class.newInstance(Class.java:325)
at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:80)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:71)
at java.awt.Font.getFont2D(Font.java:489)
at java.awt.Font.getFamily(Font.java:1186)
at java.awt.Font.getFamily_NoClientCode(Font.java:1160)
at java.awt.Font.getFamily(Font.java:1152)
at java.awt.Font.toString(Font.java:1649)
at hudson.util.ChartUtil.<clinit>(ChartUtil.java:229)
at hudson.WebAppMain.contextInitialized(WebAppMain.java:175)
at winstone.WebAppConfiguration.<init>(WebAppConfiguration.java:897)
at winstone.HostConfiguration.initWebApp(HostConfiguration.java:131)
at winstone.HostConfiguration.<init>(HostConfiguration.java:73)
at winstone.HostGroup.initHost(HostGroup.java:85)
at winstone.HostGroup.<init>(HostGroup.java:45)
at winstone.Launcher.<init>(Launcher.java:197)
at winstone.Launcher.main(Launcher.java:398)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at Main._main(Main.java:268)
at Main.main(Main.java:96)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.tanukisoftware.wrapper.WrapperJarApp.run(WrapperJarApp.java:394)
at java.lang.Thread.run(Thread.java:722)
Итак, что вы думаете, это может быть?
Я уже пытался установить переменную среды JAVA_OPTS, но безрезультатно. Я также пытался выполнить Java с -Djava.awt.headless=true
или даже установив его в conf/wrapper.conf как wrapper.app.parameter.3=-headless.
Есть идеи, как мне решить эту проблему? Я так новичок в этом...
Заранее спасибо!
11 ответов
Хотите верьте, хотите нет, это был всего лишь вопрос установки шрифта ttf-dejavu!
Мне стыдно...
На моей машине fedora 17 64Bit у меня был установлен OpenJDK 1.7, и я установил Jenkins, у которого была та же проблема. Настройка -Djava.awt.headless=true не помогла.
Наконец, решил проблему, установив dejavu-sans-fonts:
yum install dejavu-sans-fonts
Установка java-1.6.0-openjdk привела к следующим зависимостям:
- Fontconfig
- libXfont
- libfontenc
- ttmkfdir
- Xorg-x11-шрифтов-Utils
- Xorg-x11-шрифтов Type1-
После установки этих пакетов и перезапуска jenkis все заработало как задумано.
Имея 64-битный безголовый сервер ArchLinux, я успешно настроил jenkins для работы, выполнив следующие действия:
- Установленный пакет ttf-dejavu
- Установленные пакеты fontconfig
добавлено в /etc/conf.d/tomcat7:
CATALINA_OPTS = "- Djava.awt.headless = истина"
Для меня установка шрифтов не помогла вообще. Для меня это на самом деле пропустил fontconfig
пакет.
Подробности: http://vault-tec.info/post/98877792626/jenkins-service-unavailable
У меня такая же проблема.
Я использую MobaXterm в качестве терминала для моей учетной записи Linux, и для меня решение было в MobaXterm. Мне пришлось включить X11 под Настройки -> Конфигурации.
В Linux Server версии 6.2 (Сантьяго) вам просто нужно указать команду ниже.
export CATALINA_OPTS="-DJENKINS_HOME=/opt/itmsetup/apache-tomcat-6.0.37/jenkins -Xmx750m -Djava.awt.headless=true"
это решило мою проблему.
Установка openjdk-7-jre-headless
а также ttf-dejavu
сделал разницу для меня на Ubuntu 12.04 LTC (Precise). На шрифты ссылается установка шрифтов установки Java, а пакет OpenJDK 7 зависит от libfontconfig1
и, таким образом, будет фактически использовать шрифты.
Я использую Jenkins из http://pkg.jenkins-ci.org/debian/ и по умолчанию вы получите openjdk-6-jre-headless
так как jenkins
пакет зависит от default-jre-headless
который в свою очередь тянет в openjdk-6-jre-headless
,
Вы можете поменять пакеты используя
$ aptitude install openjdk-7-jre-headless
$ aptitude remove default-jre-headless openjdk-6-jre-headless
Добавляя CATALINA_OPTS="-Djava.awt.headless=true"
в setclasspath.sh
файл из tomcat/bin
справочник решил проблему.