Ant+Weblogic - CreateProcess 错误=206

Posted

技术标签:

【中文标题】Ant+Weblogic - CreateProcess 错误=206【英文标题】:Ant+Weblogic - CreateProcess error=206 【发布时间】:2016-05-27 19:37:21 【问题描述】:

我正在尝试使用 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 类 weblogic.ant.taskdefs.management.WLDeploy 找不到 使用类加载器 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 用户 -password pass -deploy

[wldeploy] C:\Program Files (x86)\Jenkins\jobs\PROJ\workspace\build.xml:574: java.io.IOException: 无法运行程序“D:\jdk1.7\jre\bin\ java.exe": CreateProcess error=206, 文件名或扩展名太长

(以上是由托管在 Windows 机器上的 Jenkins 生成的)。

我感觉这是由于 weblogic jar 创建了一个对于 Windows 命令提示符来说太大的类路径,但我对 Ant 的缺乏经验让我怀疑。我已经研究过使用 manifestclasspath,但是缺乏经验又让我无法有效地实现它。

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

【问题讨论】:

【参考方案1】:

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

我记得,磁盘路径可以相对于路径 jar 本身。所以 Manifest.mf 可能看起来像这样:

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

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

&lt;jar destfile="pathing.jar"&gt; &lt;manifest&gt; &lt;attribute name="Class-Path" value="this.jar that.jar ../lib/other.jar"/&gt; &lt;/manifest&gt; &lt;/jar&gt;

【讨论】:

完美运行,正是我想要的!非常感谢!

以上是关于Ant+Weblogic - CreateProcess 错误=206的主要内容,如果未能解决你的问题,请参考以下文章

Weblogic Ant JWSC 任务生成 webservice war 文件

Weblogic Ant JWSC任务生成webservice war文件

在 Weblogic 10.3 上使用 ant 部署 WAR 时出现“Java 堆空间”错误

weblogic对JSP预编译weblogic读取JSP编译后的class文件ant中jspc预编译JSP

Weblogic:在ejb-jar文件中找不到EJB

使用Ant自动化发布web工程