2013-11-07 2 views
0

Я прочитал ряд ответов на пути к классам, и я не могу понять, почему это не работает; Обратите внимание на список каталогов заранее, который показывает, что jdbc.jar явно находится в каталоге «Драйверы», а затем команда java по-прежнему не работает. Кроме того, на моем компьютере с Windows я могу запустить эту точную программу с той же настройкой, если я положил ; в конец -cp ("./Drivers/*;). java -version - java version "1.6.0_37".classpath отсутствует файл jar, хотя он указан

[~/test ] $ ls -1 ./Drivers/ 

dbdump-0.1.0-SNAPSHOT-standalone.jar 
jt400.jar 
jtds.jar 

[~/test ] $ java -cp "./Drivers/*" dbdump.core input.config 

Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:jtds:sqlserver://SERVER;instance=MSSQLSERVER;database=dbone; 
     at java.sql.DriverManager.getConnection(DriverManager.java:602) 
     at java.sql.DriverManager.getConnection(DriverManager.java:154) 
     at clojure.java.jdbc$get_connection.invoke(jdbc.clj:219) 
     at dbdump.core$_main.invoke(core.clj:60) 
     at clojure.lang.AFn.applyToHelper(AFn.java:161) 
     at clojure.lang.AFn.applyTo(AFn.java:151) 
     at dbdump.core.main(Unknown Source) 

[~/test ] $ 

ответ

1

"lib/*" должен быть достаточно (reference):

java -cp "Drivers/*" com.example.Classname 

запись путь Класса может содержать базовое имя символ подстановки *, который считается эквивалентно заданием списка всех файлов в каталог с расширением .jar или .JAR. Например, запись пути класса foo/* указывает все файлы JAR в каталоге с именем foo.

Для чего стоит this, как дела обрабатываются на окнах.

+0

Обратите внимание, что это нормально для java 6+, но на java 5 или ниже вы должны перечислить каждый файл jar отдельно. – amalloy

+0

@amalloy Это правильно. Вероятно, я должен добавить этот ответ. –

+0

dbdump.core - это имя класса (это программа clojure), а input.config - это то, что я пытаюсь передать в -main .... Возможно, это связано с тем, как я передаю параметр в unix? Как я уже упоминал, он работает с окнами .... – joefromct

1

java обрабатывает путь одинаково, будь то на окнах или Linux.

Так что вопрос в том, если; работает над окнами, почему он не будет работать на Linux.

Во-вторых, вы пытались выполнить один и тот же код или программу на любой другой Linux-машине.

Я предполагаю, что банка повреждена. Как насчет остроконечного упоминания о банке. не только *, чтобы забрать все банки

yep what nishant упоминает правильное использование вызова java. вместе с загрузкой jar нам также нужно вызвать класс

+0

Классы * * обрабатываются по-разному на двух системах. В системе linux два пути разделяются двоеточием, тогда как в системе Windows они разделяются точкой с запятой. Конечно, для конкретного примера, приведенного выше, это не имеет значения, так как есть только одна запись опции '-cp'. –

+0

Вы правы ... что-то не так с файлом Jar. Файл Jar (как загружен с сайта jtds не работает, но у меня есть другой, который делает. Они оба - версия 1.3.1, однако манифест немного отличается и, возможно, другими вещами. Я пытаюсь разбить банки на узнайте, почему официально загруженный не работает с моим приложением clojure. – joefromct

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