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

将mongodb连接到minecraft插件

包沈义
2023-03-14

我正在为我的minecraft服务器制作一个minecraft插件,但是我有一个错误,我找不到解决方案。上下文:我想存储级别/xp/等级等玩家的数据...你能帮我做插件的这一部分吗,我是Java的初学者。

这是我的代码

import com.mongodb.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import me.codexis.velocitylobbygeneral.commands.Lobby;
import me.codexis.velocitylobbygeneral.commands.MoveBot;
import me.codexis.velocitylobbygeneral.commands.Test;
import me.codexis.velocitylobbygeneral.event.*;
import org.bson.Document;
import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;

public final class VelocityLobbyGeneral extends JavaPlugin {

    private static VelocityLobbyGeneral instance;

    @Override
    public void onEnable() {
        setInstance(this);

        // Listeners
        getServer().getPluginManager().registerEvents(new OnJoinQuit(), this);
        getServer().getPluginManager().registerEvents(new FormatChat(), this);
        getServer().getPluginManager().registerEvents(new Scoreboard(), this);

        // Channels
        getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");

        // Commands
        new Lobby();
        new MoveBot();
        new Test();

        // Connection to database
        MongoClient mongoClient = (MongoClient) MongoClients.create("mongodb+srv://myusername:@databasemc.ehssc.mongodb.net/VelocityMC?retryWrites=true&w=majority");
        MongoDatabase mongoDatabase = mongoClient.getDatabase("VelocityMC");
        MongoCollection<Document> mongoCollection = mongoDatabase.getCollection("Vide");
        getLogger().info(ChatColor.GREEN + "Connected to Database");

        getLogger().info("=============================================");
        getLogger().info("   >>>> Velocity Lobby General Loaded <<<<   ");
        getLogger().info("=============================================");
   }

   @Override
   public void onDisable() {

       getLogger().info("===============================================");
       getLogger().info("   >>>> Velocity Lobby General disabled <<<<   ");
       getLogger().info("===============================================");

   }

   public static VelocityLobbyGeneral getInstance(){
       return instance;
   }

   private static void setInstance(VelocityLobbyGeneral instance){
      velocityLobbyGeneral.instance = instance;
   }

}

这是我的错误:

[12:32:49 WARN]: java.lang.NoClassDefFoundError: com/mongodb/client/MongoClients
[12:32:49 WARN]:        at VelocityLobbyGeneral.jar//me.codexis.velocitylobbygeneral.VelocityLobbyGeneral.onEnable(VelocityLo 
bbyGeneral.java:38)
[12:32:49 WARN]:        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264)
[12:32:49 WARN]:        at 
org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370)
[12:32:49 WARN]:        at 
org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500)
[12:32:49 WARN]:        at 
org.bukkit.craftbukkit.v1_17_R1.CraftServer.enablePlugin(CraftServer.java:535)
[12:32:49 WARN]:        at 
org.bukkit.craftbukkit.v1_17_R1.CraftServer.enablePlugins(CraftServer.java:449)
[12:32:49 WARN]:        at 
org.bukkit.craftbukkit.v1_17_R1.CraftServer.reload(CraftServer.java:970)
[12:32:49 WARN]:        at org.bukkit.Bukkit.reload(Bukkit.java:769)
[12:32:49 WARN]:        at         org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:54)
[12:32:49 WARN]:        at     org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159)
[12:32:49 WARN]:        at org.bukkit.craftbukkit.v1_17_R1.CraftServer.dispatchCommand(CraftServer.java:838)
[12:32:49 WARN]:        at     org.bukkit.craftbukkit.v1_17_R1.CraftServer.dispatchServerCommand(CraftServer.java:801)
[12:32:49 WARN]:        at net.minecraft.server.dedicated.DedicatedServer.handleCommandQueue(DedicatedServer.java:518)
[12:32:49 WARN]:        at     net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:480)
[12:32:49 WARN]:        at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1475)
[12:32:49 WARN]:        at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1274)
[12:32:49 WARN]:        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319)
[12:32:49 WARN]:        at java.base/java.lang.Thread.run(Thread.java:831)
[12:32:49 WARN]: Caused by: java.lang.ClassNotFoundException: com.mongodb.client.MongoClients
[12:32:49 WARN]:        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:146)
[12:32:49 WARN]:        at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:103)
[12:32:49 WARN]:        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
[12:32:49 WARN]:        ... 18 more

谁能帮帮我吗。

Pom。xml:

<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>me.codexisphantom</groupId>
<artifactId>VelocityLobby</artifactId>
<version>1.0</version>
<packaging>jar</packaging>

<name>VelocityLobby</name>

<description>Official VelocityMC Plugin</description>
<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<url>www.velocity-net.com</url>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.2.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <createDependencyReducedPom>false</createDependencyReducedPom>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

