我有一个Helloj的Intellij Gradle项目。该程序在IDE中运行,但运行jar文件时出现无效或损坏的jar错误。我对build.gradle和Manifest进行了几处更改,但仍然无法运行。我正在使用Ubuntu 16.04。
我认为问题与清单有关。
IDE-
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)
build.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");
}
}
错误:jar文件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
答案 0 :(得分:0)
在清单中,您已将主类定义为com.HelloWorldTesting.Hello
。
查看您的项目树,可以看到Hello.java类在您的源文件夹根目录中,而不在包com.HelloWorldTesting
中。
尝试像这样设置您的主类:
"Main-Class": "Hello"
此外,您的src文件夹中有一个清单文件,并且您正在使用gradle生成清单:
manifest {
attributes(
'Implementation-Title': 'Hello World',
'Main-Class': 'Hello'
)
}
拥有多个清单文件会导致这种意外行为。从您的源文件夹中删除清单,运行gradle clean
,然后构建应该可以正常工作。