我有一个简单的例子
public class FileSystemReadFile {
public static void main(String[] args) throws IOException {
System.out.println("Reading the file" + args[0]);
}
}
它是在 IntelliJ 中创建的,我想在其中构建 JAR 文件;所以我做了什么:
MANIFEST.MF
位于src\main\resources\META-INF\
因为它已经在网站的某个地方提到过。 java <name>.jar
您可能会看到主类已添加到 MANIFEST 中,并且 list 的位置也很好。
当我打开创建的 JAR 文件时,我看到了相同的 MANIFEST 内容,我看到了很多依赖模块,但我没有看到我的类!
我怀疑这是一个原因。有任何想法吗?
最佳答案
如果您在应用程序中包含任何已签名的 JAR,然后使用 IntelliJ 构建工件,它将提取 JARS 并将它们与您的编译输出捆绑在一起。
这会导致 JAVA 安全异常。我已经在签名的 Eclipse Paho 和 Bouncy CaSTLe 上看到了这一点。
您可以使用 jarsigner 工具检查您正在使用的任何库 JAR 是否已签名。
jarsigner -verify -verbose <path to library JAR>
更改您的 IntelliJ 工件设置,以便将它们捆绑为库而不是被提取。如您所料,提取会使证书无效。
尝试仅使用 Main 创建一个虚拟项目。一次添加 1 个库 JAR(您正在尝试构建)。每次构建一个输出 JAR 直到 Main 中断。我就是这样发现的。
IntelliJ 应该警告你.....
关于class - IntelliJ 构建错误的 JAR : Could not find or load main class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40636790/