java.awt.Color error - PullRequest
       17

java.awt.Color error

0 голосов
/ 09 января 2009

У меня есть эта простая страница JSP:

<%@ page language="java" import="java.awt.Color"%> <%
Color background = Color.white;
%>

Сбой из-за следующей ошибки:

java.lang.NoClassDefFoundError
    at _text__jsp._jspService(/text.jsp:3)
    at com.caucho.jsp.JavaPage.service(JavaPage.java:75)
    at com.caucho.jsp.Page.subservice(Page.java:506)
    at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:182)
    at com.caucho.server.http.Invocation.service(Invocation.java:315)
    at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
    at com.caucho.server.http.RunnerRequest.handleRequest(RunnerRequest.java:346)
    at com.caucho.server.http.RunnerRequest.handleConnection(RunnerRequest.java:274)
    at com.caucho.server.TcpConnection.run(TcpConnection.java:139)
    at java.lang.Thread.run(Thread.java:534)

Я запускаю его на смоле 2.1.13.

Есть идеи, что вызвало это?

Ответы [ 4 ]

1 голос
/ 09 января 2009

Раньше я использовал классы AWT внутри контейнеров сервлетов. Проблема, которую необходимо решить, заключается в том, что в серверной системе, вероятно, отсутствует графический дисплей, к которому может подключиться AWT, что по умолчанию приводит к его отказу.

Решение состоит в том, чтобы передать системное свойство, которое сообщает AWT, что оно работает в "безголовой" системе. Обычно это делается передачей «-Djava.awt.headless = true» в командную строку Java.

Вот справка относительно выполнения этого для Resin: http://www.caucho.com/support/resin-interest/0209/0062.html. OP в этом потоке также сообщил об ошибке NoClassDefFound.

0 голосов
/ 17 июля 2013

У меня была такая же проблема на Tomcat в Linux. Я бы получил это сообщение с перерывами. Это было связано с увеличением количества открытых дескрипторов файлов в ОС.

Я не уверен, как Java загружает классы по мере необходимости, но я предполагаю, что этот предел не позволил ему загрузить классы, необходимые для работы во время выполнения.

Я следовал приведенным здесь инструкциям:

Как изменить ограничение на количество открытых файлов в Linux?

А именно:

Установка жесткого предела в /etc/security/limits.conf

* hard nofile 64000

Выйдите из системы и войдите снова, затем запустите:

ulimit -n 64000

в моем сеансе оболочки перед запуском Tomcat. Я добавил вышеуказанную команду в свой файл .bashrc, чтобы убедиться, что ограничения были установлены при каждом входе в систему.

0 голосов
/ 09 января 2009

Не уверен насчет вопроса. Я могу успешно запустить ваш код в моем Tomcat. Может быть, эта проблема является особенной для смолы. Или, как сказал Дэйв, проблема может быть без головы.

Лучше всего преобразовать изображение в какой-нибудь POJO и затем плюнуть на него в браузер, или, возможно, сохранить его где-нибудь на диске и затем связать его в вашем JSP. Если проблема не устранена, попробуйте запустить в режиме без головы, как указал Дейв.

Кроме того, важно понимать, что JSP - это технология просмотра для Интернета, и она не должна выполнять подобные графические манипуляции.

0 голосов
/ 09 января 2009

Некоторые виртуальные машины с параметром -server не загружают java.awt. пакет вообще (ни javax.swing и другие)

Это позволяет избежать загрузки классов, которые не понадобятся.

Кстати, класс

java.awt.Color

Не пригодится на странице jsp. Он используется для отображения цветов в настольных приложениях Java.

Что ты пытаешься сделать? Возможно, есть лучший способ.

...