2011-05-02 68 views
0

在Weblogic 10.3上,我的企业应用程序包含一个运行ant脚本的web服务。我的问题是,由于java.lang.ClassNotFoundExceptions,我无法运行自定义任务。集成的ant - taskdef类加载器问题

(这一切运作良好在Tomcat 5.5)

我的任务实现可以在4个不同的地方找到:/富

  • something.ear/APP-INF/lib中/ antaddon.jar /bar/MyTask.class
  • something.ear/Webservice.war/WEB-INF/lib目录/ antaddon.jar!/foo/bar/MyTask.class
  • something.ear/Webservice.war/WEB-INF/classes/foo/bar/MyTask.class
  • server/lib/antad don.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) 

你能帮助我如何解决这个问题?

回答

0

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