52
|
James McMahon · 技术社区 · 15 年前 |
![]() |
1
60
好吧,这需要一些挖掘,但答案并不令人惊讶,甚至也不复杂:
JAXB找不到JAXB.index,因为默认情况下,
解决方案是从某个地方获取合适的类加载器并使用
也许你也可以在类加载器上
|
![]() |
2
6
对于我正在进行的项目,我也面临着类似的问题。读后 http://jaxb.java.net/faq/index.html#classloader 我意识到jaxbcontext找不到包含jaxb.index的包。 我会尽可能清楚地说明这一点。 我们有
涉及 JAXB . 类B是JAXBContext,bMethod是NewInstance()。 如果您熟悉OSGi包限制,那么现在必须非常清楚 B束 未导入包 C 即 C类 是 不可见 到 乙类 因此它不能实例化C。 解决方法是通过 类装载器 到B方法。这个类加载器应该来自 正在导入COM.C的包 . 在这种情况下,我们可以通过 a.class.getClassLoader()类 自从 bundle a正在导入com.c 希望这是有帮助的。 |
![]() |
3
4
对于相同的问题,我通过手动将包放入导入中来解决它。 |
![]() |
4
1
如果您在项目中使用Maven,那么只需使用此库:
它是为glasfish服务器创建的,但也与tomcat一起工作(选中)。 使用这个库,您可以轻松地将JAXB与OSGi捆绑包一起使用。 |
![]() |
5
0
编辑2: 我曾经在应用程序中遇到过类似的奇怪类加载问题。如果我作为一个普通的应用程序运行它,一切都正常,但是当我作为一个Windows服务调用它时,它开始失败,并出现ClassNotFoundExceptions。分析表明,线程的类加载器在某种程度上是空的。我通过在线程上设置SystemClassLoader解决了这个问题:
但不知道您的容器是否允许这种更改。 |
![]() |
6
0
我刚碰到这个问题。对于我来说,解决方案是使用IBM的JRE而不是Oracle的。似乎JAXB实现在这方面更适合OSGi。 |
![]() |
7
0
我通过添加生成的包含
|
![]() |
8
0
可能还有另一种情况会导致这个问题。 当您安装并启动一个包时,这个包将导出包含jaxb.index或objectfactory.java的包。 然后,请确保导入类的包已停止或指向正确的包名称。 还要检查pom.xml中的export和import语句 在ServiceMix(Karaf)OSGi容器中面临类似问题 |
![]() |
9
0
对我来说,问题是与我开发的模块无关的单元测试在it pom.xml中没有对我的模块的依赖性。 由于从共享配置文件中获取包列表,UT仍然可以识别我的模块。 在运行UT时,它没有编译新模块,因此它没有生成objectfactory.java,因此我收到了错误,即使在编译模块时,我能够看到objectfactory.java。 添加了以下依赖项:
|
![]() |
10
-1
我的解决方案是: JAXBContext context=JAXBContext.newInstance( 新类[]“my.package.name” ; 或 JAXBContext context=JAXBContext.newInstance( 新类[]class.getname() ; 或 完整的解决方案:
作品100% |
![]() |
Martin · 如何在上下文中动态添加/删除servlet? 7 年前 |
![]() |
mike · 在OSGi参考注释中动态设置目标属性 7 年前 |
![]() |
Sandy · 驼峰REST DSL-地址已在使用:绑定异常 7 年前 |