Java 运行jar时无法找到或加载主类

Java 运行jar时无法找到或加载主类,java,intellij-idea,Java,Intellij Idea,首先,我知道这个问题经常被问到。但我的问题是不同的,所以请耐心看完整的描述 我已经使用intellij IDEA 2018.2构建了jar。我曾经用2017年制作过这个罐子,效果很好。最近,我使用intellij构建了带有工件的jar 环境似乎很好。这对我以前很管用。但是我运行了构建的jar,它表示“无法运行或加载主类” jar文件看起来很正常。但是我发现META-INF是不同的。我有一些文件很奇怪: 如果删除MANIFEST.MF之外的这些文件,我会发现。它可以很好地工作。我不知道设置有什么

首先,我知道这个问题经常被问到。但我的问题是不同的,所以请耐心看完整的描述

我已经使用intellij IDEA 2018.2构建了jar。我曾经用2017年制作过这个罐子,效果很好。最近,我使用intellij构建了带有工件的jar

环境似乎很好。这对我以前很管用。但是我运行了构建的jar,它表示“无法运行或加载主类”

jar文件看起来很正常。但是我发现META-INF是不同的。我有一些文件很奇怪:

如果删除MANIFEST.MF之外的这些文件,我会发现。它可以很好地工作。我不知道设置有什么不同

我尝试过以下方法:

  • 尝试删除.idea文件夹,然后打开该项目

  • 尝试删除工件并配置一个新工件

  • 尝试修改模块的输出路径

  • 重建项目或重建工件jar


  • 但所有这些方法都无法奏效。我曾尝试在intellij的MAC OS和windows OS中使用相同的设置构建jar,但结果似乎是一样的。有谁能给我一些建议吗。提前感谢。

    签名文件时创建的文件是
    *、RSA、*.SF、*.DSA
    。显然,您使用的jar是经过签名的,因此如果您提取内容并将其放入新的jar中,签名是无效的,Java不会接受它们。因此,您要么删除签名,要么放弃您的工件生成的整个jar。

    我已经找到了解决方案。我不应该将依赖项作为文件夹导入。我必须通过选择所有jar文件而不是jar文件的文件夹来导入它们。

    谢谢您的回答。在intellij中,通过arifact设置是否可以放弃整个jar?我想知道是否有人对intellij的版本做了些什么。我记得intellij 2017不会放弃构建的jar。由于intellij的重新签名操作,这些文件不存在。如果打开库jar,您将看到库本身已签名。IntelliJ只是将它们解包并将内容添加到最终工件中。要退出jar,您需要一个代码签名证书和一个后处理任务,例如使用
    signjar
    元素的Ant。如果不想签名,可能需要取消对库的签名。您可以提取、删除
    *、RSA、*.SF、*.DSA
    文件,然后使用您喜爱的zip工具重新打包。这样做毫无意义。作为具有相同依赖项的相同项目。我试着用intellij 2018终极版和intellij 2017社区版构建jar。我发现社区版构建的jar还可以。没有任何
    *.RSA、*、SF、*.DSA
    文件。