【问题标题】:Build error: NoClassDefFoundError: org/apache/xpath/XPathAPI [duplicate]构建错误:NoClassDefFoundError:org/apache/xpath/XPathAPI [重复]
【发布时间】:2014-06-17 19:33:20
【问题描述】:

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

【问题讨论】:

  • XPathAPI 不在您的类路径中
  • 对不起,xpathAPI 是什么?请告诉我,以便我可以添加它
  • @mark o'connor 这不是重复的(我已经添加了 xalan-2.7.1.jar 但问题没有解决)
  • 显然它不在类路径中。 Xalan 包含此类,请参阅:search.maven.org/…

标签: java xpath ant teamcity


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      1. 下载xalan-j2-2.7.0.jar & serializer-2.7.0.jar
      2. 更新 build.xml 以在路径中包含这些 jars

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

        这应该让它运行起来。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

            缺少的类包含在 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>
            

            【讨论】:

            • 我已经在类路径中有这些条目,想知道这里有什么问题
            【解决方案7】:

            将 xpath 添加到您的类路径并再次尝试部署。如果您不确定需要哪个 xpath jar,请在 tomcat 库文件夹中搜索 xpathapi jar

            Xpathapi 是一个用于在 java 中评估 xpath(与 xml 相关)的 jar。如果你不确定你需要哪个版本,谷歌它并获取最新的 xpath api jar。

            【讨论】:

            • 我试过这个选项,但它对我没有帮助。
            【解决方案8】:

            我不确定,但我猜缺少名为 xalan-2.4.0.jar 的 jar 请下载并放入其中。

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

            【讨论】:

            • 已经有xalan-2.7.0.jar
            • 我认为版本很重要
            • 我同意,但我不这么认为(恕我直言)
            猜你喜欢
            • 2012-11-16
            • 1970-01-01
            • 2018-09-13
            • 1970-01-01
            • 1970-01-01
            • 2020-10-14
            • 2013-03-25
            • 1970-01-01
            • 2018-05-08
            相关资源
            最近更新 更多