JRuby / Nokogiri не может найти библиотеки Java XML в Mule ESB 3 - PullRequest
1 голос
/ 22 июля 2011

У меня проблемы с получением драгоценного камня JRuby Nokogiri. Работает в джирбе. Я использую Java 6 на Mac OS X Lion. JRuby - это 1.6.3.

Вы знаете, как это решить? StackTrace:

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 Ответ

1 голос
/ 23 июля 2011

DocumentBuilderFactory.newInstance(String, ClassLoader) - это новый метод в Java 6. Похоже, у вас есть еще один jar в вашем classpath, который содержит более старую версию этого класса. Вы можете увидеть потенциальный список фляг, которые могли бы содержать класс в jarfinder.com . Если вы можете просматривать свой проект в Eclipse, вы можете проверить, какие файлы содержат класс DocumentBuilderFactory, с помощью диалогового окна «Открыть тип».

...