为什么这个java链接检查器代码不能编译?

时间:2009-03-31 04:12:48

标签: java hyperlink broken-links

我已经阅读了SO中发布的link checker问题。如果有更多这类问题,我错过了,我很抱歉。

我们需要以一种非常简单的方式和脚本方式在website中找到损坏的链接,这样我们就可以记录被破坏的链接。我找到了一个blog post,其中包含一些用java编写的代码,它将完全符合我的需要,而且我的基本知识让我编译它,但每次都会出错。我想也许这里的某个人可能会指导我为什么代码不能编译。

以下是代码:

import java.net.HttpURLConnection;
import java.net.URL;
class links
{

private static boolean isLive(String link) {
    HttpURLConnection urlConnection = null;
    try {
      URL url = new URL(link);
      urlConnection = (HttpURLConnection) url.openConnection();
      urlConnection.setRequestMethod("HEAD");
      urlConnection.connect();
      String redirectLink = urlConnection.getHeaderField("Location");
      if (redirectLink != null && !url.equals(redirectLink)) {
        return isLive(redirectLink);
      } else {
        return urlConnection.getResponseCode() == HttpURLConnection.HTTP_OK;
      }
    } catch (Exception e) {
      return false;
    } finally {
      if (urlConnection != null) {
        urlConnection.disconnect();
      }
    }
  }

  public static void main(String[] args) {
    System.out.println(isLive("http://www.fakelink.net"));
  }
}

感谢所有回复。我把编译的代码放在这里,供将来参考。

2 个答案:

答案 0 :(得分:1)

您需要导入正确的包。在这种情况下,您应该在文件顶部有以下内容:

import java.net.HttpURLConnection;
import java.net.URL;

我还在以下代码中收到编译器警告:

 && !url.equals(redirectLink)

它试图将url(这是一个URL)等同于redirectLink(这是一个String)。在Java中,它会在发生这种情况时自动比较字符串值,而toString实际上会提供您想要的值。为了在作者代码中更精确,我将上面的代码更改为:

 && !url.toExternalForm().equals(redirectLink)

注意:在netbeans中,您只需右键单击并选择Fix Imports选项(或按Ctrl + Shift + I),它将尝试查找您当前使用的正确包并自动插入import语句。

答案 1 :(得分:0)

代码似乎是正确的。可能是您没有导入所需的包。如果您可以发布您正在获得的编译器错误,将会有所帮助。