【问题标题】:Gradle Dependencies aren't included in jarGradle 依赖项不包含在 jar 中
【发布时间】:2014-02-15 21:24:24
【问题描述】:

我对 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.*...现在我不知道该怎么办...请帮忙!

【问题讨论】:

    标签: java gradle build.gradle


    【解决方案1】:

    不包含依赖项,因为您没有创建项目的发行版。在 Maven 中,它被称为程序集。

    如果您直接从命令行调用应用程序,则与 Gradle 无关。

    无论如何,有一个 Gradle 插件可以创建分发并添加 shell 脚本来执行您的应用程序。

    因此,当您将以下行添加到 gradle 脚本时。

    apply plugin: 'application'
    

    您将获得一些新任务来创建分发。

    【讨论】:

    • 谢谢!它确实把我带到了下一步……我可以通过 Gradle 来run 它。好吧,然后这件事发生了:Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1 这是关于我的程序吗?我的 Java 路径是正确的。我在控制台上运行上面的行,它是java 命令的位置。
    • 如果我忘了提...我的程序主类确实接受了一些命令行参数。
    • 您可以通过将run { args 'your', 'arguments' } 添加到您的build.gradle 来添加参数
    • 我猜退出值来自缺少的参数。但我不确定,因为我不知道你的源代码是什么样的。你有没有尝试传递论点? shell 脚本会将这些转发到主类。
    • 我有各种System.exit(0); 来管理传入的参数,当然不是1。另外,当我通过 Gradle 运行时,我实际上不知道如何通过命令行传递参数。
    猜你喜欢
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    相关资源
    最近更新 更多