Answers:
这是使用IntelliJ 10构建jar的方法http://blogs.jetbrains.com/idea/2010/08/quickly-create-jar-artifact/
File-> Project Structure-> Project Settings-> Artifacts->单击green plus sign-> Jar->From modules with dependencies...
上面将“骨骼”设置为将罐子保存到的位置。要实际构建并保存它,请执行以下操作:
提取到目标Jar
好
建立 构建工件| 建立
尝试从中提取.jar文件
项目名称| 出| 文物| ProjectName_jar | ProjectName.jar
这在2017年仍然是一个问题,我希望它能对那里的人们有所帮助!我发现在IntelliJ 2017.2下创建工作罐的两种可能性
1.从IntelliJ创建工件:
您必须更改清单目录:
<project folder>\src\main\java
用“资源”替换“ java”
<project folder>\src\main\resources
它应该是这样的:
然后,选择要在jar中打包的依赖项,或者在jar文件附近
要构建工件,请构建工件,然后选择“重建”。它将使用您的jar文件及其依赖项创建一个“输出”文件夹。
2.使用maven-assembly-plugin
将构建部分添加到pom文件
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<finalName>ServiceCreate</finalName>
<appendAssemblyId>false</appendAssemblyId>
<archive>
<manifest>
<mainClass>com.svt.optimoo.App</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
此过程将在“目标”文件夹下创建jar文件。
no main manifest attribute
采用上述解决方案。没有人提到改变path to manifest
。谢谢!
我最近遇到了这个问题,并且认为如果任何先前的解决方案或链接缺少细节,这些步骤很容易执行。
如何.jar
使用IntelliJ IDEA 14.1.5 创建一个:
这是maven项目的2个示例,逐步介绍:
在pom.xml中,添加maven-jar-plugin。
<plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>somePackage.sample</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
屏幕截图: 4.单击搜索图标打开maven项目框,然后键入maven,
MANIFEST.MF必须位于您的资源文件夹中,而Main.Class需要引用{package}-{class-name-that-contains-main-class}
可能有点晚了,但是我设法解决了这一问题->用winrar打开并删除META-INF文件夹中的ECLIPSEF.RSA和ECLIPSEF.SF,而且放了“ Main-class:main_class_name”(不带“ .class”) )在MANIFEST.MF中。请确保在最后一行之后按两次Enter键,否则将无法正常工作。
我试图从多模块Kotlin应用程序构建一个jar,并得到了臭名昭著的“没有主要清单属性”错误。在中创建清单目录src/main/resources
也不起作用。
而是src
直接在中创建它时有效src/META-INF/MANIFEST.MF
。
使用Maven,您可以使用以下插件:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>[path you class main]</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
您可能想看看Maven(http://maven.apache.org)。您可以将其用作应用程序的主要构建过程,也可以仅通过“编辑配置”对话框来执行某些任务。如果您希望在Maven中创建模块的JAR的过程非常简单,那么您希望将其所有相关性包含在一个可自行执行的JAR中,这也是很简单的。
如果您以前从未使用过Maven,则想阅读使用Maven更好的构建。
如果您在项目中使用第三方库,或者在正确创建MANIFEST.MF文件时遇到问题,则在运行使用生成的JAR文件时可能会发生冲突。
File > Project Structure > Artifacts > '+' > JAR > From modules with dependencies > .....
上面提到的方法。
相反,我建议您创建一个空的JAR并将所有其他元素手动添加到输出根目录。可以在这里找到有关此方法的精彩博客文章:http : //karthicraghupathi.com/2016/07/10/creating-an-executable-jar-in-intellij-idea/我尝试了此处提到的步骤,并且一切正常为了我!
其他一些答案没有用,因为一旦您从maven项目中重新导入IntelliJ IDEA项目,所有更改都将丢失。
jar的构建需要通过运行/调试配置而不是项目设置来触发。
Jetbrains很好地描述了如何在此处完成此操作:
https://www.jetbrains.com/help/idea/maven.html
向下滚动到“配置Maven目标的触发器”部分。
(它们描述的唯一缺点是,它们的屏幕截图采用默认的黑白配色方案,而不是超棒的darcula主题。该死!)
因此,基本上,您要做的是打开“ Maven项目”面板,找到感兴趣的项目(在您的情况下,是构建jar的项目),在其下方找到了要执行的Maven目标,(通常是“ package”目标创建jar),打开它的上下文菜单,(在Windows计算机上单击鼠标右键),然后会有一个“在运行/调试之前执行...”选项,选择,它将从那里牵手您。真的很容易
这是IntelliJ IDEA 2018.3帮助的官方答案。我尝试了,它起作用了。
从模块构建JAR文件;
在主菜单上,选择“生成” |“创建”。建立神器。
从下拉列表中,选择所需的JAR类型工件。 该列表显示了为当前项目配置的所有工件。要构建所有已配置的工件,请选择“构建所有工件”选项。
我的问题是:我使用了Intellij IDEA(尝试了不同的版本)+ Gradle。如上面的响应所示,当我编译项目并构建artifacf jar时,我收到一个错误-“无主清单attrubute ...”
此解决方案对我有用(特别感谢Thilina Ashen Gamage(请参见上文)的提示):
摘录-如果您使用外部库并通过项目设置-工件-添加(+)-Jar-来自具有依赖项的模块来构建项目,则可能是由于程序错误导致带有MANIFEST_MF文件的META-INF文件夹不包含到jar中。为了避免这种情况,请创建EMPTY jar文件。
项目设置-工件-添加(+)-Jar-EMPTY JAR。META-INF文件夹将添加到资源文件夹。然后选择您的主班。您将看到以下jar结构: 注意文件夹META-INF的存在然后,您可以构建项目并构建构件。该解决方案也适用于javaFX应用程序。