2016-09-08 2 views
0

Я работаю с программой Java, которая выполняет несколько запросов к базе данных Oracle. В настоящее время я использую для этого тонкий клиент jdbc (ojdbc7.jar). Для IDE я использую NetBeans, а также отлаживаю или запускаю JAR на своем ПК. Я не сталкивался с ошибками. Запуск этого JAR на среде Linux для производства однако, сообщается следующее сообщение об ошибке:Ошибка развертывания JDBC - NoClassDefFound

Exception in thread "main" java.lang.NoClassDefFoundError: oracle/jdbc/OracleDriver 
    [...] 
Caused by: java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver 

Код, я использую, чтобы получить соединение является:

DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); 
Connection conn = null; 
Properties connectionProps = new Properties(); 
connectionProps.put("user", DBUsername); 
connectionProps.put("password", DBPassword); 
conn = DriverManager.getConnection(JDBCConnection, DBUsername, DBPassword); 

С DBUsername/пароль и JDBCConnection все локально хранится. Добавление дополнительных операторов вывода показывает недостаток заключается в следующем:

DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); 

В настоящее время я уже ojdbc7.jar включен в библиотеках в моем проекте. Проверяется проверка свойств проекта в разделе «Сборка»> «Упаковка», «Библиотеки, зависящие от копирования». Мое ожидание в этот момент - библиотека должна быть включена в мой файл jar.

Я также протестировали:

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); 

Кроме того, я попытался использовать только Class.forName(), и с использованием обоих.

Class.forName("oracle.jdbc.driver.OracleDriver"); 

Чтение других вопросов, я понимаю, это может быть проблемой для моего класса. В среде Linux я пытаюсь запустить это, я поставил в путь к классам точного расположения ocjdb7.jar без везения:

export CLASSPATH=/<Directory Location>/ocjdb7.jar 

Я попытался несколько конфигураций это, например, среды Linux в вопросе уже был classpath, включая ocjdb6.jar, поэтому я перекомпилировал с этой версией, установил путь к классам и протестировал. Сообщено такое же сообщение об ошибке. Я пропустил необходимую настройку, чтобы включить этот драйвер? Тестирование на рабочем столе Windows 7, произошла одна и та же ошибка, которая, похоже, указывает на то, что это все еще проблема с настройкой.

+0

Спасибо ujulu, была ли ссылка в вашем комментарии? – CCrew

+0

Извините, я думал, что связан с документом. [Здесь] (https://netbeans.org/kb/articles/javase-deploy.html) - это документ, на который я хотел ссылаться. – ujulu

+0

Цените это!Я прочитаю. – CCrew

ответ

1

Ответ был прост - Netbeans включает в себя любые библиотеки, на которые делается ссылка, в папке lib в папке dist, в которую он компилирует файлы JAR. Я копировал только скомпилированный JAR, но не связанную папку lib. После копирования папки lib процесс выполнялся без исключений.

Netbeans документация охватывает как эти функции, в которой говорится: https://netbeans.org/kb/articles/javase-deploy.html

Если указаны какие-либо библиотеки для проекта (в дополнение к JDK), Lib папка создается в папке DIST. Библиотеки скопированы в dist/lib.

0

ocjdb7.jar должен быть упакован в исполняемый JAR. Я предлагаю вам попытаться сделать из него проект maven (для этого NetBeans должен иметь удобный мастер) и ссылаться на него как на зависимость. Вы также можете проверить, если необходимый ocjdb7.jar был упакован в ваш JAR при его извлечении (JAR - это просто файл архива).

+0

Есть ли у вас какие-либо ссылки, на которых я мог бы следить, как я должен правильно упаковать это в свой JAR? Я посмотрю проект Maven, я незнакомый. – CCrew

Смежные вопросы