0

この単純な 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)

私はResin 2.1.13で実行しています。

これの原因は何ですか?

4

4 に答える 4

1

過去には、サーブレットコンテナ内でAWTクラスを使用していました。対処する必要のある問題は、サーバーシステム上で、AWTが接続できるグラフィックスディスプレイが実行されていない可能性があり、デフォルトで失敗することです。

解決策は、「ヘッドレス」システムで実行されていることをAWTに通知するシステムプロパティを渡すことです。一般に、これは「-Djava.awt.headless=true」をjavaコマンドラインに渡すことによって行われます。

これをResinで実現するためのリファレンスは次のとおりです:http://www.caucho.com/support/resin-interest/0209/0062.html。そのスレッドのOPもNoClassDefFoundエラーを報告しました。

于 2009-01-09T20:53:41.650 に答える
0

問題についてはわかりません。Tomcat でコードを正常に実行できます。この問題はレジン特有のものかもしれません。または、デイブが言ったように、頭のない問題かもしれません。

あなたの最善の策は、いくつかのPOJOで画像を変換してからブラウザに吐き出すか、ディスクのどこかに保存してからJSPにリンクすることです。問題が解決しない場合は、Dave が指摘したように、ヘッドレス モードで実行してみてください。

さらに、JSP は Web のビュー テクノロジであり、そのようなグラフィックス操作を行ってはならないことを理解することが重要です。

于 2009-01-09T09:48:35.570 に答える
-1

-server オプションを指定した一部の VM は、java.awt をロードしません。パッケージはまったくありません( javax.swing などもありません)

これは、不要なクラスのロードを避けるためです。

ちなみにクラスは

java.awt.Color

jsp ページでは役に立ちません。これは、Java デスクトップ アプリケーションで色を表示するために使用されます。

あなたは何をしようとしているのですか?おそらくもっと良い方法があります。

于 2009-01-09T09:26:35.397 に答える