AntClassLoader не может быть приведен к URLClassLoader - PullRequest
3 голосов
/ 17 ноября 2009

У меня есть задача Ant для компиляции jsp файлов с помощью Jasper. Первым шагом является генерация 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)
        ...

Как мне справиться с этой проблемой? Спасибо!

Claudio

Ответы [ 3 ]

2 голосов
/ 17 ноября 2009

Я не думаю, что вы должны вызывать 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 голос
/ 17 ноября 2009

Нашел проблему. В случае неправильной цепочки зависимостей между задачами Ant папка веб-приложения была пустой без какой-либо JSP. Исправил цепочку и запустил задачу Jasper с JSP, все в порядке. Спасибо за помощь. Claudio

1 голос
/ 17 ноября 2009

Попробуйте

fork="true"

для запуска отдельной JVM вместо наследования Ant JVM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...