Интегрированный муравейник - Taskdef Classloader проблема - PullRequest
0 голосов
/ 02 мая 2011

В Weblogic 10.3 мое корпоративное приложение включает в себя веб-сервис, который запускает скрипты ant. Моя проблема в том, что я не могу запустить свои собственные задачи из-за java.lang.ClassNotFoundExceptions.

(Все это хорошо работает на Tomcat 5.5)

Моя реализация задачи может быть найдена в 4 разных местах:

  • something.ear / APP-INF / Lib / antaddon.jar! /Foo/bar/MyTask.class
  • something.ear / Webservice.war / WEB-INF / Lib / antaddon.jar! /Foo/bar/MyTask.class
  • something.ear / Webservice.war / WEB-INF / классы / Foo / бар / MyTask.class
  • Сервер / Библиотека / antaddon.jar! /Foo/bar/MyTask.class

Я вижу, что интегрированный Weblogic 10.3 модуль Ant 1.6.5 может вызвать проблемы как у меня Ant 1.8.0 в комплекте, поэтому я добавил

<prefer-application-packages>
    <package-name>antlr.*</package-name>

    <package-name>org.apache.ant.*</package-name>
    <package-name>org.apache.zip.*</package-name>

</prefer-application-packages>

в мой weblogic-application.xml, чтобы преодолеть это. (Это решило некоторые NoSuchMethodErrors ..) Однако моя задача все еще не найдена:

java.lang.ClassNotFoundException: foo.bar.MyTask.class
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)
    at org.apache.tools.ant.taskdefs.Definer.addDefinition(Definer.java:457)
    at org.apache.tools.ant.taskdefs.Definer.execute(Definer.java:183)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
    at org.apache.tools.ant.Task.perform(Task.java:364)
    at org.apache.tools.ant.Target.execute(Target.java:341)
    at org.apache.tools.ant.helper.ProjectHelper2.parse(ProjectHelper2.java:142)
    at org.apache.tools.ant.ProjectHelper.configureProject(ProjectHelper.java:91)

Можете ли вы помочь мне, как решить эту проблему?

1 Ответ

0 голосов
/ 03 мая 2011

Проблема заключалась в том, что моя директива предпочитать приложения-пакеты была неправильной, муравьиные классы не в org.apache.ant.*, а в org.apache.tools.ant.*.После исправления этот пользовательский класс загружается и хорошо работает с APP-INF/lib/antaddon.jar

...