有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用ANT运行我的应用程序时,找不到XPath实现

我编写了一个应用程序,它使用XPath查询一些XML配置文件。当我在eclipse中运行它时,它工作得很好。我还编写了一个运行应用程序的ant目标。但是,当从ant运行该应用程序时,它会给我一个运行时异常。例外情况是:
XPathFactory#newInstance failed to create an XPathFactory for the default object model: http://java.sun.com/jaxp.xpath/dom
我正在使用JDK1.6,它应该已经有了XPath的实现。有什么我遗漏的吗

编辑1:添加从ANT获得的完整堆栈跟踪。我使用的是1.5法规遵从性

Detected Java version: 1.5 in: C:\Java\jdk1.6.0_02\jre
Detected OS: Windows XP
parsing buildfile C:\Automation\LocalizationResourceAnalyzer-int\Tools\LocalizationResourceAnalyzer\dist\run_lora.xml with URI = file:///C:/Automation/LocalizationResourceAnalyzer-int/Tools/LocalizationResourceAnalyzer/dist/run_lora.xml
Project base dir set to: C:\Automation\LocalizationResourceAnalyzer-int\Tools\LocalizationResourceAnalyzer\dist
Build sequence for target(s) `run_all' is [run_all]
Complete build sequence is [run_all, run, ]

run_all:
Project base dir set to: C:\Automation\LocalizationResourceAnalyzer-int\Tools\LocalizationResourceAnalyzer\dist
  [antcall] calling target(s) [run] in build file C:\Automation\LocalizationResourceAnalyzer-int\Tools\LocalizationResourceAnalyzer\dist\run_lora.xml
parsing buildfile C:\Automation\LocalizationResourceAnalyzer-int\Tools\LocalizationResourceAnalyzer\dist\run_lora.xml with URI = file:///C:/Automation/LocalizationResourceAnalyzer-int/Tools/LocalizationResourceAnalyzer/dist/run_lora.xml
Project base dir set to: C:\Automation\LocalizationResourceAnalyzer-int\Tools\LocalizationResourceAnalyzer\dist
Override ignored for property config.dir
Override ignored for property report.dir
Build sequence for target(s) `run' is [run]
Complete build sequence is [run, run_all, ]
  [antcall] Entering C:\Automation\LocalizationResourceAnalyzer-int\Tools\LocalizationResourceAnalyzer\dist\run_lora.xml...
