com.sun.org.apache.xerces.internal.dom.DocumentImpl无法强制转换为org.codehaus.plexus.util.xml.Xpp3Dom

时间:2010-02-03 11:31:46

标签: java casting maven

Afetr在这几周内使用Model库(参见this)获取了我的Maven pom.xml,我在尝试将ConfiguratonContainer写入pom.xml时跳过了这个错误。

Model的javadoc说:

  

public void setConfiguration(Object configuration)

Set the configuration as DOM object.

Parameters:
    configuration - 

所以我用Document(org.w3c.dom.Document)和xml解析器标准javax库制作了一些xml。你知道代码(通过所有的网络),但我把它粘贴在这里......

          DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder parser = factory.newDocumentBuilder();
            Document doc =parser.newDocument();

然后用元素声明,很多appendChild等来填充代码。

并试图让它发挥作用。似乎没有做好。 首先尝试使用

plugin.setConfiguration(doc);

但它没有用。 然后我试了

Obejct obj = doc;    
plugin.setConfiguration(obj);

但它不起作用。

然后我在网上搜索答案,猜猜......

它不起作用。

在所有的网络中都有0个人使用这个库(maven.model)。所以我又来了,请求帮助。

我的错误在哪里?我已经下载了库的源代码,试图查看错误在哪里,但似乎没问题(应该如此)。 我添加了stackrace以供参考

java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.DocumentImpl cannot be cast to org.codehaus.plexus.util.xml.Xpp3Dom
at org.apache.maven.model.io.xpp3.MavenXpp3Writer.writePlugin(MavenXpp3Writer.java:1472)
at org.apache.maven.model.io.xpp3.MavenXpp3Writer.writeBuild(MavenXpp3Writer.java:326)
at org.apache.maven.model.io.xpp3.MavenXpp3Writer.writeModel(MavenXpp3Writer.java:1093)
at org.apache.maven.model.io.xpp3.MavenXpp3Writer.write(MavenXpp3Writer.java:102)
at com.mapfre.mutua.PDA.model.GeneratePOM.createPOM(GeneratePOM.java:28)
at com.mapfre.mutua.PDA.prueba.MavenPOM.generatePOMWAR(MavenPOM.java:681)
at com.mapfre.mutua.PDA.prueba.GenerarPOMMapfreAction.execute(GenerarPOMMapfreAction.java:36)
at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58)
at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67)
at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:305)
at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:191)
at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:873)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)

1 个答案:

答案 0 :(得分:0)

好的问题解决了(我保证在服药期间再也不会问一些事了。)

我的主要问题是我能够理解“将配置设置为DOM对象”。 (来自javadoc)没有引用DOM典型对象,而是引用Xpp3Dom对象。

非常抱歉让你失去时间。

顺便说一下,这似乎会导致某种错误,我建议更改javadoc以便更容易理解。像“将配置设置为Xpp3Dom对象”。