Я знаю, что есть много вопросов, касающихся этой ошибки, но мне не так просто найти такой, как у меня.
Здесь идет.
У меня есть довольно небольшое приложение, которое записывает данные БД в CSV-файл и затем загружает их на сервер. Он работает на моем локальном компьютере без Eclipse, и это здорово, но окончательная версия должна быть запущена как задание cron на сервере из командной строки.
Я работаю над вызовом командной строки для основного java-класса, и он доставляет мне много хлопот.
Моя структура зависимостей такова:
Мои занятия
- пакет = gtechReconcile
- classes = GtechReconciler.java, CSVFile.java, QueryMachine.java, FTPSender.java
Мои внешние библиотеки
Я запускаю следующую строку в терминале в каталоге над пакетом исходного кода компиляции (т.е. / путь / к / классам, где / путь / к / классам / gtechReconcile / содержит все файлы скомпилированных классов) Этот путь является текущим каталогом когда запускается командная строка:
java -cp /<snip>/lib/ojdbc14.zip:/<snip>/lib/edtftpj.jar:/path/to/classes gtechReconcile.GtechReconciler
Ошибка говорит мне, что не может найти java.lang.StringBuilder, даже если это не существует в моем коде. Я использую StringBuffer, который, по-видимому, StringBuilder заменил с Java5. Возможно, компилятор java преобразовал это в StringBuilder, который затем jvm не разрешает?
Что мне здесь не хватает?
РЕДАКТИРОВАТЬ: добавлена ошибка из приглашения (уточнено, откуда это выполняется и что находится в папке пакета):
[gtechReconcile]$ pwd
/path/to/
[gtechReconcile]$ cd classes/gtechReconcile/
[gtechReconcile]$ ls
CSVFile.class FTPSender.class GtechReconciler.class QueryMachine.class reports
[gtechReconcile]$ cd ..
[classes]$ ls
gtechReconcile
[classes]$ java -cp .:/path/to/lib/ojdbc14.zip:/path/to/lib/edtftpj.jar gtechReconcile.GtechReconciler
Creating file
Exception in thread "main" java.lang.NoClassDefFoundError: while resolving class: gtechReconcile.CSVFile
at java.lang.VMClassLoader.resolveClass(java.lang.Class) (/usr/lib/libgcj.so.5.0.0)
at java.lang.Class.initializeClass() (/usr/lib/libgcj.so.5.0.0)
at gtechReconcile.GtechReconciler.main(java.lang.String[]) (Unknown Source)
Caused by: java.lang.ClassNotFoundException: java.lang.StringBuilder not found in [file:./, file:/opt/mms_tstt2/gtechReconcile/lib/ojdbc14.zip, file:/opt/mms_tstt2/gtechReconcile/lib/edtftpj.jar, file:/usr/share/java/libgcj-3.4.6.jar, file:./, core:/]
at java.net.URLClassLoader.findClass(java.lang.String) (/usr/lib/libgcj.so.5.0.0)
at gnu.gcj.runtime.VMClassLoader.findClass(java.lang.String) (/usr/lib/libgcj.so.5.0.0)
at java.lang.ClassLoader.loadClass(java.lang.String, boolean) (/usr/lib/libgcj.so.5.0.0)
at _Jv_FindClass(_Jv_Utf8Const, java.lang.ClassLoader) (/usr/lib/libgcj.so.5.0.0)
at java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (/usr/lib/libgcj.so.5.0.0)
at _Jv_BytecodeVerifier.verify_instructions_0() (/usr/lib/libgcj.so.5.0.0)
at _Jv_VerifyMethod(_Jv_InterpMethod) (/usr/lib/libgcj.so.5.0.0)
at _Jv_PrepareClass(java.lang.Class) (/usr/lib/libgcj.so.5.0.0)
at _Jv_WaitForState(java.lang.Class, int) (/usr/lib/libgcj.so.5.0.0)
at java.lang.VMClassLoader.linkClass0(java.lang.Class) (/usr/lib/libgcj.so.5.0.0)
at java.lang.VMClassLoader.resolveClass(java.lang.Class) (/usr/lib/libgcj.so.5.0.0)
...2 more