2014-11-03 125 views
0

當我想從我的gradle這個項目運行的jar它表明:java.lang.NoClassDefFoundError:組織/ ini4j/InvalidFileFormatException通過gradle這個

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可以正常工作,沒有任何問題。也建立gradle任務成功。 但我不能運行它,即使產生MANIFEST.MF看起來像這樣:

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

有人知道什麼是與艙單發生的原因是什麼?

+0

該Class-Path條目要求ini4j Jar坐在您正在構建的Jar旁邊。你有沒有確定,複製它?要獲得更容易的即開即用體驗,請考慮使用「應用程序」插件。 – 2014-11-03 12:26:39

+0

我只想製作一個罐子。所以在lib文件夾中只有那個我想運行的jar文件 – Levvy 2014-11-03 12:48:54

+0

正如我所說的,你聲明的Class-Path條目需要一個ini4j Jar與你的Jar在同一個目錄中。使用應用程序插件的「運行」任務運行應用程序時,不應要求該條目。 – 2014-11-03 12:55:36

回答

0

大多數情況下,當您嘗試運行它時,會使用類路徑來篡改某些內容,因此會使用InvalidFileFormatException的錯誤版本。如果你有胖的jar,那麼在構建時可能會發生版本衝突。