![](/img/trans.png)
[英]Error :: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
[英]NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)
我正在使用電報機器人 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 guava 的東西。 我正在使用番石榴 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上搜索了答案,但沒有找到解決方案。
丹尼爾
在 pom 的位置運行mvn dependency:tree
並檢查是否有多個 guava 依賴項。 如果確實如此,則使用以下命令排除舊版本:
<exclusions>
<exlcusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
依賴於帶來舊版本的依賴。 然后再次嘗試您的程序。 如果它不起作用,請添加mvn dependency:tree
的結果,以便我可以更好地查看它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.