Почему этот код проверки ссылок Java не компилируется? - PullRequest
1 голос
/ 31 марта 2009

Я уже прочитал ссылку проверки вопрос, размещенный в SO. Если есть еще вопросы такого рода, и я пропустил их, мои извинения.

Нам нужно найти неработающие ссылки на веб-сайте очень простым способом и с помощью сценариев, чтобы мы могли документировать неработающие ссылки. Я нашел сообщение в блоге с кодом, написанным на 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 ]

1 голос
/ 31 марта 2009

Вам необходимо импортировать нужные пакеты. В этом случае у вас должно быть следующее в верхней части файла:

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

Я также получаю предупреждение компилятора о следующем фрагменте кода:

 && !url.equals(redirectLink)

Он пытается приравнять URL (который является URL) к redirectLink (который является строкой). В Java он автоматически сравнивает строковое значение, когда это происходит, и toString фактически дает то, что вы хотите. Чтобы быть более точным в коде авторов, я бы изменил приведенный выше код на:

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

Примечание. В netbeans вы можете просто щелкнуть правой кнопкой мыши и выбрать опцию Fix Imports (или нажать Ctrl + Shift + I), и он попытается найти правильные пакеты, которые вы используете в данный момент, и автоматически вставить операторы импорта.

0 голосов
/ 31 марта 2009

Код кажется правильным. Может быть, вы не импортировали необходимые пакеты. Это поможет, если вы можете опубликовать ошибки компилятора, которые вы получаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...