Подтвердить что ты не робот

Не удалось инициализировать класс 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, но он не работает!

У любого есть другое решение проблемы?

4b9b3361

Ответ 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 \

Всего есть семь мест, которые можно решить после перезагрузки.