2010-07-09 59 views
3

當我嘗試在我的webapp中使用自定義taglibs時,它不能在OS X(或Windows)上使用Eclipse和Run Jetty Run運行。當我警告這些文件並在運行apache-tomcat-6.0.20的Linux服務器上運行它們時,沒有任何問題。我在這兩種環境中都使用第三方自定義taglib,沒有問題。custom taglibs cause「PWC6033:Unable to compile class for JSP」

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) 
... 

自定義標籤庫TLD看起來像

<?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中無濟於事。

+0

所以在windows現在我已經嘗試運行的應用程序運行碼頭運行,這雖然給出了同樣的問題。 – Tyler 2010-07-10 00:19:33

回答

1

SOOOOOOOOOOO惱人的!!!!我希望上帝保佑有人會發現這一點,並且無論何時我都試圖找出解決方案,這一切都可以節省下來。我相信這是Jetty的問題。

我在com包中也有一個類Test。因此,無論出於何種原因,Jetty都會去查找com.test.CustomTag,並最終尋找com.Test裏面的內部類?無論如何,將CustomTag移動到另一個包(或移動或重命名com.Test)可以解決問題。

0

我有點問題。 碼頭,但自定義標籤文件(沒有taglib)

由於泰勒的職位,我會放棄在這裏(10年10月10日在0:45)。我可能會向碼頭人羣陳述我的情況。我無法將自定義標籤移動到另一個包,因爲它是一個標籤文件,並且不會聲明包。

在Eclipse中,它工作正常。所有Junit測試運行綠色。 'mvn test'與PWC6033失敗,但沒有進一步的詳細信息。我只能猜測標籤文件在部署到服務器時顯然運行正確。

如果jetty/maven沒有正確解決導入問題,那麼這聽起來像是一個bug。

爲了完整起見,這裏是我TAGFILE /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的,以獲取一個屬性值和不打印一些其他參數東西變成標準了。

1

得到了解決方案。雖然我的eclipse在編譯時沒有顯示錯誤。 Jetty運行時沒有找到我添加的新類屬性。因爲maven還沒有生成它。

我跑了這兩個命令,事情沒有問題。與1.6 JDK(而不是默認的JRE) 1. MVN清潔 2. MVN安裝-DskipTests

相關問題