2009-03-31 7 views
1

J'ai déjà lu la question link checker publiée dans SO. S'il y a plus de questions de ce genre et que je les ai ratées, je m'en excuse.Pourquoi ce code java link checker ne compile pas?

Nous avons besoin de trouver des liens brisés dans un website d'une manière très facile et de façon scriptable, afin que nous puissions documenter les liens qui sont cassés. J'ai trouvé un blog post avec du code écrit en Java qui fera exactement ce dont j'ai besoin, et mes connaissances de base me permettent de le compiler, mais j'ai toujours des erreurs. J'ai pensé que peut-être quelqu'un ici pourrait être capable de me dire pourquoi le code ne compile pas.

Voici le code:

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")); 
    } 
} 

Merci à tous cette réponse. Je mets le code qui compile ici, pour référence future.

+0

A voté pour la mise à jour du code avec la bonne solution. – rich

Répondre

1

Vous devez avoir les paquets appropriés importés. Dans ce cas, vous devriez avoir le suivi en haut du fichier:

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

Je suis aussi obtenir un avertissement du compilateur sur le morceau de code suivant:

&& !url.equals(redirectLink) 

Il essaie d'assimiler url (qui est une URL) à redirectLink (qui est une chaîne). En Java, il compare automatiquement la valeur de la chaîne lorsque cela se produit et le toString donne réellement ce que vous voulez. Pour être plus précis dans le code des auteurs que je changerais le code ci-dessus:

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

Remarque: NetBeans, vous pouvez cliquer sur un simple clic droit et sélectionnez l'option Importations Fix (ou appuyez sur Ctrl + Maj + I) et va essayer de trouver les paquets corrects que vous utilisez actuellement et insérer automatiquement les instructions d'importation.

0

Le code semble correct. Peut-être n'avez-vous pas importé les paquets requis. Cela vous aidera si vous pouvez publier les erreurs du compilateur que vous obtenez.

+0

merci beaucoup. Je le ferai tôt le matin. Merci. – Geo

Questions connexes