我有一个项目,包含一个单独的模块,和一些依赖。 我想在一个单独的目录中创建一个JAR,其中包含编译后的模块。此外,我希望在我的模块旁边有依赖项。
无论我如何扭曲IntelliJ的“构建JAR”过程,我的模块的输出都是空的(除了一个META-INF文件)。
我有一个项目,包含一个单独的模块,和一些依赖。 我想在一个单独的目录中创建一个JAR,其中包含编译后的模块。此外,我希望在我的模块旁边有依赖项。
无论我如何扭曲IntelliJ的“构建JAR”过程,我的模块的输出都是空的(除了一个META-INF文件)。
当前回答
这可能有点晚,但我设法解决它的方式-> 用winrar打开并删除ECLIPSEF。RSA和ECLIPSEF。SF在META-INF文件夹中,并且在MANIFEST.MF中放置“Main-class: main_class_name”(没有“.class”)。确保你在最后一行之后按了两次“Enter”,否则它将不起作用。
其他回答
如果您在项目中使用第三方库,或者在创建MANIFEST时遇到问题。MF文件,在运行使用
File > Project Structure > Artifacts > '+' > JAR > From modules with dependencies > .....
上述方法。
相反,我建议您创建一个空JAR,并手动将所有其他元素添加到输出根中。关于这种方法的一篇精彩的博客文章可以在这里找到:http://karthicraghupathi.com/2016/07/10/creating-an-executable-jar-in-intellij-idea/我尝试了上面提到的步骤,一切都很顺利!
您可能想看一看Maven (http://maven.apache.org)。您既可以将它用作应用程序的主要构建过程,也可以仅通过Edit Configurations对话框执行某些任务。在Maven中创建一个模块的JAR的过程是相当简单的,如果您希望它在一个可自行执行的JAR中包含所有依赖项,那么这个过程也是非常简单的。
如果您以前从未使用过Maven,那么您应该阅读Better Builds With Maven。
这里有2个maven项目的例子,一步一步:
方法一:使用maven和pom.xml构建jar
File, new, project, maven create a package , create a java program inside that package at pom.xml, add 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,
点击清洁,然后点击安装 jar文件将显示在目标文件夹中 使用以下命令测试罐子 java jar
方法2:使用maven构建jar,不修改pom.xml
文件、新建、项目、maven 创建一个包,在该包中创建一个Java程序(如上所述) 文件->项目结构->项目设置-> Artifacts ->单击绿色加号-> Jar ->来自依赖模块
非常重要!
清单。MF需要在你的资源文件夹中,Main.Class需要引用{package}-{class-name-that-contains-main-class}
然后单击菜单上的构建,构建工件,构建
在out文件夹中找到罐子
运行它:)
如果你试图用kotlin构建一个jar,你需要创建一个src/main/java文件夹,并使用这个文件夹作为META-INF文件夹的位置。
这可能有点晚,但我设法解决它的方式-> 用winrar打开并删除ECLIPSEF。RSA和ECLIPSEF。SF在META-INF文件夹中,并且在MANIFEST.MF中放置“Main-class: main_class_name”(没有“.class”)。确保你在最后一行之后按了两次“Enter”,否则它将不起作用。