문제

이 간단한 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에서 실행 중입니다.

이로 인해 무엇이 원인이되는지 아십니까?

도움이 되었습니까?

해결책

문제에 대해 확실하지 않습니다. Tomcat에서 귀하의 코드를 성공적으로 실행할 수 있습니다. 이 문제는 수지에만 해당 될 수 있습니다. 또는 Dave가 말했듯이 헤드리스 문제 일 수 있습니다.

가장 좋은 방법은 일부 pojo에서 이미지를 변환 한 다음 브라우저에 뱉거나 디스크 어딘가에 저장 한 다음 JSP에 연결하는 것입니다. 문제가 지속되면 Dave가 지적했듯이 헤드리스 모드로 실행하십시오.

또한 JSP가 웹의 뷰 기술이라는 것을 이해하는 것이 중요하며, 그런 종류의 그래픽 조작을 수행해서는 안됩니다.

다른 팁

과거에는 서블릿 컨테이너 내부에서 AWT 클래스를 사용했습니다. 다루어야 할 문제는 서버 시스템에서 AWT가 연결할 수있는 그래픽 디스플레이가 없을 것입니다. 이로 인해 기본적으로 실패하게됩니다.

해결책은 AWT가 "헤드리스"시스템에서 실행 중이라고 알려주는 시스템 속성을 통과시키는 것입니다. 일반적으로 이것은 "-djava.awt.headless = true"를 Java 명령 줄에 전달하여 수행됩니다.

다음은 수지를위한이를 달성하는 것과 관련하여 다음과 같습니다. http://www.caucho.com/support/resin-interest/0209/0062.html. 해당 스레드의 OP는 또한 noclassDeffound 오류를보고했습니다.

Linux의 Tomcat에서도 같은 문제가있었습니다. 나는이 메시지를 간헐적으로 얻을 것이다. OS에서 열린 파일 설명 자의 수를 최대화했기 때문입니다.

Java가 필요에 따라 클래스를 어떻게로드하는지 잘 모르겠지만,이 제한으로 인해 런타임에서 필요한 클래스로드 클래스로드가 중단되었다고 가정합니다.

나는이 지침을 여기에서 설명했다.

Linux의 열린 파일 한계 수를 어떻게 변경합니까?

즉:

/etc/security/limits.conf에서 단단한 제한을 설정합니다

* hard nofile 64000

로그 아웃하고 다시 로그인 한 다음 실행 :

ulimit -n 64000

Tomcat을 시작하기 전에 쉘 세션에서. 위의 명령을 내 .BASHRC 파일에 추가하여 로그온 할 때마다 한도가 설정되었는지 확인했습니다.

-server 옵션이있는 일부 VM은 java.awt를로드하지 않습니다. 전혀 패키지 (javax.swing 및 기타)

이것은 필요하지 않은 클래스 로딩을 피하기위한 것입니다.

그건 그렇고, 수업

java.awt.Color

JSP 페이지에는 유용하지 않습니다. Java 데스크탑 응용 프로그램에 색상을 표시하는 데 사용됩니다.

당신은 무엇을하려고합니까? 아마도 더 좋은 방법이있을 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top