java jdbc: у sqlite нет подходящего драйвера. проблемы с путем к классам, я думаю

#java #sqlite #classpath

#java #sqlite #classpath

Вопрос:

Я использую ubuntu. Я установил sqlite3 и java через synaptic package manager и загрузил файл sqlitejdbc-v056 jar.

Мой sqlite работает нормально. Я написал некоторый Java-код, который компилируется, но не запускается. Я использовал ant для компиляции материала, и это сработало нормально, как только я поместил jar в то же место, что и build.xml.

Когда я пытаюсь запустить программу (с помощью java program), она говорит: java.sql.SQLException: для jdbc не найден подходящий драйвер: sqlite:test.db

вот часть кода-нарушителя:

  Class.forName("org.sqlite.JDBC");
 Connection conn = DriverManager.getConnection("jdbc:sqlite:test.db");
  

Из того, что я прочитал до сих пор, это, вероятно, проблема с моим путем к классам, хотя я не совсем уверен, как это исправить. вот что я пробовал:

  1. поместите файл .jar в тот же каталог, что и основной материал моей скомпилированной программы
  2. поместите .jar в тот же каталог, что и мой скомпилированный класс, который использует материал sql
  3. пытался использовать параметр -classpath при вызове java из терминала. Я попробовал это сначала с относительной адресацией, затем с абсолютным путем
  4. 3 но с подстановочными знаками, т.Е. …/*.jar
  5. sudo gedit / etc / environment. не было пути к КЛАССАМ, поэтому я ввел это: CLASSPATH =».jar:/home/sheena/Java/lib /.jar:.:.*.jar:/home/sheena/ Java / lib /»

Я чувствую, что у меня нет вариантов.

в отдельном, но связанном с этим примечании я также действительно изо всех сил пытался заставить javac видеть jar во время компиляции, я также не мог правильно разобраться с ant-материалом о classpath. Эта часть не такая срочная, как материал выше, но вот немного build.xml:

 <path id="files-classpath">  
    <fileset dir="lib/" >  
        <include name="*.jar"/>  
    </fileset>  
</path> 
  

это лишь некоторые из вещей, которые я пробовал.

Любые идеи были бы высоко оценены, в Интернете на удивление мало информации по этой теме из того, что я вижу…

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

1. Драйвер не упакован более чем в один файл jar, не так ли? В вашем пути во время компиляции у вас есть «*.jar» — подстановочные знаки не работают с аргументом -classpath в java, поэтому вам, возможно, придется добавить все jar в этом каталоге вручную в аргумент -classpath.

2. Я думаю, что формат строки подключения неверен. Примеры, которые я видел, структурированы как jdbc: sqlite:/<путь к БД>, т. е. jdbc: sqlite:/ C: /tools /SQLite /cdr.db

Ответ №1:

попробуйте запустить его следующим образом:

 java -classpath ".:sqlite-jdbc-v056.jar" ProgramName
  

«.:» очень важно (я не был уверен, пробовали ли вы это или нет из вашего описания). также я только что догадался, каково имя вашего .jar, но, очевидно, измените его, чтобы отразить фактическое имя.