2009-03-31 12 views
1

Ich habe bereits die link checker Frage in SO veröffentlicht gelesen. Wenn es mehr Fragen dieser Art gibt und ich sie vermisst habe, entschuldige ich mich.Warum kompiliert dieser Java Link Checker Code nicht?

Wir müssen in einer website auf sehr einfache Weise und skriptfähige Weise gebrochene Links finden, so dass wir die gebrochenen Verbindungen dokumentieren können. Ich habe eine blog post mit einem Code in Java geschrieben, der genau das tut, was ich brauche, und meine grundlegenden Kenntnisse lassen mich kompilieren, aber ich bekomme jedes Mal Fehler. Ich dachte, dass vielleicht jemand hier mir sagen könnte, warum der Code nicht kompiliert. Hier

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

Dank all dieser Antwort. Ich setze den Code, der hier kompiliert, für zukünftige Referenz.

+0

Angepaßt für die Aktualisierung des Codes mit der richtigen Lösung. – rich

Antwort

1

Sie müssen die richtigen Pakete importiert haben. In diesem Fall sollten Sie die Folge am Anfang der Datei haben:

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

Ich bin auch eine Compiler-Warnung auf dem folgende Stück Code bekommen:

&& !url.equals(redirectLink) 

Es versucht url zu (was eine URL ist) um redirectLink (was ein String ist). In Java vergleicht es automatisch den String-Wert, wenn dies geschieht, und der toString gibt tatsächlich, was Sie wollen. Um genauer zu sein im Code Autoren würde ich den obigen Code ändern:

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

Hinweis: In Netbeans, können Sie einfach mit der rechten Maustaste und wählen Sie die Option Fix Imports (oder drücken Sie Strg + Umschalt + I) und wird versuchen, die richtigen Pakete zu finden, die Sie gerade verwenden, und fügt automatisch die Importanweisungen ein.

0

Der Code scheint korrekt zu sein. Möglicherweise haben Sie die erforderlichen Pakete nicht importiert. Es wird Ihnen helfen, wenn Sie die Compilerfehler, die Sie bekommen, veröffentlichen können.

+0

Vielen Dank. Ich werde das früh am Morgen tun. Vielen Dank. – Geo