2011-07-22 26 views
1

我遇到了JRuby gem Nokogiri無法正常工作的問題。它在jirb中工作。我在Mac OS X Lion上運行Java 6。 JRuby是1.6.3。JRuby/Nokogiri無法在Mule中找到Java XML庫ESB 3

你知道如何解決這個問題嗎?堆棧跟蹤:

INFO 2011-07-22 19:12:53,520 [Mule.app.deployer.monitor.1.thread.1] org.mule.module.launcher.DeploymentService: 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
+ Started app 'muleesb3-1.0-SNAPSHOT'     + 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

java.lang.NoSuchMethodError: javax.xml.parsers.DocumentBuilderFactory.newInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljavax/xml/parsers/DocumentBuilderFactory; 
    at nokogiri.XmlDocument.createNewDocument(XmlDocument.java:220) 
    at nokogiri.XmlDocument.<init>(XmlDocument.java:96) 
    at nokogiri.HtmlDocument.<init>(HtmlDocument.java:57) 
    at nokogiri.NokogiriService$2.allocate(NokogiriService.java:239) 
    at nokogiri.internals.HtmlDomParserContext.wrapDocument(HtmlDomParserContext.java:121) 
    at nokogiri.internals.XmlDomParserContext.parse(XmlDomParserContext.java:209) 
    at nokogiri.HtmlDocument.do_parse(HtmlDocument.java:89) 
    at nokogiri.HtmlDocument.read_memory(HtmlDocument.java:117) 
    at nokogiri.HtmlDocument$s$0$0$read_memory.call(HtmlDocument$s$0$0$read_memory.gen:65535) 
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:282) 
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:71) 
    at org.jruby.ast.FCallManyArgsNode.interpret(FCallManyArgsNode.java:60) 
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104) 
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71) 
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75) 
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:120) 
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:272) 
    at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:80) 

回答

1

DocumentBuilderFactory.newInstance(String, ClassLoader)是Java 6的新方法,這聽起來像你在你的類路徑中包含這個類的一個老版本的另一個罐子。您可以在jarfinder.com查看可能包含該類的可能的罐子列表。如果您能夠在Eclipse中查看您的項目,可以使用「打開類型」對話框檢查包含DocumentBuilderFactory類的jar。