2 Stimmen

Klasse nicht gefunden, obwohl sie importiert wurde

Ich habe eine Klasse in meinem Programm, das ich gerade entwickle. Es ist die OpenCSV Klasse zum Lesen und Verarbeiten von csv-Dateien.

Es ist in meinem Klassenpfad in Eclipse importiert und auch von import au.com.bytecode.opencsv.*; . Eclipse zeigt keine Fehler an und scheitert an dieser Class.forName("au.com.bytecode.opencsv.CSVReader", false, null);

und ich kann mir einfach nicht erklären, warum es bei dieser Linie nicht klappt. Ich habe sogar versucht, den gesamten Quellcode in mein Projekt zu importieren, aber es schlägt immer mit dem Fehler ClassNotFound fehl. Es ist eine JSP-Anwendung, die auf Apache Tomcat 6 Server läuft.

0 Stimmen

Starten Sie die Anwendung auch über Eclipse?

0 Stimmen

Ich habe vergessen, auch dies zu erwähnen... es ist eine jsp-Anwendung, die auf Tomcat läuft

0 Stimmen

Ich habe meine Antwort aktualisiert. Stellen Sie sicher, dass die opencsv-Bibliothek auf dem Klassenpfad Ihrer Webanwendung liegt.

3voto

aioobe Punkte 397211

Sie müssen den Klassennamen vollständig qualifizieren. Versuchen Sie

Class.forName("au.com.bytecode.opencsv.CSVReader", false, null);

Aus den Unterlagen von Class.forName :

Angesichts der vollständig qualifizierter Name für eine Klasse oder Schnittstelle (im gleichen Format wie getName) versucht diese Methode, die Klasse oder Schnittstelle zu finden, zu laden und zu verknüpfen.

El import Anweisung wird nur zur Kompilierzeit verwendet. (Es gibt keine Spur der import im Bytecode). Daher wird der Klassenlader, der aufgefordert wird, eine "CSVReader" kann nicht wissen, von welchem Paket Sie sprechen (und sucht eigentlich nur nach der Klasse im Standardpaket).


Was Ihre Aktualisierungen betrifft...

Sie müssen sicherstellen, dass sich die opencsv-Bibliothek auf dem Klassenpfad Ihrer Webanwendung befindet. Es reicht nicht aus, dass sie während der Kompilierung vorhanden ist...

0 Stimmen

Entschuldigung ... ich habe vergessen, meine Beschreibung zu aktualisieren ... ich habe das vor dem Posten versucht und es schlägt immer fehl.

0 Stimmen

Sie befindet sich in meinem Klassenpfad, der auch mit der Anwendung exportiert wird.

0 Stimmen

Überprüfen Sie Ihre Rechtschreibung und stellen Sie sicher, dass Sie die Bibliothek zur Laufzeit verwenden können. Wenn sie sich in Ihrem Klassenpfad befindet und Sie über ausreichende Berechtigungen verfügen, sollte sie funktionieren.

2voto

stjohnroe Punkte 3108

Befinden sich die benötigten Klassen in WEB-INF/lib oder WEB-INF/classes der bereitgestellten .war-Datei?

0 Stimmen

Ich exportiere es noch nicht ... ich führe den Apache-Server von Eclipse aus, der es tun sollte, wenn ich den Server ausführe ---- Ich habe versucht, es zu exportieren und es ist nicht da ... was seltsam ist

1voto

Vaibhav Punkte 41

Versuchen Sie, die csv jar-Datei in den Ordner src zu verschieben, und gehen Sie dann wie folgt vor: Ihr Projekt -> Rechtsklick -> Eigenschaften -> Java Build Path -> Bibliotheken -> Jar hinzufügen -> yourjar.jar

Wenn Sie die csv jar-Datei bereits im src-Ordner haben, erstellen Sie einen neuen Ordner "lib" im Hauptprojektordner, fügen Sie die csv jar-Datei hinzu und folgen Sie den obigen Schritten.

0voto

Vladimir Ivanov Punkte 42019

Sollten Sie FQCN (voll qualifizierter Klassenname) verwenden für Klasse.forName() .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X