【问题标题】:Integrated ant - taskdef classloader issue集成 ant - taskdef 类加载器问题
【发布时间】:2011-08-17 01:02:16
【问题描述】:

在 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/classes/foo/bar/MyTask.class
  • server/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)

你能帮我解决这个问题吗?

【问题讨论】:

    标签: java ant weblogic taskdef


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多