0

我已经阅读了许多关于类路径的答案,但我不明白为什么这不起作用;注意事先显示的目录列表jdbc.jar清楚地显示在 Drivers 目录中,然后 java 命令仍然失败。另外,在我的 Windows 机器上,如果我在 -cp ( ) ;的末尾加上 a,我可以使用相同的设置运行这个完全相同的程序。是。 "./Drivers/*;java -versionjava 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

"lib/*"应该足够了(参考):

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

类路径条目可以包含基本名称通配符 *,这被认为等同于指定目录中所有扩展名为 .jar 或 .JAR 的文件的列表。例如,类路径条目 foo/* 指定名为 foo 的目录中的所有 JAR 文件

对于它的价值,就是在 Windows 上处理事情的方式。

于 2013-11-08T00:01:12.180 回答
1

java处理路径相同,无论是在Windows还是Linux上。

所以问题是如果; 正在Windows上工作,为什么它不能在Linux上工作。

其次,您是否尝试在任何其他 linux 机器上执行相同的代码或程序。

我推测可能是罐子损坏了。有针对性地提到罐子怎么样。不只是*拿起所有的罐子

是的,nishant提到的是java调用的正确用法。除了加载 jar,我们还需要调用该类

于 2013-11-08T00:04:58.977 回答