我正在运行一个试图连接到 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 文件并将它们添加到项目中,但这没有效果......