集成ant - taskdef类加载器问题

时间:2011-05-02 14:41:18

标签: java ant weblogic taskdef

在Weblogic 10.3上,我的企业应用程序包含一个在其中运行ant脚本的Web服务。我的问题是由于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 /类/富/酒吧/ MyTask.class
  • 服务器/ LIB / 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 :(得分:0)

问题是我的prefer-application-packages指令错误,ant类不在org.apache.ant.*中,而在org.apache.tools.ant.*中。修复后,我的自定义类被加载并且从APP-INF/lib/antaddon.jar

运行良好