gpt4 book ai didi

java - Karaf 内部 org.apache.openjpa.lib.xml.XMLFactory 中出现 NoClassDefFoundError

转载 作者:行者123 更新时间:2023-12-01 04:32:55 28 4
gpt4 key购买 nike

我们正在尝试一个简单的用例,使用 JPA 从 Karaf 内的 Camel 路由读取/写入 mysql 数据库。当camel加载包含路由的代码时,这经常/总是导致以下堆栈跟踪:

2013-07-19 17:01:47,178 | WARN | ft.WorkoutEntity | JpaConsumer | rg.apache.camel.util.CamelLogger 224 | 68 - org.apache.camel.camel-core - 2.10.4 | Consumer Consumer[jpa://WorkoutEntity] failed polling endpoint: Endpoint[jpa://WorkoutEntity]. Will try again at next poll. Caused by: [java.lang.NoClassDefFoundError - Could not initialize class org.apache.openjpa.lib.xml.XMLFactory] java.lang.NoClassDefFoundError: Could not initialize class org.apache.openjpa.lib.xml.XMLFactory at org.apache.openjpa.jdbc.sql.SQLErrorCodeReader.parse(SQLErrorCodeReader.java:107) at org.apache.openjpa.jdbc.sql.DBDictionary.endConfiguration(DBDictionary.java:4712) at org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:518) at org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:443) at org.apache.openjpa.jdbc.sql.DBDictionaryFactory.newDBDictionary(DBDictionaryFactory.java:199) at org.apache.openjpa.jdbc.sql.DBDictionaryFactory.newDBDictionary(DBDictionaryFactory.java:100)

XMLFactory 包含在我的包导入的 OpenJPA 聚合包中。我什至可以实例化同一 org.apache.openjpa.lib.xml 包中的其他对象。

我破解了开源 OpenJPA 代码并查看了 XMLFactory。顶部有一个静态 block ,在加载类时应该调用该静态 block 。 static block 看起来并没有做任何复杂的事情,只是实例化 SAX 和 DOM 解析器工厂。

如果在包含路由的 java 代码中添加以下行:

org.apache.openjpa.lib.xml.XMLFactory.getClass()

要在类加载器中加载类,错误有时将会停止。

这是一些版本信息:

Karaf => 2.3.2

Camel => 尝试过 2.10.4 和 2.11.1

OpenJPA => 尝试过 2.2.0 和 2.2.2

Mysql => 5.1.25

如果您需要更多信息,请告诉我。

-新信息-我从 karaf 提示符打开了调试级别日志记录,现在在 NoClassDefError 之前看到此错误

2013-07-19 17:35:36,784 | DEBUG | ft.WorkoutEntity | TransactionTemplate | tion.support.TransactionTemplate 160 | 75 - org.springframework.transaction - 3.2.3.RELEASE | Initiating transaction rollback on application exception javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found at javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:122)[:2.2.0] at org.apache.openjpa.lib.xml.XMLFactory.(XMLFactory.java:60) at org.apache.openjpa.jdbc.sql.SQLErrorCodeReader.parse(SQLErrorCodeReader.java:107) at org.apache.openjpa.jdbc.sql.DBDictionary.endConfiguration(DBDictionary.java:4712) at org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:518) at org.apache.openjpa.lib.conf.Configurations.configureInstance(Configurations.java:443) at org.apache.openjpa.jdbc.sql.DBDictionaryFactory.newDBDictionary(DBDictionaryFactory.java:199) at org.apache.openjpa.jdbc.sql.DBDictionaryFactory.newDBDictionary(DBDictionaryFactory.java:100) at org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInstance(JDBCConfigurationImpl.java:603)

这解释了 NoClassDefFound 错误。

最佳答案

您可能没有安装 xerces。

尝试从 maven 安装它及其依赖项:

osgi:install wrap:mvn:xml-apis/xml-apis/1.4.01
osgi:install wrap:mvn:xml-resolver/xml-resolver/1.2
osgi:install wrap:mvn:xerces/xercesImpl/2.11.0

关于java - Karaf 内部 org.apache.openjpa.lib.xml.XMLFactory 中出现 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17751988/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com