Не удалось инициализировать класс sun.awt.X11GraphicsEnvironment для Solaris
Я запускаю эту ошибку при запуске моего установщика на машине Solaris:
Installing...
-------------
[==================|==================|==================|==================]
[---Invocation of this Java Application has caused an InvocationTargetException. This application will now exit. (LAX)
Stack Trace:
java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:102)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:81)
at sun.awt.X11FontManager.isHeadless(X11FontManager.java:487)
at sun.awt.X11FontManager.getFontPath(X11FontManager.java:767)
at sun.font.SunFontManager.getPlatformFontPath(SunFontManager.java:3288)
at sun.font.SunFontManager$11.run(SunFontManager.java:3314)
at java.security.AccessController.doPrivileged(Native Method)
at sun.font.SunFontManager.loadFonts(SunFontManager.java:3310)
at sun.awt.X11FontManager.loadFonts(X11FontManager.java:439)
at sun.font.SunFontManager.findFont2D(SunFontManager.java:2347)
at sun.font.SunFontManager.findFont2D(SunFontManager.java:2285)
at java.awt.Font.getFont2D(Font.java:498)
at java.awt.Font.getFamily(Font.java:1187)
at java.awt.Font.getFamily_NoClientCode(Font.java:1161)
at java.awt.Font.getFamily(Font.java:1153)
at ZeroGrs.a(DashoA10*..)
at ZeroGrs.a(DashoA10*..)
at ZeroGrs.a(DashoA10*..)
at ZeroGrs.a(DashoA10*..)
at ZeroGrs.a(DashoA10*..)
at ZeroGrs.a(DashoA10*..)
at com.zerog.ia.installer.actions.InstallUninstaller.a(DashoA10*..)
at com.zerog.ia.installer.actions.InstallUninstaller.d(DashoA10*..)
at com.zerog.ia.installer.actions.InstallUninstaller.installSelf(DashoA10*..)
at com.zerog.ia.installer.InstallablePiece.install(DashoA10*..)
at com.zerog.ia.installer.actions.InstallDirectory.install(DashoA10*..)
at com.zerog.ia.installer.actions.InstallDirectory.install(DashoA10*..)
at com.zerog.ia.installer.InstallablePiece.install(DashoA10*..)
at com.zerog.ia.installer.GhostDirectory.install(DashoA10*..)
at com.zerog.ia.installer.InstallablePiece.install(DashoA10*..)
at com.zerog.ia.installer.Installer.install(DashoA10*..)
at com.zerog.ia.installer.LifeCycleManager.b(DashoA10*..)
at com.zerog.ia.installer.LifeCycleManager.a(DashoA10*..)
at com.zerog.ia.installer.Main.main(DashoA10*..)
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 com.zerog.lax.LAX.launch(DashoA10*..)
at com.zerog.lax.LAX.main(DashoA10*..)
Я попытался настроить JAVA_OPTS
на -Djava.awt.headless=true
, но он не работает!
У любого есть другое решение проблемы?
Ответы
Ответ 1
Попробуйте запустить этот код в конструкторе сервлета
System.setProperty("java.awt.headless", "true");
или
Используйте этот параметр при запуске script сервера:
-Djava.awt.headless=true
Вот пример этой проблемы, описанный и описанный в Apache POI, когда вы хотите создать лист с колонками автоматического размера.
Ответ 2
Собственно,
-Djava.awt.headless=true
Не исправляет проблему, она ее обходит. Проблема заключается в том, что приложение, которое вы пытаетесь запустить, должно работать с пользовательским интерфейсом в XWindows. Эта ошибка говорит о Java-эквиваленте "dll not found" или ".so not found". Библиотека, необходимая для этого, отсутствует в классе JVM, который вы используете.
Проблема заключается в том, что вы используете OpenJDK (или какую-то другую версию Java, например Jikes), и awt является одной из частей Java, которая не может быть открыта по причинам лицензирования. Итак, этот класс не существует специально и никогда не будет в OpenJDK
Объявив
-Djava.awt.headless=true
Вы запускаете его в режиме командной строки, и не все приложения могут это сделать. В вашем случае с вами справились. Единственный способ исправить эту проблему - это получить этот класс и все его зависимые классы в вашем пути к классам. Самый простой способ сделать это - переключиться на солнце JRE.
Ответ 3
Решил вопрос. Это был мой профиль, где я установил свой DISPLAY на один хост, который не жив. Я установил это правильно, и это сработало.
$ export DISPLAY=
Или же
$ unset DISPLAY
Ответ 4
убедитесь, что вы не изменили имя хоста, и после этого эта проблема возникла, если это так, тогда проблема связана с именем хоста.
Ответ 5
У меня была такая же проблема с моим Linux-сервером. Я не знаю, что случилось с магией, проблема была исправлена отлично, установив Xorg в ящик Linux.
sudo apt-get install xorg openbox
Ответ 6
Обычно программа начинает активировать режим без головы, сообщая программе, что теперь вы должны работать в режиме без головы, не ожидайте, что аппаратное обеспечение поможет, вы должны быть самостоятельными, полагаясь на вычислительную мощность системы, чтобы имитировать эти функции:
System.setProperty("java.awt.headless","true");
Измените файл ${TOMCAT_HOME}/bin/catalina.sh
или ${TOMCAT_HOME}/bin/catalina.bat
:
Во всем похожем коде ниже:
"$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Djava.security.manager \
-Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
Добавить предложение в конце:
-Djava.awt.headless=true \
Пересмотренное содержание выглядит следующим образом:
Exec "$_RUNJAVA" $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" -classpath "$CLASSPATH" \
-Dcatalina.base="$CATALINA_BASE" \
-Dcatalina.home="$CATALINA_HOME" \
-Djava.io.tmpdir="$CATALINA_TMPDIR" \
-Djava.awt.headless=true \
Непосредственно найдите строку -Djava.io.tmpdir="$CATALINA_TMPDIR"
и добавьте ее под этой строкой:
-Djava.awt.headless=true \
Всего есть семь мест, которые можно решить после перезагрузки.