Java IntelliJ IDEA创建的JAR文件不运行

Java IntelliJ IDEA创建的JAR文件不运行,java,intellij-idea,jar,Java,Intellij Idea,Jar,我在IntelliJ中编写了一个跨越几个类的程序,当我在IDE中测试它时,它运行良好。但是,每当我按照教程将项目转换为.jar可执行文件时,它都不会运行 当双击out文件夹中的文件并显示“JavaJAR文件”projectName.JAR“无法启动”时,该文件不会运行 当从终端打开它时,我得到错误“找不到或加载主类”。我使用了“$java-jarprojectname.jar” 我遵循以下步骤: 打开项目结构、工件并单击(+) 在JAR下,来自具有依赖项的模块 用我的main方法指向该类,然后单

我在IntelliJ中编写了一个跨越几个类的程序,当我在IDE中测试它时,它运行良好。但是,每当我按照教程将项目转换为.jar可执行文件时,它都不会运行

当双击out文件夹中的文件并显示“JavaJAR文件”projectName.JAR“无法启动”时,该文件不会运行

当从终端打开它时,我得到错误“找不到或加载主类”。我使用了“$java-jarprojectname.jar”

我遵循以下步骤:

  • 打开项目结构、工件并单击(+)
  • 在JAR下,来自具有依赖项的模块
  • 用我的main方法指向该类,然后单击OK
  • 单击应用并确定退出
  • 然后我关闭项目结构,打开构建,然后构建工件
  • 然后单击Build
  • 导航到~/IdeaProjects/projectName/out/artifacts/projectName\u jar/projectName.jar

  • 然后我会尝试运行它,但它不会运行。我的项目既有GUI,也可以从命令行运行。当我在Terminal中编译main方法时,它运行得很好,但我需要一个JAR文件。我不确定我应该在问题中包括什么,因为我确定我的代码是无关的。我也使用Maven,不确定这是否相关。是吗在我构建JAR之前,我应该做或添加到我的项目中的其他事情?

    您需要确保设置了Main Class属性。检查这一点的一种方法是使用Zip实用程序打开JAR,并查找
    META-MF/MANIFEST.MF
    用记事本、记事本++或任何文档读取器提取或打开该文件。如果““Main Class”不在它们的主类中,或者设置为正确的主类,您将收到收到的错误。查看IntelliJ教程,在设置工件发布时,它有一个Main Class字段。我已包含下面指向IntelliJ页面的链接


    这可能是在错误位置创建清单的结果

    首先确保它位于
    src/main/resources/META-INF/MANIFEST.MF

    (Intellij有时会错误地将其放在
    /src/main/java/META-INF/MANIFEST.MF
    中)

    然后确保jar在src目录中查找META-INF,而不是在/java或/resources中。这意味着:

    当您从具有依赖项的模块设置文件>项目结构>工件>+>JAR>时,META-INF/MANIFEST.MF的目录应以
    src
    结尾。示例:

    ONLY C:\Users\User\StudioProjects\Project\src\
    NOT THE PREPOPULATED C:\Users\User\StudioProjects\Project\src\main\java
    
    如果已设置项目结构jar,请将清单文件路径更改为:


    MANIFEST.MF文件是由IntelliJ创建的,所以我认为它是正确的。主类是正确的,但只有两行,一行是“MANIFEST Version:1.0”,另一行是“Main Class:projectName”“应该有其他的东西吗?潜在的。主类属性必须是完全限定的域。也就是说,如果你的班级在一个或多个包中
    com.packagename.ClassName
    。见第7.5节。使用包成员:限定名称。因此,如果没有包,则该属性只是具有要运行的主方法的类的名称。以下是Oracles网站@EricChan对此的最佳描述,我忘了在我的评论中标记你。新的堆栈。
    C:\Users\User\StudioProjects\Project\src\META-INF\MANIFEST.MF
    INSTEAD OF C:\Users\User\StudioProjects\Project\src\main\java\META-INF\MANIFEST.MF