我已将J2EE Web应用程序从jdk6,tomcat6升级到jdk7和tomcat7 但是,部署teamcity时会出现以下错误。
[xmltask] java.lang.NoClassDefFoundError:org / apache / xpath / XPathAPI
java.lang.NoClassDefFoundError: org/apache/xpath/XPathAPI
at com.oopsconsultancy.xmltask.jdk14.XPathAnalyser14.analyse(XPathAnalyser14.java:29)
at com.oopsconsultancy.xmltask.XmlReplace.apply(XmlReplace.java:72)
at com.oopsconsultancy.xmltask.XmlReplacement.apply(XmlReplacement.java:61)
at com.oopsconsultancy.xmltask.ant.XmlTask.processDoc(XmlTask.java:707)
at com.oopsconsultancy.xmltask.ant.XmlTask.execute(XmlTask.java:676)
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.Target.performTasks(Target.java:369)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:37)
at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382)
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.Target.performTasks(Target.java:369)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
at org.apache.tools.ant.Main.runBuild(Main.java:668)
at org.apache.tools.ant.Main.startAnt(Main.java:187)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
Caused by: java.lang.ClassNotFoundException: org.apache.xpath.XPathAPI
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 25 more
答案 0 :(得分:4)
缺少的类包含在xalan-2.7.0中(参见Maven central)。所以我认为问题是你的类路径是如何设置的。
考虑到这似乎是xmltask任务报告的错误,这是否意味着ANT会抛出错误?
Google发现以下示例可能是您问题的答案:
将xalan jar添加到taskdef的类路径中:
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask">
<classpath>
<pathelement path="${common.lib.dir}/xmltask-1.15.1.jar" />
<pathelement path="${common.lib.dir}/xalan-2.7.1.jar"/>
</classpath>
</taskdef>
答案 1 :(得分:1)
如果使用maven将此添加到您的依赖项部分:
<dependency>
<groupId>xalan</groupId>
<artifactId>xalan</artifactId>
<version>2.7.0</version>
</dependency>
答案 2 :(得分:0)
我不确定但是,我猜这个名为xalan-2.4.0.jar的jar丢失了 请下载并放入其中。
答案 3 :(得分:0)
将xpath添加到类路径并再次尝试部署。如果您不确定需要在xpathapi jar的tomcat库文件夹中搜索哪个xpath jar
Xpathapi是一个用于评估java中xpath(与xml相关)的jar。如果您不确定需要哪个版本,请谷歌搜索并获取最新的xpath api jar。
答案 4 :(得分:0)
现在我只是删除 来自我的build.xml,以及它的工作原理。 我知道它不是解决方案,但我们必须提供。
答案 5 :(得分:0)
在Build.xml中,将java版本更改为1.7,将类路径XMLTask从1.15.1更改为1.16.1 ..它可以正常工作
答案 6 :(得分:0)
这是我解决这个问题的方法,包括 Xalan 和序列化
更新build.xml以在路径中包含这些jar
<taskdef name="xmltask" classname="com.oopsconsultancy.xmltask.ant.XmlTask">
<classpath>
<pathelement location="../xmltask-v1.14.jar"/>
<pathelement path="../xalan-j2-2.7.0.jar"/>
<pathelement path="../serializer-2.7.0.jar"/>
</classpath>
</taskdef>
这应该让它运行。
答案 7 :(得分:0)
您应该删除import org.apache.xpath.operations.String;
。