Метод getDeclaredField не определен

#java #minecraft

#java #Minecraft

Вопрос:

Я работаю над исправлением мода для игры minecraft. но есть одна загвоздка. Мод создан не мной, поэтому я должен его декомпилировать

Короче говоря, я впервые работаю с запутанными, неполными исходными текстами.

Я собираюсь отредактировать только ОДИН файл (из примерно 1,5тыс.).

Он декомпилировался нормально, и я отредактировал то, что хотел, но теперь я не могу его скомпилировать. Я использую переменную 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:

Это должно быть

 Minecraft.class.getDeclaredField("a");
  

Возможно, это ошибка декомпилятора.

getDeclaredField() является методом типа Class и Minecraft.class является буквальным значением этого типа.