Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何正确地从IntelliJ构建JAR?_Java_Intellij Idea_Jar_Build Process - Fatal编程技术网

Java 如何正确地从IntelliJ构建JAR?

Java 如何正确地从IntelliJ构建JAR?,java,intellij-idea,jar,build-process,Java,Intellij Idea,Jar,Build Process,我有一个包含单个模块和一些依赖项的项目。 我想在一个单独的目录中创建一个jar,其中包含编译后的模块。此外,我希望在模块旁边显示依赖项 无论我如何扭曲IntelliJ的“构建jar”过程,我模块的输出都是空的(除了META-INF文件)。Idea 8.1.3 Jar是正常的,因为“output”目录(project/out/production/)中有已编译的输出 我想,在构建jar之前,您必须运行“make” 对于依赖项,只需选中“ShowLibrary”并选择所需内容。您可能想看看Maven

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

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

Idea 8.1.3

Jar是正常的,因为“output”目录(project/out/production/)中有已编译的输出

我想,在构建jar之前,您必须运行“make”


对于依赖项,只需选中“ShowLibrary”并选择所需内容。

您可能想看看Maven()。您可以将其用作应用程序的主生成过程,也可以仅通过“编辑配置”对话框执行某些任务。在Maven中创建模块的JAR的过程相当简单,如果您希望它在一个自执行JAR中包含所有的依赖项,那么这个过程也很简单


如果您以前从未使用过Maven,那么您需要阅读。

Ant和Maven被广泛使用。我更喜欢Ant,我觉得它更轻量级,而且开发人员更能掌控局面。有些人认为这是它的缺点:-)

下面是如何使用IntelliJ 10构建jar

文件->项目结构->项目设置->工件->单击绿色加号->Jar->来自具有依赖项的模块

上面将“骨架”设置为jar将保存到的位置。要实际构建并保存它,请执行以下操作:

提取到目标Jar

构建|构建工件|构建

尝试从中提取.jar文件


ProjectName | out | artifacts | ProjectName | jar | ProjectName.jar

可能有点晚了,但我设法用这种方式解决了->
用winrar打开,删除META-INF文件夹中的ECLIPSEF.RSA和ECLIPSEF.SF,并将“Main class:Main_class_name”(不带“.class”)放在MANIFEST.MF中。请确保在最后一行之后按了两次“Enter”,否则它将无法工作。

我最近遇到了这个问题,并且认为如果先前的解决方案或链接缺少详细信息,那么这些步骤很容易遵循

如何使用IntelliJ IDEA 14.1.5创建
.jar

  • 文件>全部保存
  • 使用main方法运行驱动程序或类
  • 文件>项目结构
  • 选择选项卡“工件”
  • 单击窗口顶部附近的绿色加号按钮
  • 从添加下拉菜单中选择JAR。选择“来自具有依赖项的模块”
  • 选择主类
  • 单选按钮应该选择“提取到目标JAR”。按OK
  • 选中“基于制造”框
  • 按apply并确定
  • 从主菜单中,选择构建下拉列表
  • 选择选项buildartifacts

  • 使用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汇编插件
    [类主路径]
    带有依赖项的jar
    组装
    包裹
    单一的
    
    如果在项目中使用第三方库,或者在正确创建MANIFEST.MF文件时遇到问题,则在运行使用生成的JAR文件时可能会发生冲突

    File > Project Structure > Artifacts > '+' > JAR > From modules with dependencies > .....
    
    上述方法


    相反,我建议您创建一个空JAR,并手动将所有其他元素添加到输出根目录中。这里有一篇关于这种方法的精彩博客文章:我尝试了上面提到的步骤,一切都很好

    对于那些像我一样受益于图像的人:

    文件->项目结构


    这在2017年仍然是一个问题,我希望它能帮助其他人! 我发现在IntelliJ 2017.2下创建工作jar-s有两种可能性

    1。从IntelliJ创建工件:

    • 转到项目结构:

    • 创建新工件:

    • 选择主类,并确保更改清单文件夹:

    您必须更改清单目录:

    <project folder>\src\main\java 
    
    <project folder>\src\main\java 
    
    \src\main\java
    
    将“java”替换为“资源”

    \src\main\resources
    
    它应该是这样的:

    • 然后选择要打包到jar中或jar文件附近的依赖项

    • 要构建您的工件,请转到构建工件并选择“重建”。它将创建一个包含jar文件及其依赖项的“out”文件夹

    2。使用maven汇编插件

    将build节添加到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>
    
    
    

    • 选择应用程序:

    • 填表
    • 在最后执行的构建之后添加“assembly:single”maven目标

    • 保存它,然后运行

    此过程将在“target”文件夹下创建jar文件


    其他一些答案是无用的,因为一旦您从maven项目重新导入IntelliJ IDEA项目,所有更改都将丢失

    jar的构建需要由运行/调试配置触发,而不是由项目设置触发

    Jetbrains在这里很好地描述了如何实现这一点:

    向下滚动到“为Maven目标配置触发器”部分

    (他们描述的唯一缺点是他们的截图是默认的黑白配色方案,而不是超级棒的darcula主题。啊!)

    所以,基本上,你要做的就是打开“Maven项目”面板,你会发现
    mvn package -DskipTests
    
        <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>
    
    java -jar xxxxx.jar
    
    <project folder>\src\main\java 
    
    <project folder>\src\main\resources
    
    mvn clean package spring-boot:repackage