当前位置: 首页 > 知识库问答 >
问题:

IntelliJ生成错误的JAR:无法找到或加载主类

郑晗日
2023-03-14

我有一个简单的例子

public class FileSystemReadFile {
    public static void main(String[] args) throws IOException {
        System.out.println("Reading the file" + args[0]);
    }
}

这是在IntelliJ中创建的,我想在其中构建JAR文件;所以我所做的:

  1. 添加了具有依赖项的工件(我可能有一些);
  2. 确保manifest.mf位于src\main\resources\meta-inf\中,因为它已经在站点的某个地方提到过。
  3. 运行工件生成器,它在out文件夹中为我提供了JAR文件,而我运行的JAR文件说我“找不到或加载主类”
    java .JAR

我怀疑这是一个原因。有什么想法吗?

共有1个答案

奚修伟
2023-03-14

如果您在应用程序中包含任何签名的JAR,然后使用IntelliJ构建工件,它将提取这些JAR,并将它们与您编译的输出捆绑在一起。

这将导致JAVA安全异常。我在Eclipse、Paho和Bouncy Castle上看到过这一点,它们都是签名的。

您可以使用jarsigner工具检查正在使用的库jar是否有签名。

jarsigner -verify -verbose  <path to library JAR>

更改您的IntelliJ工件设置,以便将它们绑定为库,而不是提取。提取会使证书失效。

尝试使用main创建一个虚拟项目。每次添加1个库JAR(您正在尝试使用它构建)。每次建立一个输出JAR直到Main中断。我就是这样找到这个的。

IntelliJ应该警告你.....

 类似资料:
  • 我在创建工作JAR文件时遇到问题。我可以跑步。类文件如下所示: 但作为jar运行(在构建脚本中)失败: 我将通过使用简单的Hello World项目来简化我遇到的问题: 文件需要进入文件夹。JAR文件需要在文件夹中。是构建JAR文件的bash脚本。如下: 你好世界java: 运行JAR文件,如构建中所示。sh结果 如前所述,直接运行应用程序效果很好。 这是的结构。 的内容。 我已经工作了6年了,现

  • 问题内容: 我想连接我的java程序以连接数据库并检索数据。它的编译完美,但运行时即时得到这个 我已经安装了Java SQL驱动程序,并将jar路径作为CLASSPATH添加到环境变量中 问题答案: 您应该从这里下载驱动程序 和JAR文件需要添加到项目类路径。 首先,右键单击Eclipse Project,然后单击Project-> Build Path-> Configure Build Pat

  • 当我正常运行此代码时,它会吐出: 异常线程"main"java.lang.ClassNotFoundExcture: bookReader 在java.net.URLClassLoader.find类(URLClassLoader.java:381) 在java.lang.ClassLoader.load类(ClassLoader.java:424)<在sun.misc.启动$AppClassLo

  • 问题内容: 我试图将HelloWorld放在.jar文件中并运行它,但是它不起作用。我创建了Java文件并在程序中键入内容,然后用cmd编写: 而且有效。然后我进入 得到了输出 然后我进入 第一行有效,而第二行却给我一个错误: 当我尝试使用64位jre7 \ bin,jdk1.7.0_51 \ bin,jdk1.7.0_51 \ jre \ bin中的java.exe文件打开它时,我得到的输出是(

  • 当我尝试在Windows上以编程方式运行命令时,会发生一些奇怪的事情。 运行以下命令时: 我知道这个错误 错误:找不到或加载主类JAR [106,97,118,97,32,-30岁,-128,-109,106,97,114,32,110,112,116,95,108,105,99,101,110,115,101,46,106,97,114,32,-30岁,-128,109,111,32,119,1

  • 我试图将HelloWorld放入一个.jar文件并运行它,但它不起作用。我创建了java文件并在程序中键入,然后用cmd写到: 而且奏效了。然后我进去了 并得到了输出 这与我尝试用64位JRE7\bin、JDK1.7.0_51\bin、JDK1.7.0_51\jre\bin和32位JRE7\bin中的java.exe文件打开它时(在快速关闭的窗口中)得到的输出相同。我卸载并重新安装了jre和jdk