3

Webアプリケーションでカスタムtaglibsを使用しようとすると、Eclipseを使用してOS X(またはWindows)で動作せず、JettyRunを実行します。ファイルをWARアップして、apache-tomcat-6.0.20を実行しているLinuxサーバーで実行すると、問題はありません。両方の環境で問題なくサードパーティのカスタムtaglibを使用しています。

org.apache.jasper.JasperException: PWC6033: Unable to compile class for JSP

PWC6197: An error occurred at line: 6 in the jsp file: /temp.jsp
PWC6199: Generated servlet error:
com.test cannot be resolved to a type
 at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:107)
 at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:280)
 at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:350)
 at org.apache.jasper.compiler.Compiler.compile(Compiler.java:411)
 ...

カスタムtaglibTLDは次のようになります

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE taglib PUBLIC 
 "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
 "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
 <tlib-version>1.0</tlib-version>
 <jsp-version>2.0</jsp-version>
 <short-name>test</short-name>
 <uri>http://test.com/test.tld</uri>
 <description>Test</description>

 <tag>
  <name>custom</name>
  <tag-class>com.test.CustomTag</tag-class>
  <body-content>empty</body-content>
  <description>Custom tag</description>
 </tag>
</taglib>

そしてタグハンドラー

package com.test;

import javax.servlet.jsp.tagext.TagSupport;

public class CustomTag extends TagSupport {

 private static final long serialVersionUID = 1L;

}

そして最後にtemp.jsp

<%@ taglib uri="http://test.com/test.tld" prefix="test" %>
Hi
<test:custom/>

私のtaglibの定義/構成は、tomcatにデプロイするとすべてが機能するので正しいと思いますが、Jettyでこれを機能させるために、一日中努力してきました。

4

3 に答える 3

1

解決策を得ました。私がコンパイルしたときに私の日食はエラーを表示しませんでしたが。Jetty を実行すると、追加した新しいクラス属性が見つかりませんでした。Mavenはまだそれを生成していませんでした。

これら2つのコマンドを実行しましたが、その後は問題ありませんでした。1. mvn clean 2. mvn install -DskipTests

于 2014-04-17T14:39:19.687 に答える
1

すっごくうざい!!!!誰かがこれを見つけて、解決策を見つけようとして無駄にした時間を節約してくれることを願っています. これは Jetty の問題だと思います。

com パッケージには Test クラスもありました。なんらかの理由で、Jetty は com.test.CustomTag を探しに行き、最終的に com.Test 内の内部クラスを探しますか? いずれにせよ、CustomTag を別のパッケージに移動する (または com.Test を移動または名前変更する) と、問題が修正されました。

于 2010-07-10T02:02:39.230 に答える
0

私は幾分同じ問題を抱えています。Jettyだがカスタムタグファイル(taglibなし)

タイラーのポスト(2010年7月10日0:45)のため、ここで諦めます。私は自分の主張を突堤の群衆に述べるかもしれません。カスタムタグはタグファイルであり、パッケージを宣言していないため、別のパッケージに移動できません。

Eclipseでは正常に動作します。すべてのJUnitテストは緑色で実行されます。'mvn test'はPWC6033で失敗しますが、それ以上の詳細情報はありません。サーバーにデプロイしたときに明らかに正しく実行されるタグファイルを推測できました。

インポートがjetty/mavenによって正しく解決されない場合、それは私にはバグのように聞こえます。

完全を期すために、これが/WEB-INF/tags/ognl.tagにある私のタグファイルです。

<%@tag import="de.mypackage.WebUtils"
%><%@tag body-content="empty"
%><%@attribute name="value" required="true"
%><%=WebUtils.ognl(request, value)%>

WebUtilsが属性値といくつかのものを標準出力に出力する別のパラメーターをフェッチするためにHttpServletRequestを取得する場合。

于 2012-09-11T21:00:22.403 に答える