我有一个Ant任务用Jasper编译jsp文件。第一步是生成java文件:
<java classname="org.apache.jasper.JspC" fork="no" failonerror="true">
<classpath refid="my.class.path" />
<arg value="-uriroot" />
<arg value="${apps}" />
<arg value="-d" />
<arg value="${jsp}" />
<arg value="-p" />
<arg value="my.package.jsp" />
<arg value="-webinc" />
<arg value="${apps}/META-INF/gen-mappings.xml" />
<arg value="-webapp" />
<arg value="${apps}" />
</java>
当我启动此任务时,我得到:
BUILD FAILED
java.lang.ClassCastException: org.apache.tools.ant.AntClassLoader cannot be cast
to java.net.URLClassLoader
at org.apache.jasper.compiler.JspRuntimeContext.<init>(JspRuntimeContext
.java:113)
at org.apache.jasper.JspC.initServletContext(JspC.java:1257)
at org.apache.jasper.JspC.execute(JspC.java:1118)
at org.apache.jasper.JspC.main(JspC.java:243)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
我该如何处理这个问题? 谢谢!
克劳迪奥
答案 0 :(得分:2)
我认为你不应该像这样直接调用JspC
。 Tomcat专门为此目的提供Ant任务,它可以为您做必要的类加载器体操
http://tomcat.apache.org/tomcat-6.0-doc/jasper-howto.html#Web%20Application%20Compilation
<jasper
validateXml="false"
uriroot="${webapp.path}"
webXmlFragment="${webapp.path}/WEB-INF/generated_web.xml"
outputDir="${webapp.path}/WEB-INF/src" />
答案 1 :(得分:1)
尝试
fork="true"
启动一个单独的JVM,而不是继承Ant JVM。
答案 2 :(得分:1)
发现问题。 对于Ant任务之间的错误依赖关系链,Web应用程序文件夹为空,没有任何JSP。 纠正了链并用一些JSP启动了jasper任务,一切正常。 感谢帮助。 克劳迪奥