0
package com.mytag.tags;

import java.util.Date;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

public class MyTagHandler extends SimpleTagSupport{

public int doStartTag() throws JspException {
    JspWriter out=pageContext.getOut();
    try{
        out.print(new java.util.Date());
    }catch(Exception e){System.out.println(e);}
    return SKIP_BODY;
    }

}

IDE を使用せずに、このカスタム JSP タグ ハンドラをコンパイルする必要があります。javac -cp "C:\Users\dell\Desktop\jst l2\WEB-INF\lib\javax.servlet.jsp.jstl-1.2.1.jar;" を試したコンパイル方法を誰か教えてください MyTagHandler.java 動作し ていません

4

1 に答える 1

1

このコードは JSTL ではありません。このコードはカスタム JSP タグハンドラです。JSTL は、http://java.sun.com/jsp/jstl/*、 などの名前空間 URIを介して JSP にインポートするタグです。JSTL は「カスタム JSP タグハンドラ」を表していません。JSTL の詳細については、JSTL wiki ページを参照してください。<c:xxx><fmt:xxx>

具体的な問題に関しては、ランタイム クラスパスに JSP API が必要です。これは、インポートのパッケージ名によってすでに示唆されているはずです: javax.servlet.jsp.*. javax.servlet.jsp.jstl.*どこにもインポートしていないので、JSTL API JAR ファイルは不要です。

通常、JSP API JAR ファイルは、ターゲット サーバーのライブラリ/モジュール フォルダーにあります。手動で JSTL を/WEB-INF/libフォルダーに配置したという事実は、WildFly、TomEE などの実際の Java EE サーバーではなく、Tomcatなどのベアボーン サーブレットコンテナーをターゲットにしていることを示唆しています。したがって、例として Tomcat を想定します。JSP API は、/libTomcat インストールのフォルダーにあります。

Tomcat が にインストール (解凍) されていると仮定するとC:\Java\apache-tomcat-8.0.33、カスタム JSP タグハンドラをコンパイルするための正しいコマンドは次のようになります。

javac -cp "C:\Java\apache-tomcat-8.0.33\lib\jsp-api.jar" com/mytag/tags/MyTagHandler.java

これにより「シンボルが見つかりません」というコンパイル エラーが表示されますが、その部分は現在の質問とはまったく関係がないことに注意してください。新しいコンパイル エラーを解決するには、「シンボルが見つかりません」というコンパイル エラーの意味は何ですか?に進んでください。

于 2016-04-06T07:33:57.620 に答える