Java 构建错误:NoClassDefFoundError:org/apache/xpath/XPathAPI
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/23405724/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Build error: NoClassDefFoundError: org/apache/xpath/XPathAPI
提问by Divya
I have upgraded my J2EE web application from jdk6,tomcat6 to jdk7 and tomcat7 but while deploying teamcity is giving following error.
我已将 J2EE Web 应用程序从 jdk6、tomcat6 升级到 jdk7 和 tomcat7,但是在部署 teamcity 时出现以下错误。
[xmltask] java.lang.NoClassDefFoundError: org/apache/xpath/XPathAPI
[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.run(URLClassLoader.java:366)
at java.net.URLClassLoader.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
回答by Akash kumar
I am not sure but, i guess jar named xalan-2.4.0.jar is missing please download it and place inside.
我不确定,但是我猜缺少名为 xalan-2.4.0.jar 的 jar,请下载它并放在里面。
回答by Biswajit_86
Add xpath to your classpath and try the deploy again. If you are not sure which xpath jar you need search in the tomcat libraries folder for xpathapi jar
将 xpath 添加到您的类路径并再次尝试部署。如果您不确定需要在 xpathapi jar 的 tomcat 库文件夹中搜索哪个 xpath jar
Xpathapi is a jar used for evaluating xpaths (related to xml) in java. if you are not sure which version you need, google for it and fetch the latest xpath api jar .
Xpathapi 是一个用于在 java 中评估 xpaths(与 xml 相关)的 jar。如果你不确定你需要哪个版本,谷歌搜索并获取最新的 xpath api jar 。
回答by Mark O'Connor
The missing class is contained in xalan-2.7.0 (See Maven central). So I think the problem is how your classpath has been set.
缺少的类包含在 xalan-2.7.0 中(请参阅Maven central)。所以我认为问题在于您的类路径是如何设置的。
Considering that this appears to be an error reported by the xmltasktask, does this mean the error is being thrown by ANT?
考虑到这似乎是xmltask任务报告的错误,这是否意味着该错误是由 ANT 抛出的?
Google found the following example which might be the answer to your problems:
Google 发现以下示例可能可以解决您的问题:
Add the xalan jar to the classpath of your taskdef:
将 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>
回答by Divya
For now I just remove from my build.xml, and its working. I know its not a solution but we have to deliver.
现在我只是从我的 build.xml 中删除,它的工作原理。我知道这不是解决方案,但我们必须提供。
回答by Himanshu Arora
In Build.xml, change the java version to 1.7 and classpath XMLTask from 1.15.1 to 1.16.1.. It works
在 Build.xml 中,将 java 版本更改为 1.7,将类路径 XMLTask 从 1.15.1 更改为 1.16.1 .. 有效
回答by Cyclotron3x3
This is how I solved this, inlcuding Xalanand Serializer
这就是我解决这个问题的方法,包括Xalan和Serializer
- Download xalan-j2-2.7.0.jar& serializer-2.7.0.jar
Update build.xml to include these jars in path
<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>
This should get it running.
- 下载xalan-j2-2.7.0.jar& serializer-2.7.0.jar
更新 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>
这应该让它运行。
回答by StarCrafter
if using maven add this to your dependencies section:
如果使用 maven 将此添加到您的依赖项部分:
<dependency>
<groupId>xalan</groupId>
<artifactId>xalan</artifactId>
<version>2.7.0</version>
</dependency>
回答by Alex78191
You should remove import org.apache.xpath.operations.String;
.
你应该删除import org.apache.xpath.operations.String;
.