Операторы Goto в декомпилированном коде, вызывающие проблемы

Заказчик дал мне старый неподдерживаемый код стороннего поставщика в jar-файле, и я пытаюсь его перепроектировать, чтобы заново реализовать тот же протокол, который он использовал для подключения к серверу.

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

Я не могу опубликовать весь код из-за проблем с IP, но вот его суть (я поместил ошибки компилятора в комментарии):

   private void methodName(InputType input)
        throws ConfigurationException
    {
    // initialization code here
_L2:
    String x; // The compiler is complaining that "String cannot be resolved to a variable" here
    String y; // This line is fine though...
    // Some Code here

    x = <SOME VALUE> // Compiler complains about "x cannot be resolved to a variable" 
    y = <ANOTHER VALUE> // Compiler is fine with this.

    // Some more code
    if(true) goto _L2; else goto _L1 // Multiple issues here see following lines.
    // Syntax error on token "goto", throw expected
    // _L2 cannot be resolved to a variable
    // Syntax error on token "goto", { expected
    // Syntax error on token "goto", { expected

_L1: // Syntax error on token "goto", { expected
        local; // local cannot be resolved to a variable

        // Some more code

         JVM INSTR ret 12; // Multiple issues here see following lines.
         //  JVM INSTR ret 12;
         // Syntax error on token "ret", = expected

         return;
    }

Я понимаю, что строки, за которыми следует двоеточие, являются метками , но я не понимаю, что здесь не так.

Строка с goto проверяется на true , поэтому я могу просто удалить метки, поскольку они здесь неактуальны, но я не понимаю, что означает эта строка:

local;

Или это:

JVM INSTR ret 12;

Мы будем очень благодарны за любую помощь в переводе.

5
задан Omar Kooheji 7 October 2011 в 14:03
поделиться