Java AntClassLoader无法强制转换为URLClassLoader
我有一个用Jasper编译jsp文件的Ant任务。第一步是生成java文件:Java AntClassLoader无法强制转换为URLClassLoader,java,jsp,ant,Java,Jsp,Ant,我有一个用Jasper编译jsp文件的Ant任务。第一步是生成java文件: <java classname="org.apache.jasper.JspC" fork="no" failonerror="true"> <classpath refid="my.class.path" /> <arg value="-uriroot" /> <arg value="${apps}" /> <arg value="
<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)
...
生成失败
java.lang.ClassCastException:org.apache.tools.ant.AntClassLoader无法强制转换
到java.net.URLClassLoader
位于org.apache.jasper.compiler.JspRuntimeContext.(JspRuntimeContext
.java:113)
位于org.apache.jasper.JspC.initServletContext(JspC.java:1257)
位于org.apache.jasper.JspC.execute(JspC.java:1118)
位于org.apache.jasper.JspC.main(JspC.java:243)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
...
我如何处理这个问题?
谢谢
克劳迪奥试试看
fork="true"
启动一个单独的JVM,而不是继承Ant JVM。我认为您不应该像那样直接调用
JspC
。Tomcat专门为此提供了一个Ant任务,它可以为您完成必要的类装入器操作
找到了问题。
对于Ant任务之间的错误依赖链,web应用程序文件夹是空的,没有任何JSP。
更正了链并用一些JSP启动了jasper任务,一切正常。
谢谢你的帮助。
Claudio即使进行了这样的修改,也存在同样的问题。我通常同意使用jasper任务,但有几个选项可用作命令行开关,但JspC类中缺少setter。对于OP的问题,我还建议使用
jasper
task。即使进行了此修改,也会出现相同的问题。但在我的情况下,当我得到相同的异常(Java SE设置,而不是web)时,它仍然有效
<jasper
validateXml="false"
uriroot="${webapp.path}"
webXmlFragment="${webapp.path}/WEB-INF/generated_web.xml"
outputDir="${webapp.path}/WEB-INF/src" />