IntelliJ构建错误的JAR:无法找到或加载主类

时间:2016-11-16 16:05:59

标签: class intellij-idea jar main

我有一个简单的例子

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\,因为网站上已经提到过java <name>.jar
  3. 运行神器构建,它给了我文件夹中的JAR文件,然后运行那个说“无法找到或加载主类”的jar文件“141.212.122.224 - - [16/Nov/2016:03:42:45 +0100] "GET /UlisseREST/api/actions/RequestActionsToExecute HTTP/1.1" 400 226
  4. 您可能会看到主要类被添加到MANIFEST中,并且清单的位置也很好。

    Project structure

    当我打开创建的JAR文件时,我看到相同的MANIFEST内容,我看到很多依赖模块,但我没有看到我的课程!

    enter image description here

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

2 个答案:

答案 0 :(得分:4)

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

然后会导致JAVA安全异常。我已经看过Eclipse Paho和Bouncy Castle签名了。

您可以检查您使用的任何库JAR是否使用jarsigner工具进行签名。

jarsigner -verify -verbose  <path to library JAR>

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

See how Paho and BCP are not extracted during artifact creation

尝试使用Main创建一个虚拟项目。一次添加1个库JAR(您正在尝试构建)。每次构建一个输出JAR,直到Main中断。这就是我发现这个的原因。

IntelliJ应警告你......

答案 1 :(得分:1)

不确定IntellJ是什么,但我再次重建了文物,没关系。

hadoop jar <Jar-name>
java -jar <Jar-name>

一切都很好。