Java AntClassLoader无法强制转换为URLClassLoader

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="

我有一个用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="-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" />