如何在ant build中使用第三方罐子覆盖特定的jre jar

时间:2013-03-09 10:10:26

标签: ant

我正在使用Ant 1.7.1在eclipse中构建我们的应用程序。我的应用程序将部署在WAS 6.1上。因为我在我的代码中使用sun.security。*包类和子包(我知道不建议使用此包,但没有其他选项)。

当我在WAS中部署耳朵时,我得到了sun.security.x509.AlgorithmId类的ClassDefNotFoundError。我发现IBM Jre中所需的包中没有这个类(这就是为什么不建议使用sun。包的原因。)

我必须将IBM jar放入我的开发类路径中,并使eclipse使用这些jar而不是我的本地JRE jar,将IBM jar放在eclipse中的JRE jar之前 - 订单和导出。这很好。

现在,我的问题是,如何在ANT中对罐子进行相同的排序。我知道如何在ANT类路径中指定jar的顺序。但是,如何将IBM罐子放在ANT的JRE罐子之前?

我尝试在引导类路径中设置IBM jar。但是这样做,ANT无法找到java.lang,因为java classpath现在不在引导类路径中。

              <javac  source="1.5"
            target="1.5"
            bootclasspathref="project.class.path"
            destdir = "${build.classes.dir}"
            srcdir = "${work.dir}/src" 
            debug="true"
            encoding="UTF-8"
    >
    <classpath path="${java.library.path}"/>

    </javac>

请告知如何完成这项工作。

任何帮助将不胜感激。感谢

1 个答案:

答案 0 :(得分:0)

我得到了一个解决方案。我对'javac'任务进行了以下更改:

      <javac  source="1.5"
              target="1.5"
              destdir = "${build.classes.dir}"
              srcdir = "${work.dir}/src" 
              debug="true"
              encoding="UTF-8"
      >
       **<compilerarg value="-Xbootclasspath/p:${toString:project.class.path}"/>**
     </javac>

Ant有效!!