2013-09-30 2 views
0

Я искал решение для своей проблемы, но не получил достаточных ответов.NoSuchMethodError, хотя существует самокодированный метод

Я работаю над системой обновления плагинов Bukkit. Таким образом, я сам должен был кодировать классы. Но все время я хотел бы вызвать метод (конкретно: debug(String)) как обернутые способом из another class, я получаю следующее NoSuchMethodError:

[RegionManager] Enabling RegionManager v1.0.0 
[RegionManager] [DEBUG] loading configuration options... 
[RegionManager] [DEBUG] done. 
[RegionManager] [DEBUG] initializing attributes... 
[RegionManager] [DEBUG] done. 
[RegionManager] [DEBUG] registering commands and events... 
[RegionManager] [DEBUG] done. 
[RegionManager] [DEBUG] fetching WorldGuard... 
[RegionManager] [DEBUG] done. 
[RegionManager] [DEBUG] checking for updates... 
[SEVERE] Exception in thread "update/version check" 
[SEVERE] java.lang.NoSuchMethodError: com.lirtistasya.bukkit.util.BukkitPlugin.debug(Ljava/lang/String;)V 
[SEVERE] at com.lirtistasya.bukkit.util.net.Updater.debug(Updater.java:278) 
[SEVERE] at com.lirtistasya.bukkit.util.net.Updater.access$0(Updater.java:277) 
[SEVERE] at com.lirtistasya.bukkit.util.net.Updater$UpdateRunnable.run(Updater.java:284) 
[SEVERE] at java.lang.Thread.run(Unknown Source) 

Было бы здорово, если бы кто-нибудь может помочь мне с этим ...

ответ

2

A NoSuchMethodError обычно является признаком того, что библиотека, которую вы компилируете, более поздняя, ​​чем библиотека, с которой вы работаете. Эта библиотека компиляции имеет этот метод, но в библиотеке времени выполнения нет.

В этом случае, согласно GitHub, этот метод «отладки» был проверен в течение последнего часа, поэтому он действительно, действительно действительно новый. Если вы используете какие-либо существующие банки, которые были построены некоторое время назад, они не будут иметь этот метод, и вы будете получать NoSuchMethodError всякий раз, когда вы пытаетесь вызвать метод.

Вам необходимо проверить свой путь к классу, удалить все старые файлы jar и заменить их новыми банками, которые вы создали сами, используя этот самый последний код.

+0

Ну, я недавно скомпилировал проект, поэтому проблема с другими источниками, не совместимыми с новой версией моего кода, не должна быть проблемой. – mezzodrinker

+0

О, да, я забыл упомянуть, что я уже пытался использовать восстановленный .jar - поскольку «проверенный» уже указывает, это не сработало. – mezzodrinker

Смежные вопросы