Ant+Weblogic - CreateProcess 错误=206

Ant+Weblogic - CreateProcess error=206

我正在尝试使用 ant 将 ear 部署到 weblogic 服务器。

我从以下开始:

<target name="deploy">
     <taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy">
     <wldeploy action="deploy" name="projName" source="proj.ear" user="user" password="pass" adminurl="localhost:8050" targets="mytarget"/>
</target>

但是,这给了我以下错误:

taskdef class weblogic.ant.taskdefs.management.WLDeploy cannot be found using the classloader AntClassLoader[]

为了解决这个问题,我修改了 taskdef 以包含 weblogic jar 的路径。但是,现在我收到此错误:

[wldeploy] weblogic.Deployer -debug -verbose -noexit -name TPD -source C:\Program Files (x86)\Jenkins\jobs\PROJ\workspace\target\dist\proj.ear -targets mytarget -adminurl localhost:8050 -user user -password pass -deploy

[wldeploy] C:\Program Files (x86)\Jenkins\jobs\PROJ\workspace\build.xml:574: java.io.IOException: Cannot run program "D:\jdk1.7\jre\bin\java.exe": CreateProcess error=206, The filename or extension is too long

(以上内容由托管在 Windows 盒子上的 Jenkins 生成)。

我感觉这是由于 weblogic jar 创建的类路径对于 Windows 命令提示符来说太大了,但我对 Ant 的经验不足让我怀疑。我研究过使用 manifestclasspath,但再次缺乏经验阻止我有效地实施它。

对此有什么好的解决方法?

DOS 命令行在这方面非常有限。解决方法是创建 "pathing jar"。这是一个仅包含 aManifest.mf 文件的 jar,其 Class-Path 指定了您长长的 jar 列表等的磁盘路径。现在只需将此路径 jar 添加到您的命令行类路径。这通常比将实际资源打包在一起更方便。

我记得,磁盘路径可以与路径 jar 本身相关。所以 Manifest.mfmight 看起来像这样:

Class-Path: this.jar that.jar ../lib/other.jar

如果您的路径 jar 主要包含基础资源,那么它不会经常更改,但您可能仍希望在构建的某个位置生成它。例如:

<jar destfile="pathing.jar"> <manifest> <attribute name="Class-Path" value="this.jar that.jar ../lib/other.jar"/> </manifest> </jar>