生成错误:NoClassDefFoundError:org/apache/xpath/XPathAPI



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

缺少的类包含在xalan-2.7.0中(请参阅Maven central(。所以我认为问题在于类路径是如何设置的。

考虑到这似乎是xmltask任务报告的错误,这是否意味着错误是由ANT抛出的?

谷歌发现了以下例子,这可能是你的问题的答案:

  • https://wiki.nci.nih.gov/display/NBIA/Migration+到+Java+7

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

如果使用maven,请将其添加到依赖项部分:

<dependency>
    <groupId>xalan</groupId>
    <artifactId>xalan</artifactId>
    <version>2.7.0</version>
</dependency>

我不确定,但我猜名为xalan-2.4.0.jar的jar不见了请下载并放在里面。

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

将xpath添加到类路径中,然后重试部署。如果您不确定您需要在tomcat库文件夹中搜索哪个xpath jar来查找xpathapi jar

Xpathapi是一个jar,用于评估java中的xpath(与xml相关(。如果您不确定需要哪个版本,请在谷歌上搜索并获取最新的xpathapijar。

现在我只删除从我的build.xml,它正在工作。我知道这不是一个解决方案,但我们必须交付。

在Build.xml中,将java版本更改为1.7,将类路径XMLTask从1.15.1更改为1.16.1。它可以使用

您应该删除import org.apache.xpath.operations.String;

这就是我解决这个问题的方法,包括XalanSerializer

  1. 下载xalan-j2-2.7.0.jar&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>
    

这应该能让它运转起来。

相关内容

  • 没有找到相关文章

最新更新