0

クラスパスに関する多くの回答を読みましたが、なぜこれが機能しないのか理解できません。事前に示されているディレクトリ リストjdbc.jarが Drivers ディレクトリにあることに注意してください。その後、java コマンドは引き続き失敗します。;また、私の Windows マシンでは、-cp ( ) の最後にa を付ければ、同じセットアップでこの正確なプログラムを実行できます"./Drivers/*;java -versionですjava version "1.6.0_37"

[~/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 ] $
4

2 に答える 2

1

Javaは、WindowsでもLinuxでも同じパスを処理します。

したがって、質問は次の場合です。Linuxで動作しない理由はWindowsで動作しています。

次に、他の Linux マシンで同じコードまたはプログラムを実行してみましたか。

jarが破損している可能性があると推測しています。瓶についてピンポイントで言及するのはどうですか。*だけでなく、すべての瓶を拾う

うん、nishant が言及しているのは、Java 呼び出しの正しい使用法です。jar をロードするとともに、クラスを呼び出す必要もあります

于 2013-11-08T00:04:58.977 に答える
1

"lib/*"十分なはずです(参照):

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

クラス パス エントリには、ベース名のワイルドカード文字 * を含めることができます。これは、拡張子 .jar または .JAR を持つディレクトリ内のすべてのファイルのリストを指定することと同等と見なされます。たとえば、クラスパス エントリ foo/* は、 foo という名前のディレクトリ内のすべての JAR ファイルを指定します

価値があるのは、これがウィンドウでの処理方法です。

于 2013-11-08T00:01:12.180 に答える