java - 如何解决错误: Invalid or corrupt jarfile

标签 java gradle intellij-idea intellij-13

我有一个 HelloWorld 的 Intellij Gradle 项目。该程序在 IDE 中运行,但运行 jar 文件时出现无效或损坏的 jar 错误。我对 build.gradle 和 Manifest 进行了一些更改,但仍然无法运行。我使用的是 Ubuntu 16.04。

我认为该问题与 list 有关。

集成开发环境 -

Intellij - 2019.2 Gradle 项目

Java - java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

构建.gradle-

plugins {
    id 'java'
}

group 'com.HelloWorldTesting'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

jar {
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }
    manifest {
        attributes(
                'Implementation-Title': 'Hello World',
                "Main-Class": "com.HelloWorldTesting.Hello"
        )
    }
    archivesBaseName = 'app'
}

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

类-

public class Hello {
    public static void main(String[] args) {
        // Prints "Hello, World" to the terminal window.
        System.out.println("Hello, World");
    }
}

Error: Invalid or corrupt jarfile HelloWorldArt.main.jar

树 -

.
├── build
│   ├── classes
│   │   └── java
│   │       └── main
│   │           └── Hello.class
│   └── tmp
│       └── compileJava
├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── META-INF
│   └── MANIFEST.MF
├── out
│   └── artifacts
│       ├── HelloWorldArt_jar
│       │   └── HelloWorldArt.jar
│       └── HelloWorldArt_main_jar
│           └── HelloWorldArt.main.jar
├── settings.gradle
├── src
│   ├── main
│   │   ├── java
│   │   │   ├── Hello.java
│   │   │   └── META-INF
│   │   │       └── MANIFEST.MF
│   │   └── resources
│   └── test
│       ├── java
│       └── resources

最佳答案

在 list 中,您已将主类定义为com.HelloWorldTesting.Hello。 查看您的项目树,我可以看到 Hello.java 类位于源文件夹根目录中,而不是在 com.HelloWorldTesting 包中。

尝试像这样设置你的主类: “主类”:“你好”

此外,您的 src 文件夹中有一个 list 文件并且您正在使用 gradle 生成 list :

manifest {
    attributes(
            'Implementation-Title': 'Hello World',
            'Main-Class': 'Hello'
    )
}

拥有多个 list 文件会导致这种意外行为。从源文件夹中删除 list ,运行 gradle clean ,之后构建应该可以工作。

关于java - 如何解决错误: Invalid or corrupt jarfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57216444/

相关文章:

intellij-idea - IntelliJ IDEA 中跳转到上一 View 位置(向后/向前导航)的键盘快捷键

java - Android studio启动失败: Fatal error initializing 'null'

java - JVM 加载中的静态字段

java - Java 中的非虚拟方法

intellij-idea - 在 Intellij IDEA 2016.1.1 的控制台中显示 Gradle 输出

gradle - 如何仅在Gradle任务中列出项目依赖项jar

java - 如何在 IntelliJ IDEA 中设置 SDK?

java - 在 servlet 中捕获类似 cgi 的参数?

java - 使用 JPA 从 child 获取 parent

maven - 将pom文件转换为gradle