<repositories>
    <repository>
        <id>papermc-repo</id>
        <url>https://papermc.io/repo/repository/maven-public/</url>
    </repository>
    <repository>
        <id>sonatype</id>
        <url>https://oss.sonatype.org/content/groups/public/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>io.papermc.paper</groupId>
        <artifactId>paper-api</artifactId>
        <version>1.17.1-R0.1-SNAPSHOT</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

Mongodb依赖项:

    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
        <version>3.12.10</version>
        <scope>compile</scope>
    </dependency>

添加的插件:

    <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-assembly-plugin</artifactId>
         <executions>
             <execution>
                 <phase>package</phase>
                 <goals>
                     <goal>single</goal>
                 </goals>
                 <configuration>
                     <descriptorRefs>
                         <descriptorRef>jar-with-dependencies</descriptorRef>
                     </descriptorRefs>
                 </configuration>
             </execution>
         </executions>
     </plugin>

共有1个答案

隆谦
2023-03-14

在maven配置中,您正在导入MongoDB。因此,它将编译,您将能够在开发时使用它。

但是,在编译时,它不会包含在最终的jar中。例如MongoDB不在spiget中,它将创建您的错误(找不到MongoDB类)。

要修复它,有多个教程1、2、3、4...我相信我们可以找到更多。

我建议您像这样导入mongo db:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-java-driver</artifactId>
    <version>3.12.10</version> <!-- The version that you want -->
    <scope>compile</scope> <!-- In my maven project, it include this project in builded jar -->
</dependency>

您可以在此处找到所有版本的MongoDB

我的完整配置有效:

<properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
 
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.2.4</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <createDependencyReducedPom>false</createDependencyReducedPom>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-assembly-plugin</artifactId>
             <executions>
                 <execution>
                     <phase>package</phase>
                     <goals>
                         <goal>single</goal>
                     </goals>
                     <configuration>
                         <descriptorRefs>
                             <descriptorRef>jar-with-dependencies</descriptorRef>
                         </descriptorRefs>
                     </configuration>
                 </execution>
             </executions>
         </plugin>
    </plugins>
   </build>

 <repositories>
   <repository>
       <id>sonatype</id>
       <url>https://oss.sonatype.org/content/groups/public/</url>
   </repository>
 </repositories>

 <dependencies>
     <dependency>
       <groupId>org.mongodb</groupId>
       <artifactId>mongo-java-driver</artifactId>
       <version>3.12.10</version>
       <scope>compile</scope>
   </dependency>
 </dependencies>
 类似资料:
  • 下面是/etc/kafka/connect-MongoDB-source.properties中的MongoDB配置 但是低于误差 以独立模式运行连接器。 我在debezium-debezium-连接器-mongob-1.0.0/debezium-connector-mongodb-1.0.0.Final.jar 类路径的设置如下 使用插件路径,我看到它能够注册和加载所有必需的插件。 但最后还是同

  • 我在我的运行系统中有MongoDB和Robomongo,我使用Robomongo作为客户端。 我已将MongoDB安装在另一个系统上,我将其视为服务器,我想将我系统的Robomongo(作为客户端)连接到另一个系统(服务器)上的MongoDB。我应该采取哪些步骤来实现同样的目标? 我使用的是机器名,因为系统的IP地址不是静态的。但即使我使用系统的IP地址,我也会遇到同样的错误: 连接失败,无法连接

  • 我正在尝试使用MongoDB指南针使用Atlas

  • 问题内容: 我正在使用docker- compose 运行一个应用程序。一切正常,通过连接到容器内的Mongo,我可以看到所有数据。但是,当我连接到RoboMongo时,我看不到任何数据。 我该如何解决这个问题? 问题答案: 您应该在Docker容器内建立到MongoDB的Robomongo SSH隧道连接。首先,您应该在docker容器中安装一个ssh服务器。 https://docs.dock

  • 我有一个web应用程序,它使用Spring Boot来处理后端逻辑。我正在尝试集成mongodb以跟踪有关此webapp用户的一些信息。我在mongodb Atlas上创建了一个数据库,通过Mongo Shell连接正常。当我尝试与Spring连接时,问题就出现了。让我给你看看所有的细节 在Atlas中,我将此IP地址(0.0.0.0/0(包括您当前的IP地址))添加到安全性中 然后我创建了一个名

  • 我有一个托管在Atlas MongoDB云集群上的mongob数据库。我目前正在使用mongoose访问node.js应用程序中的数据库: 因为Atlas MongoDB Cloud有一个白名单,而且Heroku不提供为我的应用程序获取固定IP地址的可能性,所以我正在使用Fixie插件。基本上,Fixie充当出站流量的代理。 可以用猫鼬做吗? 猫鼬。connect函数接受一个option参数,但我