Java.lang.IllegalAccessError hatası çözümü

Katılım
5 Mart 2014
Mesajlar
5.701
Makaleler
12
Çözümler
44
JAVA eklentisi kodluyorum. Kodu güncelliyorum, eklentiyi de güncelledikten sonra bu hatayı veriyor. Bu kodları siliyorum, güncelleme sonrasında varmış gibi halen aynı hatayı veriyor. Ubuntu kullanıyorum. Windows'ta böyle bir problem yoktu. Nasıl çözülür?

Kod:
java.lang.IllegalAccessError: tried to access field Plugin.Main.HealthCenter from class Plugin.MinecraftFunctions
        at Plugin.MinecraftFunctions.LoadHealthCenter(MinecraftFunctions.java:82) ~[?:?]
        at Plugin.Main.onEnable(Main.java:146) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[Server.jar:git-Spigot-79a30d7-f4830a1]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337) [Server.jar:git-Spigot-79a30d7-f4830a1]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:403) [Server.jar:git-Spigot-79a30d7-f4830a1]
        at com.rylinaux.plugman.util.PluginUtil.load(PluginUtil.java:309) [PlugManX.jar:?]
        at com.rylinaux.plugman.util.PluginUtil.load(PluginUtil.java:267) [PlugManX.jar:?]
        at com.rylinaux.plugman.util.PluginUtil.reload(PluginUtil.java:393) [PlugManX.jar:?]
        at com.rylinaux.plugman.command.ReloadCommand.execute(ReloadCommand.java:122) [PlugManX.jar:?]
        at com.rylinaux.plugman.PlugManCommandHandler.onCommand(PlugManCommandHandler.java:95) [PlugManX.jar:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) [Server.jar:git-Spigot-79a30d7-f4830a1]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [Server.jar:git-Spigot-79a30d7-f4830a1]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:648) [Server.jar:git-Spigot-79a30d7-f4830a1]
        at org.bukkit.Bukkit.dispatchCommand(Bukkit.java:574) [Server.jar:git-Spigot-79a30d7-f4830a1]
        at Plugin.Main.onCommand(Main.java:2782) [Mucosoft.jar:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) [Server.jar:git-Spigot-79a30d7-f4830a1]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [Server.jar:git-Spigot-79a30d7-f4830a1]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:648) [Server.jar:git-Spigot-79a30d7-f4830a1]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:634) [Server.jar:git-Spigot-79a30d7-f4830a1]
        at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:444) [Server.jar:git-Spigot-79a30d7-f4830a1]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:407) [Server.jar:git-Spigot-79a30d7-f4830a1]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [Server.jar:git-Spigot-79a30d7-f4830a1]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [Server.jar:git-Spigot-79a30d7-f4830a1]
        at java.lang.Thread.run(Thread.java:750) [?:1.8.0_362]
 
IllegalAccessError hatası, bir sınıfın başka bir alana izinsiz erişmeye çalıştığınızda meydana gelir. Plugin.Main.HealthCenter a Plugin.MinecraftFunctions sınıfından erişilmeye çalışılmış.

Plugin.MinecraftFunctions sınıfı, Plugin.Main sınıfının HealthCenter alanına doğrudan erişemez. getter ve setter yöntemleri ekleyerek veya HealthCenter i public olarak tanımlayarak sorunu çözebilirsiniz.
 
IllegalAccessError hatası, bir sınıfın başka bir alana izinsiz erişmeye çalıştığınızda meydana gelir. Plugin.Main.HealthCenter a Plugin.MinecraftFunctions sınıfından erişilmeye çalışılmış.

Plugin.MinecraftFunctions sınıfı, Plugin.Main sınıfının HealthCenter alanına doğrudan erişemez. getter ve setter yöntemleri ekleyerek veya HealthCenter i public olarak tanımlayarak sorunu çözebilirsiniz.
Yine aynı hatayı veriyor. Windows işletim sisteminde böyle bir hata vermiyordu. Sunucuyu Linux'a taşıyınca olmaya başladı.
 
Hocam değerli kodunuzu paylaşma imkanınız var mı?
Tabii ki ama sorunun koddan kaynaklı olduğunu düşünmüyorum. Birazdan Windows üzerinden de test edeceğim. O zaman sorunun Linux olup olmadığı anlaşılır.

Java:
    public static void LoadHealthCenter()
    {
        try
        {
            ResultSet Rs = Functions.SQLRead("SELECT * FROM MCHealthCenter");
            while (Rs.next())
            {
                String Name = Rs.getString("Name");
                int StateID = Rs.getInt("StateID");
                Double PosX = Rs.getDouble("PosX");
                Double PosY = Rs.getDouble("PosY");
                Double PosZ = Rs.getDouble("PosZ");
                Double Yaw = Rs.getDouble("Yaw");
                Double Pitch = Rs.getDouble("Pitch");
                Main.HealthCenter.put(StateID + "-" + Name, PosX +" "+ PosY +" "+ PosZ +" "+ Yaw +" "+ Pitch);
            }
        }
        catch (SQLException e)
        {
            Functions.ConsoleMsg(e.getMessage());
        }
    }

Hata veren yer belli, "Main.HealthCenter.put(StateID + "-" + Name, PosX +" "+ PosY +" "+ PosZ +" "+ Yaw +" "+ Pitch);" kısmı.
 
Java:
Main.HealthCenter.put
Public yaparsan sorun çözülecek.
Ya da şu şekilde public getter ayarlamalısın.
Java:
public static Map<String, String> getHealthCenter() {

    return HealthCenter;
Sorun yine aynı. Windows'ta test ettiğimde hata vermedi. Linux kaynaklı bir problem. Acaba neden Linux'ta böyle bir şey oldu?
 

Technopat Haberler

Yeni konular

Geri
Yukarı