Класс не найден, даже если он импортирован - PullRequest
2 голосов
/ 16 декабря 2010

У меня есть класс в моей программе, которую я развиваю. Это OpenCSV класс для чтения и обработки CSV-файлов.

Это импортировано в моем classpath в затмении, а также import au.com.bytecode.opencsv.*;. Eclipse не показывает никаких ошибок, и это терпит неудачу на этом Class.forName("au.com.bytecode.opencsv.CSVReader", false, null);

и я просто не могу понять, почему это не получается на этой линии. Я даже пытался импортировать весь исходный код в мой проект, но он всегда терпит неудачу при ошибке ClassNotFound. Это jsp-приложение, работающее на сервере Apache Tomcat 6.

Ответы [ 4 ]

3 голосов
/ 16 декабря 2010

Вам необходимо полностью указать название класса.Попробуйте

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

Из документов Class.forName:

Учитывая полное имя для класса или интерфейса (в том же формате, который возвращает getName) этот метод пытается найти, загрузить и связать класс или интерфейс.

Оператор import используется только во время компиляции,(В байт-коде нет никаких следов import.) Таким образом, загрузчик классов, которого просят загрузить "CSVReader", не может знать, о каком пакете вы говорите (и на самом деле просто ищет класс по умолчаниюпакет).


Относительно ваших обновлений ...

Необходимо убедиться, что библиотека opencsv находится в пути к классам для вашего веб-приложения.Недостаточно, чтобы он был во время компиляции ...

2 голосов
/ 16 декабря 2010

Требуются ли классы в WEB-INF / lib или WEB-INF / классах развернутого .war-файла?

1 голос
/ 24 марта 2012

Попробуйте переместить файл js csv в папку src, а затем выполните следующее: Ваш проект -> щелкните правой кнопкой мыши -> Свойства -> Путь сборки Java -> Библиотеки -> Добавить Jar -> yourjar.jar

Если у вас уже есть jar-файл csv в папке src, попробуйте создать новую папку «lib» в основной папке проекта, добавьте в нее этот jar-файл csv и выполните описанные выше шаги.

0 голосов
/ 16 декабря 2010

вы должны использовать FQCN (полное имя класса) для Class.forName () .

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