8

Java クラスの関数からの結果 (単純な文字列) を表示するためのプレゼンテーション レイヤーとして jsp プロジェクトがあります。このクラスは src ディレクトリにあります。

実行しようとすると、次のエラーが発生します。

org.apache.jasper.JasperException: JSP のクラスをコンパイルできません:

その後:

パーサーを型に解決できません

私のjspコードは次のとおりです。

<%
        String input="ebnf a{non terminal A;}";
        Symbol tree=null;
        parser p=null;
        InputStream entrada=null;
        analex analizador;
        try{
            entrada=new ByteArrayInputStream(input.getBytes("UTF-8"));
            analizador=new analex(entrada);
            p=new parser(analizador);
            tree=p.parse();
        }catch(Exception e){
            out.println("ERROR");
        }
        finally{}
        out.println("CORRECTO");
        ConDiaCClass cdc=Singleton.getInstance();
        out.println(cdc);
%>

実際、ConDiaCClass と analex クラスでも同じ問題が発生します。

これらのクラスは Eclipse で作成していません。それらは別のプロジェクトのものですが、どちらも src ディレクトリ (Java クラスがあるはずの場所) に配置されています。jspはそれらを認識できないようです。

4

4 に答える 4

7

jspの先頭に必要なインポートステートメントを追加する必要があります。サンプル:

<%@ page import="java.util.List" %>
<%@ page import="yourpackage.parser, yourpackage.analex" %> //and on

アドバイス:クラスをOracleが提案するJavaコード規約に準拠させる。これは、他の人があなたのコードを簡単に読めるようにするための良いガイドです(コードをレビュー/改善したいときに役立ちます)。

于 2012-05-21T03:09:31.103 に答える
3

最後に、クラスが可視性属性を持っていなかっただけです。私はそれらの public 属性を持っていなかったので、jsp はそれらがどこにあるかを知っていましたが、型として解決できませんでした。

これは JFlex/CUP の問題でした。JFlex と CUP は可視性属性のないクラス (アナレックスとパーサー) を作成します。

回答ありがとうございます。次回からは、より具体的な質問をしようと思います。

于 2012-05-30T16:06:48.780 に答える
1

上記の回答にさらに追加するだけです。

JasperExceptionJSP エンジンによってスローされるすべての例外のスーパー クラスです。JSP を初めて実行すると、Tomcat Engine が JSP をコンパイルし、取得しているコンパイル時エラーをスローする場合があります。

続きを読む

Javaクラスがあるはずの場所

クラスは/WEB-INF/classesディレクトリの下にある必要があります。デフォルト /WEB-INF/classes/WEB-INF/libは (Third party APIs) ディレクトリの下にありますCLASSPATH

foo.barしたがって、ディレクトリの下にパッケージがある場合src、クラスは次の場所に移動します/WEB-INF/classes/foo/bar/

于 2012-05-21T04:05:14.740 に答える