【问题标题】:Gradle not compiling dependency jars in lib folderGradle没有编译lib文件夹中的依赖jar
【发布时间】:2017-04-02 10:16:49
【问题描述】:

我现在是 gradle 和学习的新手。我正在尝试使用 gradle 构建一个可运行的 jar(我构建的 jar 应该从命令提示符运行)。我刚从一个简单的带有依赖项的HelloWorld 项目开始,并尝试使用 gradle 构建它。我没有使用 Maven。所以我将依赖 jar 添加到项目文件夹内的 lib 文件夹中。以下是详细信息。

Gradle 版本:3.1 Eclipse 版本:霓虹灯

HelloWorld.java

package com.padhu.test;
import org.joda.time.LocalTime;

public class HelloWorld {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        LocalTime currentTime = new LocalTime();
        System.out.println("The current local time is: " + currentTime);

        System.out.println("Hello World");

    }

}

项目结构:

project_structure

build_path_snap

build_path_details

build.gradle 文件:

apply plugin: 'java'
apply plugin: 'application'
mainClassName = 'com.padhu.test.HelloWorld'

repositories {

   flatDir {
      dirs 'lib'
   }
}

dependencies {


    compile files(fileTree(dir: 'lib', includes: ['*.jar']))

    }

jar {
  manifest {
    attributes(

      'Main-Class': 'com.padhu.test.HelloWorld'
    )
  }
}

我可以在我的 cmd 中成功执行 gradle build 并且生成 jar 文件。但在 jar 文件中,我只能看到 HelloWorld 文件夹结构,但看不到依赖文件。所以我无法从命令提示符运行 jar,因为我收到了 NoClassDefFoundError: org/joda/time/LocalTime..

我尝试通过搜索和阅读博客自己解决问题..但我无法成功运行 jar。

请帮助我。

【问题讨论】:

    标签: java eclipse gradle jar build.gradle


    【解决方案1】:

    看来,您误会了,application 插件的行为方式。它不会创建一个包含所有依赖项的所谓 fat-jar,而是创建一个 jar 并能够运行它,将所有依赖项添加到类路径中。

    您可以按如下方式运行您的应用程序:

    gradle run
    

    或者您可以使用自动应用的分发插件并使用脚本创建项目的分发以启动它,并将所有依赖库放在单独的文件夹中。只需将其运行为:

    gradle distZip
    

    您可以在official user guide 中了解更多信息。

    【讨论】:

    • 在我的情况下,我从 maven 存储库中正确添加了我需要的依赖项,它会为我的本地存储库下载并使用我的应用程序创建一个 jar。但是我创建了两个自定义依赖项,所以我将它放在根文件夹项目的 libs 文件夹中,然后添加了以下行:compile fileTree(dir: 'libs', include: '*.jar')。添加到我的 build.gradle 中的依赖项,但就像 gradle 不考虑这个库一样,自定义依赖项仍然缺失。我该怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 2014-04-25
    • 2015-03-12
    • 1970-01-01
    相关资源
    最近更新 更多