我有一个简单的例子
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
。141.212.122.224 - - [16/Nov/2016:03:42:45 +0100] "GET /UlisseREST/api/actions/RequestActionsToExecute HTTP/1.1" 400 226
您可能会看到主要类被添加到MANIFEST中,并且清单的位置也很好。
当我打开创建的JAR文件时,我看到相同的MANIFEST内容,我看到很多依赖模块,但我没有看到我的课程!
我怀疑这是一个原因。有什么想法吗?
答案 0 :(得分:4)
如果在应用程序中包含任何已签名的JAR,然后使用IntelliJ构建工件,它将提取JARS并将其与编译输出捆绑在一起。
然后会导致JAVA安全异常。我已经看过Eclipse Paho和Bouncy Castle签名了。
您可以检查您使用的任何库JAR是否使用jarsigner工具进行签名。
jarsigner -verify -verbose <path to library JAR>
更改IntelliJ工件设置,以便将它们捆绑为库而不是提取。提取会使您的证书无效。
尝试使用Main创建一个虚拟项目。一次添加1个库JAR(您正在尝试构建)。每次构建一个输出JAR,直到Main中断。这就是我发现这个的原因。
IntelliJ应警告你......
答案 1 :(得分:1)
不确定IntellJ是什么,但我再次重建了文物,没关系。
hadoop jar <Jar-name>
java -jar <Jar-name>
一切都很好。