Reputation: 13
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
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