Build sequence for target(s) `run' is [run]
Complete build sequence is [run, run_all, ]

run:
     [echo] ant.java.version: 1.5
     [echo] C:\apache-ant-1.6.5\lib\ant-launcher.jar;C:\Program Files\Common Files\Compuware\DLM40JNI.jar;C:\apache-ant-1.6.5\lib\ant-antlr.jar;C:\apache-ant-1.6.5\lib\ant-apache-bcel.jar;C:\apache-ant-1.6.5\lib\ant-apache-bsf.jar;C:\apache-ant-1.6.5\lib\ant-apache-log4j.jar;C:\apache-ant-1.6.5\lib\ant-apache-oro.jar;C:\apache-ant-1.6.5\lib\ant-apache-regexp.jar;C:\apache-ant-1.6.5\lib\ant-apache-resolver.jar;C:\apache-ant-1.6.5\lib\ant-commons-logging.jar;C:\apache-ant-1.6.5\lib\ant-commons-net.jar;C:\apache-ant-1.6.5\lib\ant-icontract.jar;C:\apache-ant-1.6.5\lib\ant-jai.jar;C:\apache-ant-1.6.5\lib\ant-javamail.jar;C:\apache-ant-1.6.5\lib\ant-jdepend.jar;C:\apache-ant-1.6.5\lib\ant-jmf.jar;C:\apache-ant-1.6.5\lib\ant-jsch.jar;C:\apache-ant-1.6.5\lib\ant-junit.jar;C:\apache-ant-1.6.5\lib\ant-launcher.jar;C:\apache-ant-1.6.5\lib\ant-netrexx.jar;C:\apache-ant-1.6.5\lib\ant-nodeps.jar;C:\apache-ant-1.6.5\lib\ant-starteam.jar;C:\apache-ant-1.6.5\lib\ant-stylebook.jar;C:\apache-ant-1.6.5\lib\ant-swing.jar;C:\apache-ant-1.6.5\lib\ant-trax.jar;C:\apache-ant-1.6.5\lib\ant-vaj.jar;C:\apache-ant-1.6.5\lib\ant-weblogic.jar;C:\apache-ant-1.6.5\lib\ant-xalan1.jar;C:\apache-ant-1.6.5\lib\ant-xslp.jar;C:\apache-ant-1.6.5\lib\ant.jar;C:\apache-ant-1.6.5\lib\bsf.jar;C:\apache-ant-1.6.5\lib\cruisecontrol-antlib.jar;C:\apache-ant-1.6.5\lib\js.jar;C:\apache-ant-1.6.5\lib\junit.jar;C:\apache-ant-1.6.5\lib\statcvs.jar;C:\apache-ant-1.6.5\lib\xercesImpl.jar;C:\apache-ant-1.6.5\lib\xml-apis.jar;C:\Java\jdk1.6.0_02\lib\tools.jar
     [java] Running in same VM Executing 'com.ti.et.swtest.l10n.lora.Lora' with arguments:
     [java] '-conf'
     [java] 'C:\Automation\LocalizationResourceAnalyzer-int\Tools\LocalizationResourceAnalyzer\dist\config\Nspire\product_bundles.xml'
     [java] '-locales'
     [java] 'C:\Automation\LocalizationResourceAnalyzer-int\Tools\LocalizationResourceAnalyzer\dist\config\Nspire\supported_locales.xml'
     [java] '-xrules'
     [java] 'C:\Automation\LocalizationResourceAnalyzer-int\Tools\LocalizationResourceAnalyzer\dist\config\Nspire\exclusion_rules.xml'
     [java] '-loc'
     [java] 'C:\LoRA_Reports\Nspire\localization_report.xml'
     [java] 
     [java] The ' characters around the executable and arguments are
     [java] not part of the command.
     [java] Feb 2, 2010 6:28:07 PM com.ti.et.swtest.l10n.lora.Lora main
     [java] INFO: Localization Resource Analyzer (LoRA) started.
     [java] Feb 2, 2010 6:28:07 PM com.ti.et.swtest.l10n.lora.Lora loadLocales
     [java] INFO: Loading locales from: C:\Automation\LocalizationResourceAnalyzer-int\Tools\LocalizationResourceAnalyzer\dist\config\Nspire\supported_locales.xml
     [java] java.lang.RuntimeException: XPathFactory#newInstance() failed to create an XPathFactory for the default object model: http://java.sun.com/jaxp/xpath/dom with the XPathFactoryConfigurationException: javax.xml.xpath.XPathFactoryConfigurationException: No XPathFactory implementation found for the object model: http://java.sun.com/jaxp/xpath/dom
     [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:180)
     [java]     at org.apache.tools.ant.taskdefs.Java.run(Java.java:710)
     [java]     at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:178)
     [java]     at org.apache.tools.ant.taskdefs.Java.execute(Java.java:84)
     [java]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
     [java]     at org.apache.tools.ant.Task.perform(Task.java:364)
     [java]     at org.apache.tools.ant.Target.execute(Target.java:341)
     [java]     at org.apache.tools.ant.Target.performTasks(Target.java:369)
     [java]     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
     [java]     at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:37)
     [java]     at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
     [java]     at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382)
     [java]     at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:107)
     [java]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
     [java]     at org.apache.tools.ant.Task.perform(Task.java:364)
     [java]     at org.apache.tools.ant.Target.execute(Target.java:341)
     [java]     at org.apache.tools.ant.Target.performTasks(Target.java:369)
     [java]     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
     [java]     at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
     [java]     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
     [java]     at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
     [java]     at org.apache.tools.ant.Main.runBuild(Main.java:668)
     [java]     at org.apache.tools.ant.Main.startAnt(Main.java:187)
     [java]     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
     [java]     at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
     [java] Caused by: java.lang.RuntimeException: XPathFactory#newInstance() failed to create an XPathFactory for the default object model: http://java.sun.com/jaxp/xpath/dom with the XPathFactoryConfigurationException: javax.xml.xpath.XPathFactoryConfigurationException: No XPathFactory implementation found for the object model: http://java.sun.com/jaxp/xpath/dom
     [java]     at javax.xml.xpath.XPathFactory.newInstance(XPathFactory.java:101)
     [java]     at com.ti.et.swtest.util.xml.XmlFile.(Unknown Source)
     [java]     at com.ti.et.swtest.util.xml.XmlFile.(Unknown Source)
     [java]     at com.ti.et.swtest.l10n.lora.Lora.loadLocales(Unknown Source)
     [java]     at com.ti.et.swtest.l10n.lora.Lora.main(Unknown Source)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     [java]     at java.lang.reflect.Method.invoke(Method.java:597)
     [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:202)
     [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:134)
     [java]     ... 24 more
     [java] --- Nested Exception ---
     [java] java.lang.RuntimeException: XPathFactory#newInstance() failed to create an XPathFactory for the default object model: http://java.sun.com/jaxp/xpath/dom with the XPathFactoryConfigurationException: javax.xml.xpath.XPathFactoryConfigurationException: No XPathFactory implementation found for the object model: http://java.sun.com/jaxp/xpath/dom
     [java]     at javax.xml.xpath.XPathFactory.newInstance(XPathFactory.java:101)
     [java]     at com.ti.et.swtest.util.xml.XmlFile.(Unknown Source)
     [java]     at com.ti.et.swtest.util.xml.XmlFile.(Unknown Source)
     [java]     at com.ti.et.swtest.l10n.lora.Lora.loadLocales(Unknown Source)
     [java]     at com.ti.et.swtest.l10n.lora.Lora.main(Unknown Source)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     [java]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
     [java]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     [java]     at java.lang.reflect.Method.invoke(Method.java:597)
     [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:202)
     [java]     at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:134)
     [java]     at org.apache.tools.ant.taskdefs.Java.run(Java.java:710)
     [java]     at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:178)
     [java]     at org.apache.tools.ant.taskdefs.Java.execute(Java.java:84)
     [java]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
     [java]     at org.apache.tools.ant.Task.perform(Task.java:364)
     [java]     at org.apache.tools.ant.Target.execute(Target.java:341)
     [java]     at org.apache.tools.ant.Target.performTasks(Target.java:369)
     [java]     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
     [java]     at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:37)
     [java]     at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
     [java]     at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382)
     [java]     at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:107)
     [java]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
     [java]     at org.apache.tools.ant.Task.perform(Task.java:364)
     [java]     at org.apache.tools.ant.Target.execute(Target.java:341)
     [java]     at org.apache.tools.ant.Target.performTasks(Target.java:369)
     [java]     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
     [java]     at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
     [java]     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
     [java]     at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
     [java]     at org.apache.tools.ant.Main.runBuild(Main.java:668)
     [java]     at org.apache.tools.ant.Main.startAnt(Main.java:187)
     [java]     at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
     [java]     at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
  [antcall] Exiting C:\Automation\LocalizationResourceAnalyzer-int\Tools\LocalizationResourceAnalyzer\dist\run_lora.xml.

BUILD SUCCESSFUL
Total time: 0 seconds


共 (4) 个答案

  1. # 1 楼答案

    • 如果您已经声明了系统属性或$JAVA_HOME/lib/jaxp。JAXP属性“javax.xml.xpath.XPathFactory:uri”的属性,并指定值“http://java.sun.com/JAXP.xpath/dom”,然后我建议将该值更改为“http://java.sun.com/JAXP/xpath/dom”
    • 如果正确声明了上述属性,请尝试完全删除该属性
    • 如果仍然不能正常工作,那么在实例化XPathFactory之前添加一些代码,以检测从哪个jar加载类。“请参阅ClassLoader.findResource(字符串名称)”。我看到Ant还打包了一个XMLAPI。jar有一个XPathFactoryFinder和XPathFactory的实现,这可能会干扰JDK中的类

  2. # 2 楼答案

    该异常看起来像来自XPathFactory类,因此java正在找到正确的库。相反,看起来XPathFactory正在崩溃。也许this有帮助

  3. # 3 楼答案

    我知道这是一个较老的线程,但是this post of mine可能会对这个问题有所帮助。它会找到您使用-D参数指定的XPathFactory,这是我从未见过的文档

  4. # 4 楼答案

    将属性fork="true"添加到ant脚本中的java任务中,以便在新的java虚拟机中运行您的类。ant中的某些内容可能与JDK中内置的XML库相冲突