我正在使用IntelliJ Idea (14.1.2)开发一个简单的java命令行应用程序。
我的应用程序由两个模块组成:
在从IntelliJ内部进行调试时,一切都可以工作,但现在我希望构建一个JAR文件,以便在IDE之外使用该工具。因此,正如IntelliJ文档所建议的,我使用“工件”菜单来设置在构建时生成的JAR工件。
jar看起来构建正确,但它没有。问题是:来自我的库模块的代码不包含在JAR中,只有来自主模块的代码是!事实上,最奇怪的是,我的库模块包含的maven库的代码包含在jar中,而不是我的模块库本身的代码!这显然意味着,当主程序试图使用库模块中的类时,最终的jar就会抛出一个ClassNotFound异常。
我不知道我做错了什么,所有的依赖项都设置好了,在Artifact菜单中,我告诉它在jar中包含依赖项.
编辑:这是由IntelliJ创建的脚本,所有这些似乎都是有序的:
<component name="ArtifactManager">
<artifact type="jar" build-on-make="true" name="delta.desktoptools.manifestgenerator:jar">
<output-path>$PROJECT_DIR$/out/artifacts</output-path>
<root id="archive" name="delta.desktoptools.manifestgenerator.jar">
<element id="module-output" name="delta.desktoptools.manifestgenerator" />
<element id="module-output" name="delta.desktoptools.lib" /> <!-- This doesn't get included :( -->
<element id="extracted-dir" path="$MAVEN_REPOSITORY$/com/github/javaparser/javaparser-core/2.0.0/javaparser-core-2.0.0.jar" path-in-jar="/" />
</root>
</artifact>
</component>编辑:我的工件配置的屏幕,更清晰。如您所见,我的库模块的编译输出包含在工件中,但在最后的JAR中没有。

发布于 2015-04-27 10:06:52
您是使用intellij来创建Jar还是依赖于maven任务?
如果您依赖于pom,那么您需要添加包含依赖项的构建,具体如下所示:How can I create an executable JAR with dependencies using Maven?
https://stackoverflow.com/questions/29892487
复制相似问题