我在MAC OS X 10.8.3上使用Intellij IDEA 12.0.4来创建一个jar文件。
我转到文件 - >项目结构 - >文物 - > + - > Jar - >来自具有依赖关系的模块 - >浏览后选择的主类 - >选择提取物到目标罐 - > META-INF目录自动填充 - >好的 - >申请 - >好的 - >构建 - >构建工件 - >构建
现在如果我尝试使用:
运行jarjava -jar path_to_jar/jar_file
我收到此错误
在path_to_jar / jar_file中没有主要清单属性 $ java -version
java版“1.7.0_17”
Java(TM)SE运行时环境(版本1.7.0_17-b02)
Java HotSpot(TM)64位服务器VM(内置23.7-b01,混合模式)
任何指针,我做错了什么?
答案 0 :(得分:17)
要解决此问题,请执行以下两项操作:
将META-INF移入src / main / resources
然后:file->打开模块设置
选择工件,删除当前工件并创建一个新工件,但这一次,选择“复制到输出目录并通过清单链接”,而不是选择“提取到目标jar”
对于META-INF的路径,将资源目录的路径放在您将META-INF复制到的位置之上。
现在构建你的工件
即时通讯终端,转到生产罐子的dir并运行:
java -jar yourjarfile.jar
玩得开心
答案 1 :(得分:5)
在我的情况下,这是因为IntelliJ正在将所有依赖项提取到输出jar中,最终用我所包含的依赖项之一覆盖了/META-INF/MANIFEST.MF
文件。
我必须打开jar并从真实的MANIFEST.MF
中复制“Manifest File”属性中指示的位置,该属性会自动在“项目结构”下的工件页面中设置。
答案 2 :(得分:0)
您需要为jar选择“main”类才能使其成为可执行文件(即您应该在包含public static void main(String[] args)
答案 3 :(得分:0)
就我而言,我选择 文件->项目结构->工件-> +-> Jar->从具有依赖性的模块中->浏览后选择主类->复制到输出目录并通过清单链接(提取到对我不起作用的目标Jar)->浏览/META-INF/MANIFEST.MF->确定->应用->确定->构建->构建工件->构建
后,选择项目资源文件夹我的Idea版本是IntelliJ IDEA 2018.2(最终版本)I read from here。它对我有用。