【问题标题】:Why edit to Manifest file provides solution that CLASSPATH does not为什么编辑 Manifest 文件提供了 CLASSPATH 没有的解决方案
【发布时间】:2011-11-15 07:27:44
【问题描述】:

我正在编写一个简短的实用程序,用于在远程 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 移动到与我的可运行 jar 文件相同的目录后,我更改了我的 Manifest 文件以将 Oracle jar 包含在类路径中。这解决了问题,我的 jar 运行良好。

谁能解释为什么在我的类路径中包含 Oracle jar 不能解决问题,以及为什么编辑 Manifest 文件可以解决问题?

谢谢!

【问题讨论】:

    标签: java classpath manifest


    【解决方案1】:

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

    执行封装在 JAR 文件中的程序。第一个论点是 JAR 文件的名称而不是启动类名称。为了 要使此选项起作用,JAR 文件的清单必须包含一行 Main-Class 形式的:类名。在这里,类名标识 具有公共静态 void main(String[] args) 方法的类 作为您的应用程序的起点。查看 Jar 工具 参考页面和 Java 教程的 Jar trail 以获取信息 关于使用 Jar 文件和 Jar 文件清单。 当你使用这个 选项,JAR 文件是所有用户类的来源,其他用户 类路径设置被忽略

    【讨论】:

      猜你喜欢
      • 2019-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 2020-07-11
      • 2022-01-14
      • 2010-11-06
      • 1970-01-01
      相关资源
      最近更新 更多