2014-11-03 2 views
0

Когда я хочу, чтобы запустить баночку из моего Gradle проекта показывает: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 отлично работает, не беспокоясь. Также успешно выполняйте задачу градиента. Но я не могу запустить его, даже если генерируется manifest.mf выглядит следующим образом:

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

Кто-то знает причину того, что происходит с манифеста?

+0

Эта запись Class-Path предусматривает, что банда Ini4j находится рядом с банкой, которую вы строите. Вы убедились в этом, скопировав его там? Для более легкого опыта работы с исходными кодами рассмотрите возможность использования плагина 'application'. –

+0

Я хочу сделать только одну банку. Так что в папке lib есть только тот файл jar, который я хочу запустить. – Levvy

+0

Как я уже сказал, запись класса Path, которую вы объявили, требует ini4j Jar в том же каталоге, что и ваш Jar. Запись не требуется для запуска приложения с помощью задачи «запускать» плагина приложения. –

ответ

0

Скорее всего, когда вы пытаетесь запустить его, вы испортите что-то с помощью classpath, поэтому используется неверная версия InvalidFileFormatException. Если у вас есть толстая банка, это может быть конфликт версий во время сборки.

Смежные вопросы