我有一个项目,包含一个单独的模块,和一些依赖。 我想在一个单独的目录中创建一个JAR,其中包含编译后的模块。此外,我希望在我的模块旁边有依赖项。

无论我如何扭曲IntelliJ的“构建JAR”过程,我的模块的输出都是空的(除了一个META-INF文件)。


当前回答

当我使用这些解决方案这个错误来:

java -jar xxxxx.jar

在xxx.jar中没有主清单属性

解决方案是:

您必须更改清单目录:

<project folder>\src\main\java 

将Java更改为资源

<project folder>\src\main\resources

其他回答

如果您正在阅读这个答案,因为您面临“资源文件未找到”错误,请尝试以下方法:

File -> Project Structure -> Artiface -> New, type is Other. Give it a nice name, and in the Output Layout, press Create Archive to create a new jar, and again, give it a nice name ;) Click on the jar you just added, add your compiled module output in the jar. Click on the jar again, in the lower pane, select your project path and add Manifest File then set correct Main Class and Class Path. Click Add Library Files, and select libraries you need (you can use Ctrl+A to select all). Build -> Build Artifact -> Clean & Build and see if the error is gone.

8.1.3想法

Jar是可以的,因为在'output'目录(project/out/production//)中有编译输出

我猜,你必须在构建jar之前运行'make'

对于依赖项,只需检查“show library”并选择您想要的。

您可能想看一看Maven (http://maven.apache.org)。您既可以将它用作应用程序的主要构建过程,也可以仅通过Edit Configurations对话框执行某些任务。在Maven中创建一个模块的JAR的过程是相当简单的,如果您希望它在一个可自行执行的JAR中包含所有依赖项,那么这个过程也是非常简单的。

如果您以前从未使用过Maven,那么您应该阅读Better Builds With Maven。

我的问题是:我使用Intellij IDEA(尝试了不同的版本)+ Gradle。 当我编译项目并构建artifacf jar时,如上面的响应所示,我收到了一个错误-“没有主清单属性…”

这个解决方案对我来说很有效(特别感谢Thilina Ashen Gamage提供的建议):

摘录-如果你使用外部库,并通过项目设置-工件-添加(+)- Jar -从有依赖关系的模块中构建项目,那么可能是因为程序错误,包含manifest文件的META-INF文件夹不包括到Jar中。为了避免它,创建空的jar文件。

项目设置-工件-添加(+)- Jar -空Jar。META-INF文件夹将被添加到资源文件夹。然后选择你的主类。你会看到以下罐子结构: 注意存在一个文件夹META-INF 然后您就可以构建项目和构件了。这个解决方案也适用于javaFX应用程序。

Ant和Maven被广泛使用。我更喜欢Ant,我觉得它更轻量级,你作为开发人员更有控制权。有些人会认为这是它的缺点:-)