【问题标题】:how to run a jar file created using intellij 12如何运行使用 intellij 12 创建的 jar 文件
【发布时间】:2013-03-21 09:14:32
【问题描述】:

我在 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 -版本
java版本“1.7.0_17”
Java(TM) SE 运行时环境(内部版本 1.7.0_17-b02)
Java HotSpot(TM) 64 位服务器 VM(内部版本 23.7-b01,混合模式)

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

【问题讨论】:

标签: java macos jar intellij-idea


【解决方案1】:

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

【讨论】:

  • 我这样做了:浏览后选择主类
【解决方案2】:

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

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

【讨论】:

  • 虽然这可能确实有效,但最好不要在生成后打开 JAR 并对其进行破解?我按照 Felbus 的指示为我修复了它,而无需破坏罐子
【解决方案3】:

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

将 META-INF 移入 src/main/resources

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

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

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

现在构建您的工件

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

java -jar yourjarfile.jar

玩得开心

【讨论】:

  • 2017 年 4 月,这仍然为我解决了解决方案。干得好,先生
【解决方案4】:

就我而言,我选择 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 后选择您的项目资源文件夹

我的 Idea 版本是 IntelliJ IDEA 2018.2(终极版)I read from here。它对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多