NoSuchMethodError:com.google.common.base.Preconditions.checkArgument(ZLjava / lang / String; Ljava / lang / Object; Ljava / lang / Object;)

问题描述 投票:1回答:1

我正在使用telegram-bot-api编写应用程序。我想通过机器人向电报组发送消息。如果我在Eclipse中运行jar应用程序,则效果很好。但是,如果我在本地主机上的Spigotplugin中对其进行测试,则会收到此错误:

[02:40:55 ERROR]: Error occurred while enabling TelegramTest v0.0.1 (Is it up to date?)
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        at com.google.inject.TypeLiteral.getParameterTypes(TypeLiteral.java:278) ~[?:?]
        at com.google.inject.spi.InjectionPoint.forMember(InjectionPoint.java:115) ~[?:?]
        at com.google.inject.spi.InjectionPoint.<init>(InjectionPoint.java:82) ~[?:?]
        at com.google.inject.spi.InjectionPoint.forConstructorOf(InjectionPoint.java:289) ~[?:?]
        at com.google.inject.internal.ConstructorBindingImpl.create(ConstructorBindingImpl.java:115) ~[?:?]
        at com.google.inject.internal.InjectorImpl.createUninitializedBinding(InjectorImpl.java:706) ~[?:?]
        at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:930) ~[?:?]
        at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:852) ~[?:?]
        at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:291) ~[?:?]
        at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:222) ~[?:?]
        at com.google.inject.internal.InjectorImpl.getProviderOrThrow(InjectorImpl.java:1040) ~[?:?]
        at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1071) ~[?:?]
        at com.google.inject.internal.InjectorImpl.getProvider(InjectorImpl.java:1034) ~[?:?]
        at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1086) ~[?:?]
        at org.telegram.telegrambots.meta.ApiContext.getInstance(ApiContext.java:27) ~[?:?]
        at org.telegram.telegrambots.bots.TelegramLongPollingBot.<init>(TelegramLongPollingBot.java:16) ~[?:?]
        at de.iltisauge.telegram.Bot.<init>(Bot.java:14) ~[?:?]
        at de.iltisauge.telegram.TestTelegram.onEnable(TestTelegram.java:9) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:340) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:357) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:317) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.reload(CraftServer.java:741) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.Bukkit.reload(Bukkit.java:535) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchCommand(CraftServer.java:641) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.CraftServer.dispatchServerCommand(CraftServer.java:627) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.aO(DedicatedServer.java:412) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:375) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot.jar:git-Spigot-db6de12-18fbb24]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_241]

我正在使用Telegram-Bot-API-Plugin for Spigot加载TelegramAPI和google番石榴。我正在使用番石榴28.1-jre这是我的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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>de.iltisauge</groupId>
  <artifactId>telegram-test-2</artifactId>
  <version>0.0.1-SNAPSHOT</version>

    <repositories>
        <repository>
            <id>spigot-repo</id>
            <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>org.telegram</groupId>
            <artifactId>telegrambots</artifactId>
            <version>4.8.1</version>
        </dependency>
        <dependency>
            <groupId>org.telegram</groupId>
            <artifactId>telegrambotsextensions</artifactId>
            <version>4.8.1</version>
        </dependency>
        <dependency>
            <groupId>org.telegram</groupId>
            <artifactId>telegrambots-meta</artifactId>
            <version>4.8.1</version>
        </dependency>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>1.8-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

这是我的插件:

package de.iltisauge.telegram;

import org.bukkit.plugin.java.JavaPlugin;

public class TestTelegram extends JavaPlugin {

    @Override
    public void onEnable() {
        Bot bot = new Bot("BOTNAME", "BOT_TOKEN");
        bot.sendMessage(CHAT_ID, 0, "Bot wurde gestartet!");
    }
}
package de.iltisauge.telegram;

import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.api.objects.Update;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;

public class Bot extends TelegramLongPollingBot {

      private String username;

      private String token;

      public Bot(String username, String token) {
        this.username = username;
        this.token = token;
      }

      public void onUpdateReceived(Update update) {
      }

      public void sendMessage(long chatId, int replyId, String text) {
          try {
              execute(new SendMessage().setChatId(Long.valueOf(chatId))
                      .setText(text).setReplyToMessageId(Integer.valueOf(replyId)));
          } catch (TelegramApiException e) {
              e.printStackTrace();
          } 
      }

    public String getBotUsername() {
        return username;
    }

    public String getBotToken() {
        return token;
    }
}

我在stackoverflow上搜索了答案,但是没有找到解决方案。

丹尼尔

java maven guava telegram telegram-bot
1个回答
0
投票

在pom的位置上运行mvn dependency:tree,并检查是否存在多个番石榴相关性。如果确实存在,则使用以下方法排除旧版本:

<exclusions>
    <exlcusion>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
    </exclusion>
</exclusions>

依赖于旧版本。然后再次尝试您的程序。如果不起作用,请添加mvn dependency:tree的结果,以便我可以更好地查看。

© www.soinside.com 2019 - 2024. All rights reserved.