1

我正在运行一个试图连接到 MongoDB 的 Glassfish 服务器。起初,我为服务器和 MongoDB 创建了单独的项目。所以现在我正在尝试合并这些项目,但似乎我尝试做的任何事情都会导致失败。

我得到的当前错误是:

2018-07-05T19:54:36.249+0200|Severe: java.lang.NoClassDefFoundError: org/bson/conversions/Bson

我很清楚错误发生在运行时,可能的原因是我的类路径。

目前,我将所有代码从一个项目复制到另一个项目,添加了 Maven 依赖项,然后发生以下情况:

  • 如果我为我的 MongoDB 创建一个单独的 .java 文件并在 Glassfish 服务器所在的同一文件夹中运行它,它工作得非常好。

  • 如果我运行服务器并尝试调用其他类的方法(稍作修改),则会出现上面的错误

没有错误的简化代码示例:

import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;

public class MyClass{
    public static void main(String[]args){
        String ip = "127.0.0.1";
        int port = 27017;
        MongoClient mongoClient = new MongoClient(ip,port);

        /* Remaining code */

    }
}

有错误:

import org.bson.Document;
import org.bson.conversions.Bson;
import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.MongoIterable;
import com.mongodb.client.model.Filters;
import com.mongodb.client.model.Updates;

public class MyClass{
   private MongoClient mongoClient;
   public MyClass(String ip, int port){
       mongoClient = new MongoClient(ip, port); // Error called here
   }

   /* Remaining code */

}

从 server.java 文件调用:

MyClass mc = new MyClass("127.0.0.1",27017);

我还尝试单独下载所有 bson jar 文件并将它们添加到项目中,但这没有效果......

4

1 回答 1

0

对我来说可行的解决方案是删除整个项目并再次创建它。显然 Eclipse 有问题,或者我之前犯了一个错误并忘记了它。

于 2018-07-08T13:34:03.540 回答