构建错误:NoClassDefFoundError:org / apache / xpath / XPathAPI

时间:2014-05-01 10:12:26

标签: java xpath ant teamcity

我已将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

8 个答案:

答案 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丢失了 请下载并放入其中。

http://www.java2s.com/Code/Jar/x/Downloadxalan240jar.htm

答案 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 序列化

  1. 下载xalan-j2-2.7.0.jar&amp; serializer-2.7.0.jar
  2. 更新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;