在AIX平台上将ear文件部署到WLS 10.3时,我收到此错误.同样的耳朵在Windows/Linux平台上运行良好.
Caused by: java.lang.ClassCastException: org.apache.xerces.parsers.XIncludeAwareParserConfiguration incompatible with org.apache.xerces.xni.parser.XMLParserConfiguration
at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.<init>(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown Source)
at weblogic.xml.jaxp.WebLogicDocumentBuilderFactory.newDocumentBuilder(WebLogicDocumentBuilderFactory.java:140)
at com.bea.security.xacml.policy.PolicyUtils.getRootNode(PolicyUtils.java:54)
at com.bea.security.xacml.policy.PolicyUtils.read(PolicyUtils.java:86)
at com.bea.security.providers.xacml.store.BasePolicyStore.getAbstractPolicy(BasePolicyStore.java:1251)
at com.bea.security.providers.xacml.store.BasePolicyStore.readPolicy(BasePolicyStore.java:1231)
at com.bea.security.providers.xacml.store.BasePolicyStore.readPolicy(BasePolicyStore.java:1114)
at com.bea.security.providers.xacml.entitlement.PolicyManager.listPolicies(PolicyManager.java:747)
at weblogic.security.providers.xacml.DeployableAuthorizationProviderV2Helper.startDeployPolicies(DeployableAuthorizationProviderV2Helper.java:90)
at weblogic.security.providers.xacml.authorization.XACMLAuthorizationProviderImpl.startDeployPolicies(XACMLAuthorizationProviderImpl.java:269)
at com.bea.common.security.internal.legacy.service.PolicyDeployerProviderImpl$V2Adapter.startDeployPolicies(PolicyDeployerProviderImpl.java:69)
at com.bea.common.security.internal.service.PolicyDeploymentServiceImpl$DeploymentHandlerImpl.<init>(PolicyDeploymentServiceImpl.java:143)
at com.bea.common.security.internal.service.PolicyDeploymentServiceImpl$DeploymentHandlerImpl.<init>(PolicyDeploymentServiceImpl.java:129)
at com.bea.common.security.internal.service.PolicyDeploymentServiceImpl$ServiceImpl.startDeployPolicies(PolicyDeploymentServiceImpl.java:97)
at weblogic.security.service.WLSPolicyDeploymentServiceWrapper$DeploymentHandlerImpl.<init>(WLSPolicyDeploymentServiceWrapper.java:70)
at weblogic.security.service.WLSPolicyDeploymentServiceWrapper$DeploymentHandlerImpl.<init>(WLSPolicyDeploymentServiceWrapper.java:60)
at weblogic.security.service.WLSPolicyDeploymentServiceWrapper.startDeployPolicies(WLSPolicyDeploymentServiceWrapper.java:40)
at weblogic.security.service.AuthorizationManager.startDeployPolicies(AuthorizationManager.java:489)
at weblogic.servlet.security.internal.WebAppSecurityWLS.<init>(WebAppSecurityWLS.java:72)
at weblogic.servlet.security.internal.ServletSecurityManager.<init>(ServletSecurityManager.java:39)
at weblogic.servlet.internal.WebAppServletContext.<init>(WebAppServletContext.java:416)
at weblogic.servlet.internal.WebAppServletContext.<init>(WebAppServletContext.java:464)
at weblogic.servlet.internal.HttpServer.loadWebApp(HttpServer.java:414)
at weblogic.servlet.internal.WebAppModule.registerWebApp(WebAppModule.java:901)
at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:345)
Run Code Online (Sandbox Code Playgroud) 我收到这条消息:
javax.xml.parsers.FactoryConfigurationError:提供程序org.apache.xerces.jaxp.DocumentBuilderFactoryImp
但我似乎无法解决问题。我用谷歌搜索过,但找不到任何好的解决方案。
有谁知道可能出了什么问题吗?也许如何解决它:)
在Java 6中,整个xerces XML解析器/序列化器实现现在位于Java运行时(rt.jar)中.这些包已经在com.sun.*命名空间下移动,这使它们不受限制,以便在客户端代码中显式引用.使用解析器时这不是问题,解析器是通过javax API定义的工厂实例化的.
但是,我们的代码也使用xerces序列化(org.apache.xml.serialize.*).AFAICT,没有用于创建Serializer和OutputFormat实例的javax.xml API定义工厂.这似乎意味着获得一个的唯一方法是显式调用com.sun.org.apache.xml.serialize.*API.
我在javax.xml.stream中找到了序列化类,但它们似乎没有像xerces OutputFormat类那样提供任何输出格式化控件.
题:
是否有访问了Xerces序列化功能(其中一种方式是通过使用javax标准API在rt.jar中),而不包括xerces.jar的,也没有明确的实例化的com.sun.*类?
如果没有,是否有符合javax API的方式来实现相同的效果?
我想知道该xercesxmldom单元作为XML DOM实现之一发生了什么.
它似乎在Delphi XE中消失了.
为什么?
(我搜索了文档;找不到关于xercesxmldom消失的任何相关信息).
编辑:这些是我存档的来源:
R:\>dir /s /b xercesxmldom.pas
R:\D2006-Enterprise-D10-BDS-4.0\source\Win32\xml\xercesxmldom.pas
R:\D2007-Enterprise-D11-RadStudio-5.0\source\Win32\xml\xercesxmldom.pas
R:\D2009-Enterprise-D12-RadStudio-6.0\source\Win32\xml\xercesxmldom.pas
R:\D2010-Enterprise-D14-RadStudio-7.0\source\Win32\xml\xercesxmldom.pas
R:\D7.01.Architect\Source\Xml\xercesxmldom.pas
Run Code Online (Sandbox Code Playgroud)
R:\DXE-Enterprise-D15-RadStudio-8.0源树中没有任何内容......
--jeroen
我动态创建一个XML String(不读取文件).然后我使用Cocoon 3通过FOP将其转换为PDF.在中间某处的Xerces运行.当我使用硬编码的东西时,一切正常.一旦我将德语变音符号放入数据库并使用该数据丰富我的xml,我得到:
Caused by: org.apache.cocoon.pipeline.ProcessingException: Can't parse the XML string.
at org.apache.cocoon.sax.component.XMLGenerator$StringGenerator.execute(XMLGenerator.java:326)
at org.apache.cocoon.sax.component.XMLGenerator.execute(XMLGenerator.java:104)
at org.apache.cocoon.pipeline.AbstractPipeline.invokeStarter(AbstractPipeline.java:146)
at org.apache.cocoon.pipeline.AbstractPipeline.execute(AbstractPipeline.java:76)
at de.grobmeier.tab.webapp.modules.documents.InvoicePipeline.generateInvoice(InvoicePipeline.java:74)
... 87 more
Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 1 of 1-byte UTF-8 sequence.
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:684)
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:554)
Run Code Online (Sandbox Code Playgroud)
然后我调试了我的应用程序并发现,我的"Ä"(数据库中出现)的字节值为196,即十六进制的C4.这就是我所期望的:http://www.utf8-zeichentabelle.de/
我不知道为什么我的代码失败了.
然后我尝试手动添加BOM,如下所示:
byte[] bom = new byte[3];
bom[0] = (byte) 0xEF;
bom[1] = (byte) 0xBB;
bom[2] = (byte) 0xBF;
String myString = new String(bom) + inputString;
Run Code Online (Sandbox Code Playgroud)
我知道这不是很好,但我尝试了 - 当然它失败了.我试图在前面添加一个xml标头:
<?xml version="1.0" encoding="UTF-8"?>
Run Code Online (Sandbox Code Playgroud)
哪个也失败了.然后我把它结合起来.失败.
毕竟我尝试过这样的事情:
xmlInput = new String(xmlInput.getBytes("UTF8"), …Run Code Online (Sandbox Code Playgroud) 我的问题是解析具有maxOccurs大于5000(但不是unbounded)的元素的XSD架构.
这实际上是Xerces(我正在使用的版本2.9.1)或JAXP中的一个已知问题,如下所述:http://bugs.sun.com/view_bug.do;jsessionid=85335466c2c1fc52f0245d20b2e?bug_id= 4990915
我已经知道,如果我将XSD中的maxOccurs数字从大于5000的数字更改为unbounded一切正常.遗憾的是,在我的情况下,这不是一个选项(我不能插入XSD文件).
我的问题是:
谢谢!
I am deploying a J2EE web application in Websphere Application Server 8.5.
The web application has a shared library with all the third party libraries. All the internally coded libraries are inside the WEB-INF/lib folder.
The problem is that in only some jsps WAS it is throwing the following exception.
我认为它与xercesImpl-2.8.1.jar有关但我不明白为什么它会抛出这个异常以及它为什么只抛出一些页面.
在tomcat它完美地工作.
java.lang.ClassCastException: org.apache.xerces.jaxp.SAXParserFactoryImpl incompatible with javax.xml.parsers.SAXParserFactory
at javax.xml.parsers.SAXParserFactory.newInstance(Unknown Source)
at org.apache.taglibs.standard.tlv.JstlBaseTLV.validate(JstlBaseTLV.java:152)
at org.apache.taglibs.standard.tlv.JstlCoreTLV.validate(JstlCoreTLV.java:96)
at com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.validateTagLib(ValidateVisitor.java:1129)
at com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.visitJspRootStart(ValidateVisitor.java:491)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:233)
at com.ibm.ws.jsp.translator.visitor.JspVisitor.visit(JspVisitor.java:216)
at com.ibm.ws.jsp.translator.JspTranslator.processVisitors(JspTranslator.java:127)
at com.ibm.ws.jsp.translator.utils.JspTranslatorUtil.translateJsp(JspTranslatorUtil.java:254)
at com.ibm.ws.jsp.translator.utils.JspTranslatorUtil.translateJspAndCompile(JspTranslatorUtil.java:121)
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.translateJsp(AbstractJSPExtensionServletWrapper.java:535) …Run Code Online (Sandbox Code Playgroud) 当我在Xerces库中导入时,我似乎无法构建我的应用程序.由于之前的问题,我已经在使用multidex,因此我知道这一切都已正确设置.
我花了几天时间在线查看并尝试各种版本的Xerces并调整到我的build.gradle但无法解决问题.我已经尝试过清理重建,重新设置Android Studio /我的PC,使用jar直接编译,现在正式出于想法.
下面是我的build.gradle设置:
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "#packageid#"
minSdkVersion 18
targetSdkVersion 23
versionCode 1
versionName "0.8"
multiDexEnabled true
}
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
// compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:multidex:1.0.1'
compile 'com.google.android.gms:play-services:8.4.0'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'me.dm7.barcodescanner:zbar:1.8.4'
compile project(':rangebar-1.3')
compile('com.crashlytics.sdk.android:crashlytics:2.5.5@aar') {
transitive = true;
}
compile 'com.batch.android:batch-sdk:1.5'
compile 'xerces:xercesImpl:2.11.0' …Run Code Online (Sandbox Code Playgroud) 这是场景:
我捆绑了.xml应用程序在.jar文件中运行所需的几个(有些配置)文件.jar文件具有以下结构:
settings-1.0.0.jar
? resources/
? 1.xml
? 2.xml
? 3.xml
? META-INF/
? MANIFEST.MF
Run Code Online (Sandbox Code Playgroud)
1.xml 具有以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xi="http://www.w3.org/2001/XInclude">
<!-- Include 2 -->
<xi:include
href="resource:resources/2.xml" />
<!-- Include 3 -->
<xi:include
href="resource:resources/3.xml" />
<!--
<map>
</map>
-->
</document>
Run Code Online (Sandbox Code Playgroud)
基于这篇文章.当尝试访问这些包含(成功部署我的应用程序后)后,我收到以下错误:
Caused by: org.xml.sax.SAXParseException; lineNumber: 5; columnNumber: 43; An 'include' failed, and no 'fallback' element was found.
at org.apache.xerces.parsers.DOMParser.parse(DOMParser.java:245)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:298)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:121)
at org.zcore.dkp.backend.mapper.MappingParser.parse(MappingParser.java:60)
... 327 more
Run Code Online (Sandbox Code Playgroud)
我尝试了(&错误)所有可以考虑的选项.xi:include将.xml文件 …
我遇到了 Xerces 库的一些问题,我依赖的第三方库使用了它。
Xerces 尚不支持 JAXP 1.5,JAXP 1.5 包含在最新版本的 JDK 1.7 和 JDK 8 中。如果将 Xerces 用作 XML 解析器,这会导致一些问题,当系统知道多个 XML 解析器时可能会发生这种情况。删除xercesImpl-v2.9.0.jar立即解决了问题,但随后第 3 方库不再工作。
我可以看到该问题的两种解决方案:
似乎实际使用的 Xerces 库中唯一的位是org.apache.xerces.util.XMLCatalogResolver, 在CustomResolver.java. 目录解析器是否有其他选项而不是 Xerces 选项?
另一种选择似乎是在 JVM 启动时为 XML 解析显式设置系统属性。这样 JVM 就可以告诉要使用哪个 XML 解析器,并且它不会再选择 Xerces。
我发现了以下三个属性:
-Djavax.xml.transform.TransformerFactory
-Djavax.xml.parsers.SAXParserFactory
-Djavax.xml.parsers.DocumentBuilderFactory
Run Code Online (Sandbox Code Playgroud)
不过,这会导致两个问题: