无法从静态上下文中引用 luckperms 非静态方法 getUserManager()

luckperms non-static method getUserManager() cannot be referenced from a static context

我正在尝试使用 uuid 获取用户,但弹出错误提示:

non-static method getUserManager() cannot be referenced from a static context

我尝试将它放在不同的方法中并调用该方法,但没有成功,无论我做什么,该错误仍然会弹出。可能是因为我写的是 LuckPerms 而不是 luckPerms 但我不这么认为。

这是代码(我删除了一些无用的东西) 我试着搜索但找不到任何东西,我也读了 API 大约 5 遍,但没用




// BUNGEECORD
import net.md_5.bungee.api.plugin.Plugin;
// BUNGEECORD

//JAVA
import java.util.EnumSet;
//JAVA

//LuckPerms
import net.luckperms.api.LuckPermsProvider;
import net.luckperms.api.LuckPerms;
//LuckPerms

        public void onPrivateMessageReceived(final PrivateMessageReceivedEvent event) {
           UUID uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + messages.get(0).getContentDisplay()).getBytes());
           net.luckperms.api.model.user.User user = LuckPerms.getUserManager().getUser(uuid); // AND HERE IS THE ERROR
           DataMutateResult result = user.data().add(Node.builder("group.admin").build());
         };

这是我的 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>area</groupId>
    <artifactId>amogus</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <properties>
      <maven.compiler.source>1.8</maven.compiler.source>
      <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <repositories>
     <repository>
         <id>dv8tion</id>
         <name>m2-dv8tion</name>
         <url>https://m2.dv8tion.net/releases</url>
     </repository>
     <repository>
         <id>spigot-repo</id>
         <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
     </repository>
     <repository>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
        <id>bintray-dv8fromtheworld-maven</id>
        <name>bintray</name>
        <url>http://dl.bintray.com/dv8fromtheworld/maven</url>
     </repository>
     <repository>
         <id>bungeecord-repo</id>
         <url>https://oss.sonatype.org/content/repositories/snapshots</url>
     </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>net.dv8tion</groupId>
            <artifactId>JDA</artifactId>
            <version>4.3.0_277</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>2.0.0-alpha4</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>2.0.0-alpha4</version>
        </dependency>
        <dependency>
            <groupId>net.luckperms</groupId>
            <artifactId>api</artifactId>
            <version>5.3</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
                <groupId>org.bukkit</groupId>
                <artifactId>bukkit</artifactId>
                <version>1.12.2-R0.1-SNAPSHOT</version>
                <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>net.md-5</groupId>
            <artifactId>bungeecord-api</artifactId>
            <version>1.16-R0.5-SNAPSHOT</version>
            <type>jar</type>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>net.md-5</groupId>
            <artifactId>bungeecord-api</artifactId>
            <version>1.16-R0.5-SNAPSHOT</version>
            <type>javadoc</type>
            <scope>provided</scope>
        </dependency>
</dependencies>
    <build>
    <plugins>
        <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-jar-plugin</artifactId>
              <version>3.1.0</version>
              <configuration>
                <archive>
                  <manifest>
                    <mainClass>area.amogus</mainClass>
                  </manifest>
                </archive>
              </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.5.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.4.3</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <artifactSet>
                            <excludes>
                                <exclude></exclude>
                            </excludes>
                        </artifactSet>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
       <resources>
     <resource>
       <directory>resources</directory>
     </resource>
   </resources>
</build>

</project>

假设我们有一个 class:

public class MyClass {
    public static void main(String[] args) {
        MyClass.doThis();
    }
    
    public void doThis(){
        System.out.println("do this");
    }  
}

在这种情况下,您将得到与您在代码中得到的完全相同的错误。这意味着,在创建 MyClass 实例之前,我们无法访问 doThis() 方法,例如

MyClass myClass = new MyClass();
myClass.doThis(); //this is valid since we have an instance to call this method on.

我假设您必须以某种方式获取 LuckPerms 对象的实例,然后再对其调用 .getUserManager() 方法。 像这样:

LuckPerms luckPerms = new LuckPerms(); //assuming there's a respective constructor
luckPerms.getUserManager();

您不能使用 LuckPerms.getUserManager(),因为您还没有从 LuckPerms 实例化新对象。 aslo LuckPerms 不能实例化,因为它是一个接口。应该先实现接口再实例化使用

您的代码可能是这样的:

public void onPrivateMessageReceived(final PrivateMessageReceivedEvent event) {
    UUID uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + messages.get(0).getContentDisplay()).getBytes());
    LuckPerms luckPerms = new LuckPerms() {
        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull String getServerName() {
            return null;
        }

        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull UserManager getUserManager() {
            return null;
        }

        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull GroupManager getGroupManager() {
            return null;
        }

        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull TrackManager getTrackManager() {
            return null;
        }

        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull <T> PlayerAdapter<T> getPlayerAdapter(@org.checkerframework.checker.nullness.qual.NonNull Class<T> aClass) {
            return null;
        }

        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull Platform getPlatform() {
            return null;
        }

        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull PluginMetadata getPluginMetadata() {
            return null;
        }

        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull EventBus getEventBus() {
            return null;
        }

        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull Optional<MessagingService> getMessagingService() {
            return Optional.empty();
        }

        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull ActionLogger getActionLogger() {
            return null;
        }

        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull ContextManager getContextManager() {
            return null;
        }

        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull MetaStackFactory getMetaStackFactory() {
            return null;
        }

        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull CompletableFuture<Void> runUpdateTask() {
            return null;
        }

        @Override
        public void registerMessengerProvider(@org.checkerframework.checker.nullness.qual.NonNull MessengerProvider messengerProvider) {

        }

        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull NodeBuilderRegistry getNodeBuilderRegistry() {
            return null;
        }

        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull QueryOptionsRegistry getQueryOptionsRegistry() {
            return null;
        }

        @Override
        public @org.checkerframework.checker.nullness.qual.NonNull NodeMatcherFactory getNodeMatcherFactory() {
            return null;
        }
    };
    net.luckperms.api.model.user.User user = luckPerms.getUserManager().getUser(uuid); // AND HERE IS THE ERROR
    DataMutateResult result = user.data().add(Node.builder("group.admin").build());
}