12

我在 MAC OS X 10.8.3 上使用 Intellij IDEA 12.0.4 创建一个 jar 文件。

我转到文件->项目结构->工件-> + -> Jar->从具有依赖项的模块->浏览后选择的主类->选择提取到目标jar->自动填充META-INF的目录-> OK -> Apply -> OK -> Build -> Build Artifacts -> Build

现在,如果我尝试使用以下命令运行 jar:

java -jar path_to_jar/jar_file

我收到这个错误

没有主要清单属性,在 path_to_jar/jar_file
$ java -version
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01) , 混合模式)

任何指针,我做错了什么?

4

4 回答 4

21

要解决此问题,请做两件事:

将 META-INF 移动到 src/main/resources

然后:文件->打开模块设置

选择工件,删除当前的并创建一个新的,但这一次,不要选择“提取到目标 jar”,而是选择“复制到输出目录并通过清单链接”

对于 META-INF 的路径,请将您复制 META-INF 的资源目录的路径放在上面。

现在构建你的工件

我是终端,转到已生成 jar 的目录并运行:

java -jar yourjarfile.jar

玩得开心

于 2014-01-14T16:50:21.003 回答
4

就我而言,这是因为 IntelliJ 将所有依赖项提取到输出 jar 中,最终/META-INF/MANIFEST.MF用我包含的依赖项之一中的某些内容覆盖了文件。

我必须打开 jar 并MANIFEST.MF从“Manifest File”属性中指示的位置复制实际,该属性在“项目结构”下的该工件页面中自动设置。

于 2013-08-16T15:53:38.697 回答
0

您需要为您的 jar 选择“主”类以使其可执行(即您应该在包含的类上指向 IDEApublic static void main(String[] args)

于 2013-03-30T22:17:52.547 回答
0

在我的情况下,我选择 File -> Project Structure -> Artifacts -> + -> Jar -> From modules with dependencies -> Selected Main Class after browser -> copy to the output directory and link via manifest(解压到目标 Jar 不是为我工作) -> 浏览 /META-INF/MANIFEST.MF-> OK -> Apply -> OK -> Build -> Build Artifacts -> Build 后选择您的项目资源文件夹

我的想法版本是 IntelliJ IDEA 2018.2 (Ultimate version)我从这里读到的。这个对我有用。

于 2019-02-21T11:43:04.933 回答