开发者

When running my app with ANT, no XPath implementation can be found

I wrote an app that uses XPath to query some XML config files. When I run it in eclipse, it works just fine. I also wrote an ant target that runs the application. However, The app gives me a runtime exception when running it from ant. The exception says:

XPathFactory#newInstance failed to create an XPathFactory for the default object model: http://java.sun.com/jaxp.xpath/dom

I'm using JDK 1.6, which is supposed to have already an implementation for XPath. Is there something I'm missing?

Edit 1: Adding the complete stack trace gotten from ANT. I'm using 1.5 compliance.

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.XPathFac开发者_开发问答toryConfigurationException: 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


Add the attribute fork="true" to your java task in the ant script so that your class is run in a new java virtual machine. It's likely that something in ant is conflicting with the XML libraries built in to the JDK.


That exception looks like it is coming from the XPathFactory class, so java is finding the correct library. Rather it looks like XPathFactory is crashing. Perhaps this helps?


  • If you have declared a System property or $JAVA_HOME/lib/jaxp.properties for the JAXP property "javax.xml.xpath.XPathFactory:uri" and assigned the value "http://java.sun.com/jaxp.xpath/dom", then I would suggest changing that value to "http://java.sun.com/jaxp/xpath/dom".
  • If you do have the above property declared correctly, then try removing the property completely.
  • If it still does not work correctly, then add some code before you instantiate the XPathFactory to detect which jar the class is being loaded from. "See ClassLoader.findResource(String name)". I see that Ant also packages an xml-apis.jar which has an implementation of XPathFactoryFinder and XPathFactory and maybe this interferes with the classes in JDK.

HTH


I know this is an older thread, but this post of mine might shed some light on the issue. It finds the XPathFactory you specify using a -D parameter that I've never seen documented.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