【问题标题】:On Intellij 13, executable jar created is invalid or corrupted在 Intellij 13 上,创建的可执行 jar 无效或损坏
【发布时间】:2014-05-28 18:19:16
【问题描述】:

我尝试在 Intellij 13 (win8) 上从我的项目创建一个可执行 jar,遵循这些答案 How to build jars from IntelliJ properly? 并执行创建的 jar,然后我得到“错误:无效或损坏的 jarfile”,后跟 jar 的路径.

我的项目很简单,但是有多个 java 文件和一个 UI 表单。

Project Structure|Artifacts上创建jar工件后,我调用Build|Build Artifacts|Jar

我用 maven scafold 创建了项目,但是对 pom.xml 没有依赖。

我正在使用 java7。 有什么遗漏吗?

【问题讨论】:

  • 您收到的指示 JAR 无效或损坏的错误消息是什么?你从哪里得到消息? (即在构建时或尝试使用它时?它是您尝试运行的可执行 jar 吗?鉴于您包含 executable-jar 标签,我不得不说是的。)您能否还提供您的工件的屏幕截图配置?请使用此信息编辑您的问题。此外,如果您有一个基于 maven 的项目,您应该能够通过在 maven 工具窗口中运行 package 目标来构建一个不可执行的 JAR。
  • 如果您使用 Java7 作为系统版本,您的项目是否也设置为 Java7?
  • @markVedder 我添加了屏幕截图的链接以及您询问的其他信息。
  • @dropout 我的电脑上只安装了java7,我认为不可能是版本冲突
  • @ArthurJulião 感谢您提供的信息。请问您的文件结构是什么样的?您的班级是否至少包含在一个包中?

标签: java jar intellij-idea executable-jar intellij-13


【解决方案1】:

由于我无法使用 IDEA 本身创建 jar,并且我之前使用 maven 脚手架创建项目,因此我决定使用 maven 创建可执行 jar。 为此,我添加到 pom.xml:

<packaging>jar</packaging>
<properties>
    <jdk.version>1.7</jdk.version>
</properties>
<name>Project Name</name>

在构建标签中:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>${jdk.version}</source>
                <target>${jdk.version}</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>main.Main</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

我也遇到了由 GUI-Designer 创建的 UI 的问题:NullPointerException 在创建的窗格中。为了让它工作,我添加了一个依赖项:

<dependencies>
    <dependency>
        <groupId>com.intellij</groupId>
        <artifactId>forms_rt</artifactId>
        <version>5.0</version>
    </dependency>
</dependencies>

之后,我只是在 cmd 的项目目录中使用了mvn package

字体:

【讨论】:

    【解决方案2】:

    这是一个没有 pom.xml 的快速解决方案

    我通过创建“META-INF”子文件夹并复制其中的清单文件,使用 IntelliJ 的工件设置解决了这个问题。

    我什至不知道为什么需要这样做,但似乎 IntelliJ IDEA 默认不包含 META-INF 文件夹

    指向文件:

    【讨论】:

      猜你喜欢
      • 2016-12-01
      • 2013-06-06
      • 2014-07-26
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 2020-03-21
      • 1970-01-01
      • 2016-02-09
      相关资源
      最近更新 更多