我有一个HelloWorld的Intellij Gradle项目。该程序在IDE中运行,但运行jar文件时出现无效或损坏的jar错误。我对build.gradle和Manifest进行了几次更改,但仍然无法运行。我使用的是Ubuntu 16.04。
我觉得问题和载货清单有关。
集成开发环境-
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)
建筑物
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
1条答案
按热度按时间fjaof16o1#
在清单中,您已经将主类定义为
com.HelloWorldTesting.Hello
。查看项目树,我可以看到Hello.java类位于源文件夹根目录中,而不在包com.HelloWorldTesting
中。请尝试如下设置主类:
"Main-Class": "Hello"
此外,您的src文件夹中还有一个清单文件并且您正在使用gradle生成一个清单:
拥有多个清单文件会导致此意外行为。请从源文件夹中删除清单,运行
gradle clean
,之后构建应该可以正常工作。