IltisAuge
IltisAuge

Reputation: 13

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

I am programming an application with the telegram-bot-api. I want to send a message to a telegramgroup via the bot. This works fine, if I run the jar-application in Eclipse. But if I test it in a Spigotplugin on my localhost, I get this error:

[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]

I am using the Telegram-Bot-API-Plugin for Spigot to load the TelegramAPI and google guava stuff. I am using guava 28.1-jre This is my 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>

And this is my plugin:

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;
    }
}

I searched for answers on stackoverflow but I did not find a solution.

Daniel

Upvotes: 1

Views: 570

Answers (1)

Deshan Koswatte
Deshan Koswatte

Reputation: 138

Run a mvn dependency:tree on the location of your pom and check whether there are more than one guava dependency. If it does then exclude the older versions using:

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

on that dependency which brings the older version. Then try your program again. And if it does not work please add the result of the mvn dependency:tree so that I can have a better look at that.

Upvotes: 1

Related Questions