GradleJava和MongoDB

GradleJava和MongoDB,java,mongodb,gradle,Java,Mongodb,Gradle,我正在尝试连接到本地MongoDB实例(版本3.2)。我在build.gradle中指定了一个依赖项,如下所示: 依赖项{compile'org.mongodb:mongodb驱动程序:3.3.0'} 我有一个简单的App.java文件,其中包含以下代码(见下文)。构建/编译步骤都运行良好,没有错误。但是当我运行代码时,我得到:“线程中的异常”main“java.lang.NoClassDefFoundError:com/mongodb/MongoClient位于App.main(App.jav

我正在尝试连接到本地MongoDB实例(版本3.2)。我在build.gradle中指定了一个依赖项,如下所示:

依赖项{compile'org.mongodb:mongodb驱动程序:3.3.0'}

我有一个简单的App.java文件,其中包含以下代码(见下文)。构建/编译步骤都运行良好,没有错误。但是当我运行代码时,我得到:“线程中的异常”main“java.lang.NoClassDefFoundError:com/mongodb/MongoClient位于App.main(App.java:9)

我是Java新手。我不确定除了在build.gradle依赖项列表中引用驱动程序外,是否还需要下载驱动程序,如果需要,是否需要将其放置在何处

下面是我的src/main/java/App.java:

import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;

public class App{
        public static void main (String[] args){
                System.out.println("Connecting ... ");
                try {
                        MongoClient client = new MongoClient();
                }
                catch(Exception e) {
                        System.out.println("Failed to connect to MongoDB");
                }

        }
}

运行应用程序时,应该将mongodb客户机jar及其依赖项添加到类路径中

最简单的方法是从Gradle启动应用程序。将以下任务添加到
构建中。Gradle

task run(type: JavaExec) {
    classpath = sourceSets.main.runtimeClasspath
    main = 'App'
}
然后执行
gradle--info run
启动应用程序。我添加了
--info
参数,以便gradle将记录用于启动应用程序的命令。在我的计算机上,显示的命令是:

 /usr/lib/jvm/java-8-openjdk/bin/java -Dfile.encoding=UTF-8 -Duser.country=US -Duser.language=en -Duser.variant -cp /tmp/App/build/classes/main:/tmp/App/build/resources/main:/home/wg01018/.gradle/caches/modules-2/files-2.1/org.mongodb/mongodb-driver/3.3.0/398df8cc99f36c81344f37401b4284d39f84f6a5/mongodb-driver-3.3.0.jar:/home/wg01018/.gradle/caches/modules-2/files-2.1/org.mongodb/bson/3.3.0/d57b1626e7007a93deb12b2b607e85f6822bf060/bson-3.3.0.jar:/home/wg01018/.gradle/caches/modules-2/files-2.1/org.mongodb/mongodb-driver-core/3.3.0/9af003a316f17323ade866ba5a484a03de6ff025/mongodb-driver-core-3.3.0.jar App
您可以看到,类路径包含mongodb驱动程序jar,但也包含一些附加的jar,它们是mongodb驱动程序jar的依赖项


gradle依赖项
将显示这些依赖项的树。

最简单的方法是使用gradle
应用程序
插件。
应用程序插件将自动添加运行任务,该任务将执行指定的主类,所有运行时依赖项将自动放在类路径上:

apply plugin: 'application'

mainClassName = 'App'

dependencies {
    compile 'org.mongodb:mongodb-driver:3.3.0'
}

repositories {
    mavenCentral()
}

您可以通过以下方式运行应用程序:
gradle run

我使用以下命令运行应用程序:java-cp build/classes/main app您的类路径参数,-cp没有指定mongo驱动程序jar。由于您是java新手,我强烈建议您在介绍之前后退一步,进一步了解类路径这里有官方文档,下面是对它的一个很好的补充:我逐字添加了它..用gradle运行“run”任务..运行:“java-cp build/classes/main App”“从我的项目根。。同样的结果。我有没有提到我对Gradle/Java完全陌生。。我不确定是否应该以任何方式修改该声明。当您运行
gradle run
时,是否看到应用程序正在尝试连接到MongoDB?是的:运行连接。。。2016年11月4日下午3:02:44 com.mongodb.diagnostics.logging.JULLogger日志信息:使用设置{hosts=[127.0.0.1:27017],mode=SINGLE,requiredClusterType=UNKNOWN,serverSelectionTimeout='30000ms',maxWaitQueueSize=500}创建的群集成功: