2014-02-15 4 views
0

Я очень новичок в Gradle и основной причине, я использую его, потому что мне нужно решить проблемы с зависимостями для моего скомпилированного jar.Gradle Dependencies не включены в jar

Вот мой build.gradle файл:

apply plugin: 'java' 
apply plugin: 'eclipse' 

version = '0.9' 

jar { 
    manifest { 
     attributes 'Main-Class': 'wd.nlp.FileImport', 'Implementation-Title': 'WD\ 
NLP', 'Implementation-Version': version 
    } 
} 

repositories { 
    flatDir(dirs: 'lib') 
} 

dependencies{ 
    compile 'mallet:mallet:2.0.7' 
} 

Мои файлы Java все зависит от библиотеки третьей стороны, которая называется Mallet. Вот моя структура папок:

|---1.10 
|-----taskArtifacts 
|-build 
|---classes 
|-----main 
|-------wd 
|---------nlp 
|---dependency-cache 
|---libs 
|---tmp 
|-----jar 
|-lib 
|-src 
|---main 
|-----java 
|-------wd 
|---------nlp 
|-----resources 

Я поместил Mallet-2.0.7.jar внутри lib под верхней папке. Тогда я использовал gradle build команду и попытаться запустить мой класс:

java -classpath build/libs/JavaClassifier-0.9.jar wd.nlp.FileImport -train ...

Тогда я сказал:

Exception in thread "main" java.lang.NoClassDefFoundError: cc/mallet/pipe/Pipe 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2531) 

путь В Mallet библиотеки является cc.mallet.* ... и теперь я не знаю, что делать ... пожалуйста, помогите!

ответ

3

Зависимость не включена, потому что вы не создаете распределение проекта. В Maven это называется сборкой.

Если вы вызываете свое приложение непосредственно из командной строки, это не вопрос Gradle.

В любом случае есть плагин Gradle, который создает дистрибутив и добавляет сценарии оболочки для выполнения вашего приложения.

Итак, когда вы добавляете следующую строку в сценарий градации.

apply plugin: 'application' 

У вас возникнут новые задачи по созданию дистрибутива.

+0

Спасибо! Это привело меня к следующему шагу ... и я смог «запустить» его через Gradle. Ну, тогда это произошло: команда «Процесс» /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/java '' завершена с ненулевым значением выхода 1' Это о моей программе? Мой путь Java правильный. Я запускаю строку выше на моей консоли, и это местоположение команды 'java'. –

+0

Если я забыл упомянуть ... мой основной класс программы принимает некоторые аргументы командной строки. –

+0

Вы можете добавить аргументы, добавив 'run {args 'your', 'arguments'}' в ваш build.gradle – Aurel

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