2010-11-18 12 views
0

Ich habe den Namen einer meiner Java-Klassen geändert und erhalte jetzt eine classNotFoundException nach dem Säubern und Neuaufbau in Eclipse. Ich denke das ist trivial und das ich die einst bekannte Lösung vergessen habe! Irgendwelche Ideen?Wie reparieren Sie die ClassNotFoundException, nachdem Sie den Namen einer Klasse während des Erstellens geändert haben

Edit: Ich landete die langsamste Lösung tun, nur ein neues Projekt anlegen und den gesamten Code in sie setzen ...

Antwort

3

Hast du Eclipse Refactoring verwenden? Oder müssen Sie die Importe einiger Dateien noch organisieren?

bearbeitet basierend auf OP-Feedback:

Eklipse oft eine Menge Sachen für Java-Entwickler im Hintergrund tut. Dazu gehört auch, dass Importe in eine Klassenreferenz in einer anderen Klassendatei importiert werden. Wenn Sie eine Klasse umbenannt haben (und es sich um die oberste Klassenklasse handelt, für die die Datei benannt ist), wird sich der Compiler zuerst beschweren. Wenn Sie sowohl die Klasse als auch die Datei umbenennen, wird jetzt keine andere Java-Datei kompiliert, die auf den vorherigen Klassennamen Bezug genommen hat. Um die Dinge wieder in Gang zu bringen, müssen Sie die Import-Deklarationen und die Code-Referenzen in jeder Datei durchgehen, die anzeigt, dass sie nicht kompiliert wird. Eclipse verwendet zufällig auch inkrementelles Kompilieren sowie ein Speichermodell der zu entwickelnden Projekte. Nachdem Sie überprüft haben, dass tatsächlich keine Fehler vorliegen, versuchen Sie, wenn Sie das Dienstprogramm clean nicht verwenden, die Eclipse zu schließen, den Inhalt des Verzeichnisses bin manuell zu löschen und dann eclipse neu zu starten. Dies sollte dazu führen, dass das Projekt vollständig erstellt wird.

Um dieses Problem vollständig zu vermeiden, sollten Sie in Zukunft das Refactor-Dienstprogramm verwenden, das in Eclipse integriert ist. Das Refactoring ist so einfach wie das Auswählen einer Datei, einer Klasse, einer Methode oder eines Variablennamens und das Drücken von alt + shift + r und das Eingeben des neuen gewünschten Namens. Der Vorteil des Refactoring ist, dass es automatisch alle Code-Referenzen (auf die es Zugriff hat) für den Entwickler nachjagt.

+0

Könnten Sie mir aufklären, was Refactoring genau ist? Ich habe den Begriff in letzter Zeit gehört, bin aber noch nie auf die Definition gestoßen. - Edit - {Ich habe versucht, das Refactoring für die Namensänderung zu verwenden, nachdem ich Ihren Kommentar gelesen und die Klasse umbenannt habe, um das Problem nicht zu beheben. Ich habe immer noch eine ClassNotFoundException erhalten – joepetrakovich

+0

Und welche Importe müsste ich organisieren? – joepetrakovich

+0

Perfekt, vielen Dank. – joepetrakovich

1

Refaktor beim nächsten Mal verwenden. Versuchen Sie nun, die bereits erstellten Klassen zu entfernen und erneut zu kompilieren.

+0

Ich habe versucht, sie aus dem/bin-Verzeichnis des Projekts zu löschen, aber nach dem Säubern und Neukompilieren blieb das Problem bestehen. – joepetrakovich

Verwandte Themen