GradleJava和MongoDB
我正在尝试连接到本地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: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
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}创建的群集成功: