java.lang.NoClassDefFoundError:org/ini4j/InvalidFileFormatException by gradle

java.lang.NoClassDefFoundError:org/ini4j/InvalidFileFormatException by gradle,java,gradle,executable-jar,manifest.mf,ini4j,Java,Gradle,Executable Jar,Manifest.mf,Ini4j,当我想从gradle项目运行jar时,它显示: Exception in thread "main" java.lang.NoClassDefFoundError: org/ini4j/InvalidFileFormatException 简而言之,我的build.gradle: apply plugin: 'java' apply plugin: 'pmd' apply plugin: 'application' apply plugin: 'eclipse' version = "0.0

当我想从gradle项目运行jar时,它显示:

Exception in thread "main" java.lang.NoClassDefFoundError: org/ini4j/InvalidFileFormatException
简而言之,我的build.gradle:

apply plugin: 'java'
apply plugin: 'pmd'
apply plugin: 'application'
apply plugin: 'eclipse'

version = "0.0.0"
group= "grm"

mainClassName = 'grm.bol.Launcher'

repositories {
    mavenCentral()
    mavenLocal()
}

dependencies {
    compile group: 'org.ini4j', name: 'ini4j', version: 'latest.release'
}

jar {
    manifest {
    attributes "Main-Class": "grm.bol.Launcher"
    attributes "Class-Path": configurations.compile.collect { it.getName() }.join(' ')
    }
}
当我在eclipse中运行时,ini4j在没有任何工作的情况下工作良好。此外,构建梯度任务已成功完成。 但即使生成的manifest.mf如下所示,我也无法运行它:

Manifest-Version: 1.0
Main-Class: grm.bol.Launcher
Class-Path: ini4j-0.5.2.jar

有人知道清单发生什么的原因吗?

最可能的是,当您试图运行清单时,会使类路径混乱,因此使用了错误版本的InvalidFileFormatException。如果您有fat jar,则在构建时可能存在版本冲突。

该类路径条目要求ini4j jar位于您正在构建的jar旁边。你把它复制到那里,确保了吗?对于一个更容易的箱外体验,考虑使用<代码>应用程序>代码>插件。我只想制作一个JAR。所以在lib文件夹中,只有我想运行的jar文件,正如我所说的,您声明的类路径条目需要一个与您的jar位于同一目录中的INI4JJAR。使用应用程序插件的
run
任务运行应用程序时,不需要输入该项。将ini4j文件复制到lib文件夹中是可行的。