Java 在IntelliJ IDEA中将外部库添加到工件jar
如何将外部库添加到IntelliJ IDEA中的项目中,以便在构建工件时,它仍然可以访问库中的类 我从项目结构中创建了一个新的Jar工件,然后将外部Jar添加到库中,然后在模块列表中检查它,最后将它添加到工件的输出中。这些都不管用。当我构建并尝试运行我的应用程序时,它会抛出一个错误: 线程“main”java.lang.NoClassDefFoundError中出现异常:Java 在IntelliJ IDEA中将外部库添加到工件jar,java,maven,intellij-idea,build,dependencies,Java,Maven,Intellij Idea,Build,Dependencies,如何将外部库添加到IntelliJ IDEA中的项目中,以便在构建工件时,它仍然可以访问库中的类 我从项目结构中创建了一个新的Jar工件,然后将外部Jar添加到库中,然后在模块列表中检查它,最后将它添加到工件的输出中。这些都不管用。当我构建并尝试运行我的应用程序时,它会抛出一个错误: 线程“main”java.lang.NoClassDefFoundError中出现异常: 我遗漏了什么,或者我这样做完全错了吗?如果您使用maven构建应用程序,那么这不是添加外部库的正确方法。你也应该 执行如下所
我遗漏了什么,或者我这样做完全错了吗?如果您使用maven构建应用程序,那么这不是添加外部库的正确方法。你也应该
mvn安装:安装文件-Dfile=myJar.jar-DgroupId=com.yourproject-DartifactId=yourproject-Dversion={version}-dpacking=jar
李>
首选选项1,因为您不必在项目中保留jar。这里有两个选项:
- 将依赖项提取到工件jar中,使应用程序成为包含所有依赖项的单个可执行jar
- 通过
链接依赖jar,并将其复制到应用程序主jar附近Manifest.MF
out\single
和out\linked
目录中
相关配置:
我实际上不知道Maven是否被使用。我还没有创建任何构建文件。不确定IDEA是如何实现的,但我的假设是不需要构建文件。这里只有一个MANIFEST.MF文件。你刚刚帮我解决了一个问题,我花了25个多小时,也许2个星期,试图破解这个问题。非常感谢你!而且,这一切都是可行的,但背后的支柱是什么呢?IntelliJ是否使用Maven或Ant之类的工具?您可以使用基于Maven的项目,是的,但这与您所处的环境无关。当您向项目添加新的依赖项时,它们不会自动添加到您已有的工件中,您需要再次检查工件配置,并添加从jar运行应用程序所需的所有缺少的库。另一个常见的错误是将一个jar包含在另一个jar中,而这将无法工作,jar必须在主jar中解包,或者在主jar附近复制并通过清单链接(在这种情况下,不要忘记向清单添加任何新jar)。在基于Maven的项目中,可以使用Maven插件来创建具有依赖项的JAR,您将通过运行Maven目标而不是使用IntelliJ IDEA工件配置来生成最终工件。这样,您添加到
pom.xml
的所有新依赖项将自动出现在Maven生成的jar中。基于Gradle的项目也是如此。像图像这样的资源应该放在哪里?资源通常放在resources
目录中(配置为resources root的目录)。在示例项目中,它与您看到的log4j.properties
文件所在的目录相同。如果需要,您可以添加更多资源根,并且这些目录中的文件将显示在编译器输出中,因此您不必调整工件配置。