javac: организация пакетов.apache.derby.client.am не существует

#java #javac #derby #javadb

#java #javac #дерби #javadb

Вопрос:

Я пытаюсь скомпилировать Java-программу, использующую JavaDB / Derby. В командной строке я могу запустить

 java org.apache.derby.tools.sysinfo
  

без ошибок, но следующая строка в нескольких файлах вызывает ошибку в заголовке моего вопроса:

 import org.apache.derby.client.am.SqlException;
  

причины

 package org.apache.derby.client.am does not exist
  

Я выполнил новую установку JavaDB, но я не думаю, что это имеет значение. Я уже однажды компилировал этот проект, и я ЗНАЮ, что у меня не был установлен JavaDB. У меня только что был каталог на верхнем уровне папки проекта под названием lib со всеми файлами derby’s .jar внутри. И я почти уверен, что мне также не нужно было устанавливать какие-либо переменные среды.

Как я могу исправить эту ошибку? Если мне нужно предоставить дополнительную информацию, я буду рад это сделать.

Я использую Windows 7 и jdk1.7

Комментарии:

1. Необходимо исправить вопрос. Поскольку ошибка в javac, команда java не имеет значения. Проверьте свой путь к классу и, если он по-прежнему не работает, покажите точную команду javac.

2. javac необходимо знать, где искать, чтобы найти этот пакет. Вы можете указать его, установив путь к классу. или с помощью -cp опции

3. Почему вы пытаетесь импортировать дерби-версию SQLException. Возможно, вы можете просто импортировать java.sql.SQLException вместо этого?

Ответ №1:

Похоже, у вас проблема с тем, что банки JavaDB не находятся в вашем пути к классу. Убедитесь, что вы указали их с помощью -cp или -classpath в своей javac команде.

Комментарии:

1. Если файлы, которые необходимо скомпилировать, находятся в com/company / project, а файлы derby .jar — в lib (оба относительно текущего каталога), как должен выглядеть аргумент -cp? Я попробовал следующее: javac -cp lib; com company project com company project *.java javac -cp com company project com company project *.java javac -cp lib com company project *.java

2. Вам нужно будет перечислить каждый файл jar, разделенный точкой с запятой (если вы используете Linux / UNIX, вы бы использовали двоеточие), поэтому вы должны сделать: javac -cp libjarFileName1.jar ;libjarFileName2.jar comкомпания проект*.java

3. Я не знаю имен конкретных JAR, необходимых JavaDB, но вы должны перечислить их все вместо jarFileName1.jar и jarFileName2.jar

4. Я сделал. Извините, я должен был ответить, но у меня было много работы. Я попытался использовать подстановочный знак для указания всех файлов .java (-cp lib/* ), но получил сообщение об ошибке derbyclient.java был недействительным флагом. Поэтому я попробовал просто derbyclient.java (-cp lib/derbyclient.java ) и это сработало.

5. По моему опыту, подстановочные знаки там действительно не работают. Рад, что это помогло.