繁体   English   中英

为什么编辑Manifest文件提供了CLASSPATH没有的解决方案

[英]Why edit to Manifest file provides solution that CLASSPATH does not

我正在编写一个简短的实用程序,可以在远程Oracle实例上执行短任务。 该实用程序使用ojdbc6.jar中的Oracle jdbc驱动程序。

Oracle jar正确地包含在我的类路径中。 当我将项目导出到jar并使用“java -jar”在命令行上运行jar时,我得到:

Exception in thread "main" java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
at java.lang.Class.forName0(Native Method)

将Oracle jar移动到与runnable jar文件相同的目录后,我更改了我的Manifest文件以在类路径中包含Oracle jar。 这解决了问题,我的罐子运行正常。

任何人都可以解释为什么在我的类路径中包含Oracle jar并没有解决问题,为什么编辑Manifest文件呢?

谢谢!

来自Sun(Oracle) java -jar命令的文档:

执行封装在JAR文件中的程序。 第一个参数是JAR文件的名称而不是启动类名称。 为了使此选项起作用,JAR文件的清单必须包含Main-Class:classname形式的一行。 这里,classname标识具有public static void main(String [] args)方法的类,该方法充当应用程序的起点。 有关使用Jar文件和Jar文件清单的信息,请参阅Jar工具参考页面和Java Tutorial的Jar跟踪。 使用此选项时,JAR文件是所有用户类的源,并忽略其他用户类路径设置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM