您能看到以下代码有什么问题吗?这是一个bat文件,我试图在执行我的jar(jdbc oracle驱动程序)之前设置一些依赖类。
set CLASSPATH=lib\dbdriver.zip;%CLASSPATH%
java -jar sql2java.jar test.properties
pause
我总是得到类未找到异常(该类在zip中我试图在类路径中添加)。 我甚至通过执行管理员来尝试这个,但无济于事
set CLASSPATH=lib\dbdriver.zip;%CLASSPATH%
java -jar %~dp0sql2java.jar %~dp0test.properties
pause
该类位于zip文件(path \ oracle \ jdbc \ OracleDriver)中,我正在尝试使用
检索它jdbc.driver = oracle.jdbc.driver.OracleDriver
答案 0 :(得分:5)
请检查此doc有关java
(Java应用程序启动器)的信息。
对于-jar
选项,它说 -
执行封装在JAR文件中的程序。第一个参数是JAR文件的名称而不是启动类名称。要使此选项起作用,JAR文件的清单必须包含Main-Class:classname形式的行。这里,classname使用public static void main(String [] args)方法标识该类,该方法充当应用程序的起点。
使用此选项时,JAR文件是所有用户类的源,其他用户类路径设置将被忽略。
因此,您需要在jar中包装所有内容(sql2java.jar
),或者不要在-jar
启动器命令中使用java
选项。
答案 1 :(得分:1)
您可以使用java -jar来执行它,并在jar的清单文件中为应用程序定义类路径。有关如何在http://docs.oracle.com/javase/tutorial/deployment/jar/downman.html
设置应用程序的类路径,请参阅有关jar的Java教程它说:
例如,在典型情况下,applet捆绑在JAR文件中 其清单引用了不同的JAR文件(或几个不同的文件) JAR文件),作为该applet用途的实用程序。
指定要包含在Class中的Class-Path头字段中的类 applet或应用程序的清单文件。 Class-Path标头占用 以下表格:
Class-Path: jar1-name jar2-name directory-name/jar3-name
通过在清单中使用Class-Path标头,您可以避免使用 在调用Java运行你的时指定一个long -classpath标志 应用