我是Gradle的新手,也是我使用它的主要原因,因为我需要为我编译的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.*
...现在我不知道该怎么办...请帮忙!
答案 0 :(得分:3)
不包括依赖项,因为您没有创建项目的分布。在Maven中,它被称为集合。
如果您直接从命令行调用您的应用程序,则不是Gradle的问题。
无论如何,有一个Gradle插件可以创建一个发行版并添加shell脚本来执行你的应用程序。
因此,当您将以下行添加到gradle脚本时。
apply plugin: 'application'
您将获得一些新任务来创建分发。