getDeclaredField方法未定义

时间:2011-10-25 15:52:04

标签: java minecraft

我正在修复游戏我的游戏的mod。但是有一个问题。 mod不是由我做的,所以我必须反编译

总而言之,这是我第一次处理有缺陷的,不完整的消息来源。

我只会编辑一个文件(大约1.5K)。

反编译很好,我编辑了我想要的东西,但现在我无法编译它。我使用classpath变量将它指向jar,所以我仍然可以使用游戏其余部分的类。但存在2个错误,都涉及“.getDeclaredField(s)”。

代码:

public static Minecraft getMinecraft()
{
    try
    {
        Field field = Minecraft.getDeclaredField("a"); // Error here
        field.setAccessible(true);
        return (Minecraft)field.get(null);
    }
    catch(IllegalAccessException illegalaccessexception)
    {
        illegalaccessexception.printStackTrace();
    }
    catch(NoSuchFieldException nosuchfieldexception)
    {
        nosuchfieldexception.printStackTrace();
    }
    return null;
}

另一种情况就是这样,所以不需要向你展示。

错误日志:

TMIUtils.java:23: cannot find symbol
symbol  : method getDeclaredField(java.lang.String)
location: class net.minecraft.client.Minecraft
Field field = Minecraft.getDeclaredField("a");

我将如何解决这个问题? (请记住,这是第一次使用getDeclaredField)

1 个答案:

答案 0 :(得分:4)

应该是

Minecraft.class.getDeclaredField("a");

也许这是反编译器的错误。

getDeclaredField()Class类型的方法,Minecraft.class是该类型的文字值。