编译java into,class(goto)时出错

时间:2015-08-17 05:14:30

标签: java eclipse class compilation

这是我第一次编辑用java编写的程序,我只知道如何用PHP编程,问题是我正在编辑以前用Java编写的程序,就像我自己专门添加几行一样扩展其功能的代码(仅复制和粘贴)嗯,我有这个WebScraper.class文件,我可以反编译并转换java编辑,编译时我得到以下错误:

我用Eclipse测试过,当我给Run做什么都没做的时候,我尝试改变JDK的版本而我在另一台计算机上没有尝试过什么也没有,我一直在阅读之前的回复是由于“goto”但是我没有设法解决它,因为我不知道如何编程这部分成功编译。非常感谢您的帮助,或者告诉我如何使用Eclipse或确切地解决我所犯的错误。

C:\Users\Tecnicom\Downloads\Prog>javac WebScraper.java
WebScraper.java:99: error: illegal start of expression
        if (i >= 3) goto _L2; else goto _L1
                    ^
WebScraper.java:99: error: not a statement
        if (i >= 3) goto _L2; else goto _L1
                         ^
WebScraper.java:99: error: 'else' without 'if'
        if (i >= 3) goto _L2; else goto _L1
                              ^
WebScraper.java:99: error: illegal start of expression
        if (i >= 3) goto _L2; else goto _L1
                                   ^
WebScraper.java:99: error: ';' expected
        if (i >= 3) goto _L2; else goto _L1
                                           ^
WebScraper.java:143: error: illegal start of expression
          goto _L3
          ^
WebScraper.java:144: error: ';' expected
_L2:
   ^
7 errors

我将展示显示错误的代码的一部分:

  static Hashtable parseFirmwarePage(String s)
    {
        Matcher matcher = pattern.matcher(s);
        Hashtable hashtable = new Hashtable();
        do
        {
            if(!matcher.find())
                break;
            String s1 = matcher.group(1);
            if(s1 != null && s1.trim().length() != 0 && displayFields.contains(s1))
            {
                String s3 = matcher.group(2);
                if(s3 != null && s3.trim().length() != 0 && !s3.toLowerCase().contains("todo"))
                    hashtable.put(matcher.group(1), s3);
            }
        } while(true);
        String s2 = String.format("%s_%s", new Object[] {
            hashtable.get("device"), hashtable.get("build")
        });
        if(s2.equalsIgnoreCase("ipod11_7E18"))
            hashtable.put("downloadurl", "iPod1,1_3.1.3_7E18_Restore.ipsw");
        return hashtable;
    }

    static String wikiMarkupForPage(String s)
    {
        int i = 0;
_L3:
        if(i >= 3) goto _L2; else goto _L1
_L1:
        if(i != 0)
        {
            gui.error("The iPhone Wiki seems a bit down; retrying in %d sec..", new Object[] {
                Integer.valueOf(30)
            });
            try
            {
                Thread.sleep(30000L);
            }
            catch(InterruptedException interruptedexception)
            {
                gui.exc(interruptedexception);
            }
        }

2 个答案:

答案 0 :(得分:1)

goto is a keyword没用。它可以用于其他语言,如C或C ++,但不是 Java。

  

关键字constgoto是保留的,即使它们当前未被使用。如果这些C ++关键字错误地出现在程序中,这可能允许Java编译器生成更好的错误消息。

鉴于我们不知道你的代码结构很难说你应该做什么,考虑一下:

  • goto通常用于跳转到特定标识符。您可能希望用方法调用替换它。
  • 考虑一下你的程序的自然流程,如果不是以OO方式,至少通过程序方式。 OO可以对代码进行第二次修订。

答案 1 :(得分:0)

关注Sun specifications后,关键字goto会被保留,即使当前未使用。这可能是您的代码显示错误的原因。

您可能必须重新制定其流程并将此关键字替换为在标签上指定的所需行为,或者使用方法调用。