У меня есть класс в моей программе, которую я разрабатываю. Это класс OpenCSV для чтения и обработки файлов csv.
Он импортируется в мой путь к классам в eclipse, а также import au.com.bytecode.opencsv.*;
. Eclipse не показывает никаких ошибок и не работает на этом Class.forName("au.com.bytecode.opencsv.CSVReader", false, null);
и я просто не могу понять, почему он терпит неудачу в этой строке. Я даже пытался импортировать весь исходный код в свой проект, но он всегда терпит неудачу при ошибке ClassNotFound. Это приложение jsp, запущенное на сервере apache tomcat 6.
Вам нужно полностью квалифицировать имя класса. Попробуйте
Class.forName("au.com.bytecode.opencsv.CSVReader", false, null);
Из документов Class.forName
:
Учитывая полное имя класса или интерфейса (в том же формате, который возвращает getName), этот метод пытается найти, загрузить и связать класс или интерфейс.
Оператор import
используется только во время компиляции. (В байт-коде нет следа import
.) Таким образом, загрузчик классов, которому предлагается загрузить "CSVReader"
, не может знать, в каком пакете вы говорите (и на самом деле просто ищет класс по умолчанию пакет).
Относительно ваших обновлений...
Вам нужно убедиться, что библиотека opencsv находится в пути к классу вашего веб-приложения. Недостаточно, чтобы это было во время компиляции...
Являются ли требуемые классы в WEB-INF/lib или WEB-INF/классах развернутого файла .war?
Попробуйте переместить файл csv jar в папку src, а затем выполните следующие действия: Ваш проект → правый клик → Свойства → Путь сборки Java → Библиотеки → Добавить Jar → yourjar.jar
Если у вас уже есть файл js csv в папке src, попробуйте создать новую папку "lib" в основной папке проекта и добавить к ней этот файл js jar и выполнить следующие шаги.
вы должны использовать FQCN (полное имя класса) для Class.forName().