【发布时间】:2014-12-09 07:37:59
【问题描述】:
我尝试解决问题,我已在此 topic 中发布了该问题
用this解决方案
我尝试使用来自 Maven 的“阴影插件”创建一个阴影罐。但是我遇到了将这个带阴影的 jar 加载到另一个项目的问题。这个“jar”是一个不可执行的库,用于使用 somewere...我只是将这个 jar 添加到单独项目中的外部库中(使用 IDEA),在我运行应用程序之前一切看起来都很好。
它抛出 'ClassNotFoundException: Test'(测试 - 是我在这个项目中唯一的一个类,它有 main 方法)。我想提一下,当我使用“程序集插件”并制作 jar-with-dependencies 时,一切正常,没有任何例外。
我错过了什么?
完整的堆栈跟踪:
Exception in thread "main" java.lang.ClassNotFoundException: Test
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:259)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:116)
【问题讨论】:
-
如何在构建中包含阴影 jar? Neo4j 在 Maven 中心有标准(非阴影)jar。一般来说,如果 jar-with-dependencies jar 目标适合你,我真的会避免使用 shaded 插件。
-
jar-with-dependencies 不能正常工作。在使用 db 的这个 jar 'web-interface' 的单独项目中根本不起作用(因为重写 META-INF/service 文件 - 我在 maven 依赖项中有几个 neo4j 组件),但非 web 功能有效。我使用阴影插件连接 META-INF/service 中的实现。但这可能会导致混乱和我的项目迷恋......