当ant文件运行Worklight任务时,我正在尝试诊断该文件中的故障。我有一个小ant文件,其中包含对Worklight任务的简单引用。这是正确的。
<target name="rawBuildApplication" >
<app-builder
applicationFolder="${applicationSource}"
environments="mobilewebapp"
nativeProjectPrefix="xxx"
outputFolder="${outputFolder}"/>
</target>
然而,当我从构建控制ant文件(实际上是从RTC构建系统)调用这个ant文件时,我会遇到一个失败(如下),显示工作灯无法找到apacheJava类。我认为存在一些简单的环境差异,也许是类路径。如果我知道Worklight是从哪里加载apache commons的,那么弄清楚它可能会有所帮助。现在,我在我的环境中看不到任何指向任何apacheJar的工作实例。
myAntFile.xml:146: java.lang.NoSuchMethodError: org.apache.commons.io.FileUtils.deleteQuietly(Ljava/io/File;)Z
at com.worklight.builder.util.BuilderUtils.<clinit>(BuilderUtils.java:672)
at com.worklight.builder.config.UserBuildConfiguration$Builder.<init>(UserBuildConfiguration.java:203)
at com.worklight.ant.builders.ApplicationBuilderTask.createBuildConfiguration(ApplicationBuilderTask.java:149)
at com.worklight.ant.builders.ApplicationBuilderTask.execute(ApplicationBuilderTask.java:80)
编辑:原因是使用-lib添加RTC工具包目录,这到底是为什么冲突,以及如何解决尚未确定的
通常意味着您的类路径中有commons jar的版本,它覆盖了worklight-ant.jar中打包的版本
djna提供的其他信息:我可以确认,当将Rational Team Concert(RTC)3.0工具包添加到ant类路径时,无论是显式使用-lib,还是在RTC Build定义中选择该选项时,都会将一些冲突的commons jar添加到类路径中。Worklight将所需的类打包在其jar中,但-lib文件夹似乎优先。
我的解决方法是用以后的jar替换冲突的jar。我用过这些罐子
commons-io-2.4.jar
commons-codec-1.8.jar
httpclient-4.2.5.jar
httpcore-4.2.4.jar
httpmime-4.2.5.jar
我想另一种选择是升级到更新的RTC,但在我们的环境中,这目前是不可能的。