我的开发环境中一直出现以下错误。我用
Ivy用于依赖管理,其中包含以下内容
<!-- 3rd party dependencies -->
<dependency org="log4j" name="log4j" rev="1.2.16" conf="test->default"/>
<dependency org="commons-httpclient" name="commons-httpclient" rev="3.1" conf="compile->default"/>
<dependency org="org.jvnet.jaxb2_commons" name="jaxb2-basics-runtime" rev="0.6.4" conf="default->runtime"/>
<dependency org="org.jvnet.jaxb2_commons" name="jaxb2-basics-tools" rev="0.6.4" conf="default->runtime"/>
<dependency org="org.jvnet.jaxb2_commons" name="jaxb2-basics" rev="0.6.4" conf="default->runtime"/>
我已经看过关于这个主题的其他帖子,但他们的答案没有多大帮助。我尝试使用jaxb.properties,但这并未改变行为。
javax.xml.bind.context.factory=com.sun.tools.xjc.runtime.JAXBContextFactory
Exception in thread "main" javax.xml.bind.JAXBException
- with linked exception:
[java.lang.ClassNotFoundException: com.ibm.xml.xlxp2.jaxb.JAXBContextFactory]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:227)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:432)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:637)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)
at com.acme.merge.util.ProjectsInformation.unMarshal(ProjectsInformation.java:24)
at com.acme.merge.controller.MergeController.main(MergeController.java:44)
Caused by: java.lang.ClassNotFoundException: com.ibm.xml.xlxp2.jaxb.JAXBContextFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at javax.xml.bind.ContextFinder.safeLoadClass(ContextFinder.java:563)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:225)
... 5 more
我在俯瞰什么?
答案 0 :(得分:2)
我找到了根本原因。我在ivy中的一些依赖项具有传递依赖项,这些依赖项引入了一些IBM WS库。这些库会覆盖我的设置并强制使用com.ibm.xml.xlxp2.jaxb.JAXBContextFactory
。排除这些解决了我的问题。
冲突的jar来自包com.ibm.ws
,名为runtime.jar
。
答案 1 :(得分:1)
似乎对我有用的解决方案:
可以在jar“com.ibm.jaxws.thinclient_8.5.0.jar”中找到Missing类“com.ibm.xml.xlxp2.jaxb.JAXBContextFactory”,它将在Websphere App服务器的服务器运行时目录中提供:C:\ Program Files \ IBM \ WebSphere \ AppServer \ runtimes。 请包含此jar仅用于编译目的,并且不要在WAR或EAR中包含此jar,因为它会与您的服务器运行时库jar冲突。 对于服务器WAS 8.0,路径jar将为“com.ibm.jaxws.thinclient_8.0.0.jar”。