JAXB -API的实现尚未在模块路径或类路径上找到 - 运行JAR时
我在JAXB编码方面有问题。当我在IDE中运行该程序时(在我的情况下,Intelli J)都可以正常工作,并且没有错误。但是,当我尝试手动启动该程序罐时,下面的错误将被丢弃:
javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]
完整的错误消息是:
Exception in thread "ForkJoinPool-2-worker-1" javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:278)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:421)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662)
at networkManager.Marshall.output(Marshall.java:54)
at networkManagerSockets.ClientReciveSocket.recive(ClientReciveSocket.java:95)
at networkManagerSockets.ClientReciveSocket.run(ClientReciveSocket.java:76)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:122)
at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:155)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:276)
... 12 more
我的build.gradle中有以下JAXB的依赖项:
implementation "com.sun.xml.bind:jaxb-impl:3.0.2"
implementation "javax.xml.bind:jaxb-api:2.3.1"
implementation "com.sun.istack:istack-commons-runtime:4.1.1"
implementation group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '2.3.1'
我的java版本是17.0.3.1,
有人是否有人有解决方案的解决方案问题或知道为什么它在IDE中起作用?
I have a problem with JAXB Marshalling. When I run the programm in an IDE (In my case Intelli J) everything works fine and no errors get thrown. But when I try to start a jar of that programm manually the following error gets thrown:
javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]
The full error message is:
Exception in thread "ForkJoinPool-2-worker-1" javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:278)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:421)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662)
at networkManager.Marshall.output(Marshall.java:54)
at networkManagerSockets.ClientReciveSocket.recive(ClientReciveSocket.java:95)
at networkManagerSockets.ClientReciveSocket.run(ClientReciveSocket.java:76)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165)
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:122)
at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:155)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:276)
... 12 more
I have the following dependencies for JAXB in my build.gradle:
implementation "com.sun.xml.bind:jaxb-impl:3.0.2"
implementation "javax.xml.bind:jaxb-api:2.3.1"
implementation "com.sun.istack:istack-commons-runtime:4.1.1"
implementation group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '2.3.1'
My java version is 17.0.3.1
Does anyone have a solution for the problem or knows why it works in the IDE?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论