2014-02-15 5 views
0

저는 컴파일 된 jar 파일의 종속성 문제를 해결해야하기 때문에 Gradle과 그 주된 이유를 처음 접했습니다.요람 종속성은 jar 파일에 포함되어 있지 않습니다.

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' 
} 

내 자바는 모든 Mallet라는 타사 라이브러리에 의존 파일 :

여기 내 build.gradle 파일입니다.

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

내가 최고 폴더 아래에 lib 내부 Mallet-2.0.7.jar 배치 : 여기 내 폴더 구조입니다. 그럼 난 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 플러그인이 있습니다.

그래서 gradle 스크립트에 다음 행을 추가 할 때.

apply plugin: 'application' 

배포판을 만들려면 몇 가지 새로운 작업을해야합니다.

+0

감사합니다. 그것은 다음 단계로 나를 데려 갔고 ... 나는 Gradle을 통해 그것을 실행할 수있었습니다. 그럼, 이런 일이 발생했습니다 :'Process 'command'/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/java ''0이 아닌 종료 값 1로 끝났습니다. '내 프로그램에 관한 것인가? 내 Java 경로가 정확합니다. 위의 줄을 내 콘솔에서 실행하고, 그것은'java' 명령의 위치입니다. –

+0

언급을 잊어 버린 경우 ... 내 프로그램 기본 클래스는 일부 명령 줄 인수를 사용합니다. –

+0

'run {args 'your', 'arguments'}'를 build.gradle에 추가하여 인수를 추가 할 수 있습니다. – Aurel

관련 문제