Помогите Ошибка в работе с конфигом

Статус
Закрыто для дальнейших ответов.

_MCMaster_

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
DragOn4ik
Hi 🙂
При загрузке плагина получаю ошибку на вот этой строке:
PHP:
FileConfiguration config = getConfig();
Ошибка:
Код:
[SEVERE] Could not load 'plugins/stats.jar' in folder 'plugins'
org.bukkit.plugin.InvalidPluginException: java.lang.IllegalArgumentException: File cannot be null
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:182)     
at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:305)     
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:230)     
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.loadPlugins(CraftServer.java:239)     
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.reload(CraftServer.java:603)     
at org.bukkit.Bukkit.reload(Bukkit.java:275)     
at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23)     
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:189)     
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.dispatchCommand(CraftServer.java:523)     
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.dispatchServerCommand(CraftServer.java:512)     
at net.minecraft.server.v1_5_R3.DedicatedServer.an(DedicatedServer.java:262)     
at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:227)     
at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:477)     
at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:410)     
at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573) 
Caused by: java.lang.IllegalArgumentException: File cannot be null     
at org.apache.commons.lang.Validate.notNull(Validate.java:203)     
at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:170)     
at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:117)     
at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:111)     
at com.dragon4ik.stats.Main.<init>(Main.java:17)     
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)     
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)     
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)     
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)     
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:178)     
... 14 more
Конфиг копирую так:
PHP:
config.options().copyDefaults(true);
Ошибка не пропадает при ручном создании конфига в папке stats.
 
Перед всем этим пиши saveDefaultConfig(), он будет его создавать, если не существует еще.
 
Перед всем этим пиши saveDefaultConfig(), он будет его создавать, если не существует еще.
Спасибо, сейчас попробую... Хотя, я же написал, что даже, если я создал конфиг вручную, всё равно ошибка...
 
Спасибо, сейчас попробую... Хотя, я же написал, что даже, если я создал конфиг вручную, всё равно ошибка...
Ай сорян, не заметил версию. Тут без комментариев. Смотри в сурсы ядра по той ошибке.
 
В сурсах не разбираюсь( Помоги, пожалуйста, если, конечно сможешь...
Ну ты ж кодишь, значит код читать умеешь.
Бери декомпилятор и смотри в ядре вот этот стак трейс:
Код:
Caused by: java.lang.IllegalArgumentException: File cannot be null    
at org.apache.commons.lang.Validate.notNull(Validate.java:203)    
at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:170)    
at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:117)    
at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:111)    
at com.dragon4ik.stats.Main.<init>(Main.java:17)
И выясняй почему файл там null.
 
Декомпилировал ведро, вот код yamlConfiguration.loadConfiguration
Код:
public static YamlConfiguration loadConfiguration(File file)
  {
   Validate.notNull(file, "File cannot be null");
   
   YamlConfiguration config = new YamlConfiguration();
   try
   {
     config.load(file);
   }
   catch (FileNotFoundException ex) {}catch (IOException ex) {
     Bukkit.getLogger().log(Level.SEVERE, "Cannot load " + file, ex);
   } catch (InvalidConfigurationException ex) {
     Bukkit.getLogger().log(Level.SEVERE, "Cannot load " + file, ex);
   }
   
   return config;
  }
Я получаю ошибку File cannot be null
Но почему file == null? Не могу понять...
 
И ещё одно: я создал в папке плагина config.yml, и всё равно null. Это я никак не могу понять... Конфиг как бы есть, и не пустой!
 
Декомпилировал ведро, вот код yamlConfiguration.loadConfiguration
Код:
public static YamlConfiguration loadConfiguration(File file)
  {
   Validate.notNull(file, "File cannot be null");
  
   YamlConfiguration config = new YamlConfiguration();
   try
   {
     config.load(file);
   }
   catch (FileNotFoundException ex) {}catch (IOException ex) {
     Bukkit.getLogger().log(Level.SEVERE, "Cannot load " + file, ex);
   } catch (InvalidConfigurationException ex) {
     Bukkit.getLogger().log(Level.SEVERE, "Cannot load " + file, ex);
   }
  
   return config;
  }
Я получаю ошибку File cannot be null
Но почему file == null? Не могу понять...
Декомпильни метод reloadConfig, там присвоение кажется идёт... Или в конструкторе того метода.
 
Сейчас попробую удалить проверку и компилировать ядро, после чего попробую на нем плагин запустить.
 
public void reloadConfig() {
newConfig = YamlConfiguration.loadConfiguration(configFile);

InputStream defConfigStream = getResource("config.yml");
if (defConfigStream != null) {
YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);

newConfig.setDefaults(defConfig);
}
}
 
1.5.2 (конечно же, динозавр 😁) Просто плагин друг сделать попросил, а он на 1.5.2 почему-то...
 
Вот тут решил затестить. Вместо обьекта config использовал getConfig()
Получилась такая ошибка:
2018-07-31 13:58:30 [SEVERE] Cannot load plugins/Test/config.yml org.bukkit.configuration.InvalidConfigurationException: Top level is not a Map.
at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:57)
at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:138)
at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:105)
at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:175)
at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:117)
at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:111)
at test.Main.onEnable(Main.java:8)
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.loadPlugin(CraftServer.java:282)
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.enablePlugins(CraftServer.java:264)
at net.minecraft.server.v1_5_R3.MinecraftServer.j(MinecraftServer.java:304)
at net.minecraft.server.v1_5_R3.MinecraftServer.e(MinecraftServer.java:283)
at net.minecraft.server.v1_5_R3.MinecraftServer.a(MinecraftServer.java:243)
at net.minecraft.server.v1_5_R3.DedicatedServer.init(DedicatedServer.java:151)
at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:382)
at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573)
2018-07-31 13:58:30 [SEVERE] Cannot load configuration from stream org.bukkit.configuration.InvalidConfigurationException: Top level is not a Map.
at org.bukkit.configuration.file.YamlConfiguration.loadFromString(YamlConfiguration.java:57)
at org.bukkit.configuration.file.FileConfiguration.load(FileConfiguration.java:138)
at org.bukkit.configuration.file.YamlConfiguration.loadConfiguration(YamlConfiguration.java:202)
at org.bukkit.plugin.java.JavaPlugin.reloadConfig(JavaPlugin.java:121)
at org.bukkit.plugin.java.JavaPlugin.getConfig(JavaPlugin.java:111)
at test.Main.onEnable(Main.java:8)
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.loadPlugin(CraftServer.java:282)
at org.bukkit.craftbukkit.v1_5_R3.CraftServer.enablePlugins(CraftServer.java:264)
at net.minecraft.server.v1_5_R3.MinecraftServer.j(MinecraftServer.java:304)
at net.minecraft.server.v1_5_R3.MinecraftServer.e(MinecraftServer.java:283)
at net.minecraft.server.v1_5_R3.MinecraftServer.a(MinecraftServer.java:243)
at net.minecraft.server.v1_5_R3.DedicatedServer.init(DedicatedServer.java:151)
at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:382)
at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573)
 
Есть вариант такой:
Изменить все методы работы с конфигами на методы из новой версии bukkit. Хорошая идея?
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх