当前位置: 首页 > 知识库问答 >
问题:

格拉德贾瓦和蒙哥DB

何乐
2023-03-14

我正在尝试连接到本地MongoDB实例(版本3.2)。我已经在构建中指定了依赖项。格拉德尔是这样的:

依赖项{编译'org.mongodb: mongoDB驱动程序: 3.3.0'}

我有一个简单的App.java文件,其中包含以下代码(见下文)。构建/编译Java步骤都运行良好,没有错误。但是当我运行代码时,我得到:“线程”主要“java.lang.noClassDefFoundEror中的异常:com/mongodb/MongoClient at App.main(应用程序.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");
                }

        }
}

共有2个答案

沈伟
2023-03-14

在运行应用程序时,应该将mongodb-client jar及其依赖项添加到类路径中。

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

task run(type: JavaExec) {
    classpath = sourceSets.main.runtimeClasspath
    main = 'App'
}

然后执行分级 --info 运行以启动您的应用程序。我添加了 --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的依赖项。

渐变依赖关系将显示这些依赖关系的树。

齐建安
2023-03-14

最简单的方法是使用Gradle<code>应用程序

apply plugin: 'application'

mainClassName = 'App'

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

repositories {
    mavenCentral()
}

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

 类似资料:
  • 使用Rajawali的主分支,我可以使用 如果我没有设置getMONtCamera(). setLookAt(0,0,0)。如果我做setLookAt,我根本没有旋转。 使用0.9版本,等效的似乎是 但不管setLookAt()如何,这似乎都不起作用。我根本没有旋转。如果我为另一个对象更改getCamera(),旋转就像我预期的那样。 我错过了什么?非常感谢您的帮助。 谢谢

  • 我正在尝试让我现有的Android项目与渐变和智能J 12一起工作。以前,我曾让它与maven一起工作,但这似乎不像gradle那样灵活,而且据我所知,我需要的子文件夹更少。 我的Android项目分为干净的java库(:core)和实际的应用程序(:Android)。这两个项目都在我的主项目文件夹中。 我认为,用这个实现gradle工作的理想解决方案是将(:core)和(:android)项目视

  • 有没有办法让swagger codegen专门使用更新的HTTPClientModule更改为Angular 5生成文件?目前,我甚至无法运行codegen的版本,在线编辑也不会返回https://esi.tech.ccp.is/latest/swagger.json的codegen,即使有,我认为也不会是angular 5。

  • 我已经开始用MongoDB客户端探索Quarkus。我在文档中遇到了很多锅炉板代码。(特别是。BSON) 参考: https://quarkus.io/guides/mongo-guide 我们不能利用注释来生成代码吗?这是有意避免反射开销吗?

  • 我试图用我的gradle项目运行junit测试,但不管是什么测试,它们都会抛出以下堆栈跟踪 我已经看到了一些建议的解决方案,但似乎没有一个奏效。当我在ant中运行它们时,我的测试运行良好。我已经确保xerces使用的是最新版本,我还添加了建议的版本 对于JVM,但似乎什么都不起作用。 任何建议都将不胜感激。我可以根据要求提供更多信息。 **更新** 做了以下更改- 但现在的结果如图所示 **更新2

  • 我正试图用quarkus运行简单的“入门”型gradle项目,每次我的单元测试都会因为这个错误而失败 按照这里的指示https://quarkus.io/guides/gradle-tooling对正在发生的事情有什么建议或想法吗?