【发布时间】:2020-05-06 09:36:01
【问题描述】:
我有一个 Discord Bot(在 Java 中),如果我直接在 IntelliJ (Maven) 中运行该机器人,一切都很好 但是,如果我想在 JAR 中构建 Bot,我会收到此错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/mongodb/MongoClient
at de.therealjan.TheRealBot.MongoDB.<init>(MongoDB.java:14)
at de.therealjan.TheRealBot.TheRealBot.main(TheRealBot.java:16)
Caused by: java.lang.ClassNotFoundException: com.mongodb.MongoClient
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
MongoDB.java:
package de.therealjan.TheRealBot;
import com.mongodb.DB;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientURI;
import java.net.UnknownHostException;
public class MongoDB {
public MongoClient mongoClient;
public DB db;
public MongoDB() {
try {
mongoClient = new MongoClient(new MongoClientURI("mongodb://localhost:27017"));
} catch (UnknownHostException e) {
e.printStackTrace();
}
db = mongoClient.getDB("TheRealBot-JDA");
}
}
我认为 Maven 没有正确构建它,但我不知道。 (我运行了 Maven Build 包)
【问题讨论】:
-
Maven 默认不包含依赖项 - 您需要提供自定义构建步骤以根据您的需要包含依赖项。自从我使用 maven 已经有一段时间了,但 something like this 可能会导致解决方案
-
您可以查看我的回答here。它引用了另一个依赖,但步骤是一样的。