使用XmlUtil.serialize()时,org.apache.xml.serializer.ToXMLSAXHandler无法强制转换为JBOSS中的org.apache.xml.serializer.SerializationHandler

问题描述 投票:2回答:2

我试图使用XmlParser从xml文件中删除和添加标签。以下是我的代码块,在使用“grails run-app”命令部署的grails应用程序中执行时运行正常:

def parser = new XmlParser()
def xmlTemplate = parser.parse(file1)
def origFile  = parser.parse(file2)

for (def n : origFile.cars)
{
    origFile.remove(n)
}


def children = origFile.children()
int i = 0 ; 
for (def n : xmlTemplate.cars)
{
  children.add(i,n)
   i++
}

new File(finalFileName).write( XmlUtil.serialize(origFile) )

但是,当我在JBOSS服务器上部署此代码作为战争时,它会在调用时抛出以下错误:

13:50:36,312 INFO  [stdout] (http-/10.64.96.82:8080-28) org.apache.xml.serializer.utils.WrappedRuntimeException: org.apache.xml.serializer.ToXMLSAXHandler cannot be cast to org.apache.xml.serializer.SerializationHandler
13:50:36,312 INFO  [stdout] (http-/10.64.96.82:8080-28)     at org.apache.xml.serializer.SerializerFactory.getSerializer(SerializerFactory.java:179)
13:50:36,312 INFO  [stdout] (http-/10.64.96.82:8080-28)     at org.apache.xalan.transformer.TransformerIdentityImpl.createResultContentHandler(TransformerIdentityImpl.java:260)
13:50:36,312 INFO  [stdout] (http-/10.64.96.82:8080-28)     at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:330)
13:50:36,312 INFO  [stdout] (http-/10.64.96.82:8080-28)     at groovy.xml.XmlUtil.serialize(XmlUtil.java:448)
13:50:36,312 INFO  [stdout] (http-/10.64.96.82:8080-28)     at groovy.xml.XmlUtil.serialize(XmlUtil.java:437)
13:50:36,312 INFO  [stdout] (http-/10.64.96.82:8080-28)     at groovy.xml.XmlUtil.serialize(XmlUtil.java:179)
13:50:36,312 INFO  [stdout] (http-/10.64.96.82:8080-28)     at groovy.xml.XmlUtil.serialize(XmlUtil.java:88)
13:50:36,312 INFO  [stdout] (http-/10.64.96.82:8080-28)     at groovy.xml.XmlUtil$serialize.call(Unknown Source)
13:50:36,312 INFO  [stdout] (http-/10.64.96.82:8080-28)     at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
13:50:36,312 INFO  [stdout] (http-/10.64.96.82:8080-28)     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
13:50:36,312 INFO  [stdout] (http-/10.64.96.82:8080-28)     at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)

我在https://issues.jboss.org/browse/JBEAP-19上发现了一个类似的问题,建议从包中删除xalan serializer-2.7.1.jar,从应用程序之战中删除这个jar后它确实工作正常。 jar serializer-2.7.1.jar是我的war文件的一部分,因为我使用“grails war”命令创建了战争,我不知道它在哪里使用。我的应用程序运行正常后,删除jar所以它似乎grails框架也没有在任何地方内部使用这个jar。

任何人都可以解释这个问题的根本原因,以及grails app中serializer-2.7.1.jar的用途是什么?

grails groovy jboss
2个回答
2
投票

为了他人的利益:似乎OP的答案嵌入在这个问题中:

我在https://issues.jboss.org/browse/JBEAP-19上发现了一个类似的问题,建议从包中删除xalan serializer-2.7.1.jar,从应用程序之战中删除这个jar后它确实工作正常。 jar serializer-2.7.1.jar是我的war文件的一部分,因为我使用“grails war”命令创建了战争,我不知道它在哪里使用。我的应用程序运行正常后,删除jar所以它似乎grails框架也没有在任何地方内部使用这个jar。


0
投票

我有同样的问题用这些罐子建立我的docbook xmls。在我的ant构建外部工具配置中,运行时JRE被设置为在与工作空间相同的JRE中运行在jre1.8.0帮助下指定单独的JRE(尽管我的工作空间JRE设置为相同的JRE。)

© www.soinside.com 2019 - 2024. All rights reserved.