0

JSP ページの外部で定義された外部 Java クラスを使用するすべての JSP ページで、常にエラーHTTP ステータス 500が発生します。ここにコードがあります

index.jsp

<%@page import="mypack.sou" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <h1>Hello World!</h1>

<% 
sou o=new sou();
int r=o.hi();
out.println(r);
%>
</body>
</html>

パッケージmypackの下のsou.java

package mypack;
public class sou {
public int hi()
 {
    return 0;
 }
}

エラー:

タイプ例外レポート

「メッセージ JSP のクラスをコンパイルできません: 生成された Java ファイルの行: 14 でエラーが発生しました タイプのみをインポートできます。mypack.sou はパッケージに解決されます JSP ファイルの行: 18 でエラーが発生しました: /web/ index.jsp sou をタイプ 15 に解決できません:

「こんにちは世界」

16:17:<% 18:souo=newsou(); 19: int r=o.hi(); 20: out.println(r); 21: %> 次の行でエラーが発生しました: jsp ファイルの 18: /web/index.jsp sou はタイプ 15 に解決できません:

「こんにちは世界」

16:17:<% 18:souo=newsou(); 19: int r=o.hi(); 20: out.println(r); 21: %> スタックトレース:

説明 サーバーで内部エラーが発生しました (JSP のクラスをコンパイルできません: 生成された Java ファイルの行: 14 でエラーが発生しました タイプのみをインポートできます。mypack.sou はパッケージに解決されますjsp ファイル: /web/index.jsp sou をタイプ 15 に解決できません:

「こんにちは世界」

16:17:<% 18:souo=newsou(); 19: int r=o.hi(); 20: out.println(r); 21: %> 次の行でエラーが発生しました: jsp ファイルの 18: /web/index.jsp sou はタイプ 15 に解決できません:

「こんにちは世界」

16:17:<% 18:souo=newsou(); 19: int r=o.hi(); 20: out.println(r); 21: %> Stacktrace:) このリクエストの実行を妨げました。"


ディレクトリ構造

  • ウェブアプリ
    | アプリ
    |
    _ index.jsp
    |_
    WEB-INF
    ...|
    _クラス
    .............| _マイパック
    ...................|
    _sou.class、test.war、mypack.jar

システム情報: Win 7 Ultimate X64、Apache Tomcat 7.0.29
Java バージョン "1.7.0_02"
Java(TM) SE ランタイム環境 (ビルド 1.7.0_02-b13)
Java HotSpot(TM) クライアント VM (ビルド 22.0-b10、混合モード) 、共有)
Tomcat ディレクトリには完全な権限があります。


同じコードが機能するGlassFishに移動する必要がありました! しかし、Tomcat にはまだ問題が存在します。

4

2 に答える 2

0

mypack.souの代わり に使用してみてください sou。すべての JSP はコンテナによって単純な古い Java サーブレット コードに変換されるため、JSP 内では完全修飾クラス名を使用する必要があります。または、代わりにパッケージをインポートできます:

<%@ page import=”mypack.*” %>
于 2012-08-13T10:54:02.077 に答える
0

「;」を追加してみてください あなたのインポートステートメントに。

次のように変更します。

<%@page import="mypack.sou;" %>
<!DOCTYPE html> //Remove content type


これは奇妙な答えのように見えるかもしれませんが、この参照 https://stackoverflow.com/a/1858635/586836を参照してください

編集:
そうでない場合:
そのJavaファイルを手動でクラスにコンパイルしてから、それをクラスディレクトリに入れて確認してください。

于 2012-08-12T17:35:34.057 に答える