【发布时间】:2022-01-12 20:44:32
【问题描述】:
我试图在我的数据库中查找用户的 UUID,但它无缘无故地返回 null。它在 connect() 方法中。我可以手动找到它,也可以在我的 javaScript 项目中找到它。但由于某种原因,我收到了这个错误。
public final class DiscordLink extends JavaPlugin implements Listener {
public MongoCollection<Document> users;
public MongoDatabase mongoDatabase;
@Override
public void onEnable() {
System.setProperty("DEBUG.GO", "true");
System.setProperty("DB.TRACE", "true");
Logger mongoLogger = Logger.getLogger("org.mongodb.driver");
mongoLogger.setLevel(Level.WARNING);
connect();
getServer().getConsoleSender().sendMessage(ChatColor.GREEN + "[DiscordLink] Plugin enabled...");
getServer().getPluginManager().registerEvents(this, this);
}
@Override
public void onDisable() {
getServer().getConsoleSender().sendMessage(ChatColor.RED + "[DiscordLink] Plugin disabled...");
}
public void connect() {
MongoClient mongoClient = MongoClients.create("MONGOURI");
MongoDatabase mongoDatabase = mongoClient.getDatabase("myFirstDatabase");
MongoCollection<Document> users = mongoDatabase.getCollection("users");
Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "[DiscordLink] Connected to database!");
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
Document document = users.find(Filters.eq("mcUUID", player.getUniqueId().toString())).first();
if(document != null) {
player.kickPlayer(ChatColor.RED + "Discord Authentication Failed!");
} else { return; }
错误:
[15:43:01 ERROR]: Could not pass event PlayerJoinEvent to DiscordLink v1.0-SNAPSHOT
java.lang.NullPointerException: Cannot invoke "com.mongodb.client.MongoCollection.find(org.bson.conversions.Bson)" because "this.users" is null
【问题讨论】:
-
这能回答你的问题吗? Avoiding NullPointerException in Java
-
不会在
connect函数中声明MongoCollection<Document> users来屏蔽类属性吗?如果您以users =开头那一行,它的行为是否相同?
标签: java database mongodb minecraft