Java 自定义标记库原因“;PWC6033:无法为JSP编译类;

Java 自定义标记库原因“;PWC6033:无法为JSP编译类;,java,jetty,taglib,Java,Jetty,Taglib,当我尝试在我的webapp中使用自定义标记库时,它在OSX(或Windows)、Eclipse和Jetty Run上都不起作用。当我对文件进行处理并在运行apache-tomcat-6.0.20的linux服务器上运行它们时,就没有问题了。我使用的第三方自定义标记库在两种环境中都没有问题 org.apache.jasper.JasperException: PWC6033: Unable to compile class for JSP PWC6197: An error occurred a

当我尝试在我的webapp中使用自定义标记库时,它在OSX(或Windows)、Eclipse和Jetty Run上都不起作用。当我对文件进行处理并在运行apache-tomcat-6.0.20的linux服务器上运行它们时,就没有问题了。我使用的第三方自定义标记库在两种环境中都没有问题

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>
最后是temp.jsp

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

你好

我认为我的taglib定义/配置是正确的,因为部署到tomcat时整个东西都能工作,但我整天都在Jetty中尝试使它工作,但都没有用。

太烦人了!!!!我向上帝祈祷,有人能找到这个,这样就省去了我花在寻找解决方案上的所有时间。我相信这是Jetty的问题


我还在com包中进行了一次类测试。所以无论出于什么原因,Jetty都会去寻找com.test.CustomTag,并最终在com.test内部寻找一个内部类?在任何情况下,将CustomTag移动到另一个包(或移动或重命名com.Test)都解决了这个问题。

我也遇到了类似的问题。 Jetty但自定义标记文件(无标记库)

我将放弃这里,因为泰勒的帖子(7月10日10:45)。我可以向码头上的人群陈述我的情况。我无法将自定义标记移动到另一个包中,因为它是标记文件,并且没有声明包

在Eclipse中,它工作得很好。所有Junit测试都运行绿色mvn测试“与PWC6033一起失败,但没有进一步的详细信息。我只能猜测标记文件,它在部署到服务器时显然运行正确

如果jetty/maven没有正确解析导入,那么对我来说这听起来像个bug

为了完整起见,这里是我的标记文件,位于/WEB-INF/tags/ognl.tag



其中,WebUtils接受HttpServletRequest以获取属性值和另一个参数,该参数将一些内容打印到标准输出中。

得到了解决方案。虽然我的eclipse在编译时没有显示错误。Jetty在运行时未找到我添加的新类属性。因为maven还没有生成它

我运行了这两个命令,之后一切正常。 1.清理
2.mvn安装-DskipTests

因此,在windows上,我现在尝试使用1.6 JDK(而不是默认的JRE)在运行jetty时运行应用程序,但这也会产生同样的问题。
<%@ taglib uri="http://test.com/test.tld" prefix="test" %>
Hi
<test:custom/>
<%@tag import="de.mypackage.WebUtils"
%><%@tag body-content="empty"
%><%@attribute name="value" required="true"
%><%=WebUtils.ognl(request, value)%>