【问题标题】:Use sql with java - compiled into .jar - "ClassNotFoundException com.mysql.jdbc.Driver"使用 sql 和 java - 编译成 .jar - “ClassNotFoundException com.mysql.jdbc.Driver”
【发布时间】:2011-10-31 16:04:02
【问题描述】:

我想尝试在 Java 中使用 SQL,所以我下载了 mysql-connector-java-5.1.18-bin.jar。

我使用的是 Eclipse,所以我进入了 Eclipse,项目 -> 属性并添加了 jar 文件。

我还在类路径中添加了以下内容:

  1. C:\Users\shahin\Desktop\mysql-connector-java-5.1.18\com\mysql\jdbc\;
  2. C:\Users\shahin\Desktop\mysql-connector-java-5.1.18\mysql-connector-java-5.1.18-bin.jar;

它在 Eclipse 中运行良好,但是当我运行 my. jar 文件我得到这个错误:

Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at Main.main(Main.java:15)

【问题讨论】:

  • “当我运行我的 jar 文件时”是什么意思? 如何你是如何启动它的?

标签: java sql jar


【解决方案1】:

您的 mysql .jar 类路径很可能已关闭。您的 jar 是否位于 mysql jar 附近? (如果它没有被指向它)为了测试这个,你可以将两者放在同一个目录中,看看它是否运行。

【讨论】:

    【解决方案2】:

    这是因为当您运行 jar 时,mysql-connector-java-5.1.18-bin.jar 不在您的类路径中。

    在您的.jar 文件中应该有一个META-INF/MANIFEST.MF 文件。您需要在该文件中为您的类路径添加一个条目,该条目指向 mysql-connector-java-5.1.18-bin.jar 文件所在的位置:

    Class-Path: path/to/mysql-connector-java-5.1.18-bin.jar
    

    请注意,这可以是您的 jar 本地的。一种常见的方法是在您的 jar 所在的位置有一个 lib 子目录,其中包含您依赖的其他 jar:

    Class-Path: lib/mysql-connector-java-5.1.18-bin.jar
    

    【讨论】:

    • 如果我把它放在我的罐子里,那会是什么样子? ../the-jar-file.jar ?
    • 你不能把它放在你的罐子里。
    • 好吧,为了完整起见,您不需要,您只需要确保它在执行时位于类路径上。这是这样做的一种方式。 (除非它正在分发,否则不确定它是否是最好的,但这是一个不同的讨论:)
    • 如果其他人想运行它,我必须把 jar 和 mysql...jar 放到一个文件夹中?太烂了
    • 这很奇怪..当我将 Class-Path: 添加到我的清单文件时,它给了我一个“找不到主类“Main”.....如果我没有在清单文件中包含 Class-Path,它将显示 classNotFound com.mysql.Driver
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2014-10-11
    • 2021-04-29
    • 2010-12-07
    相关资源
    最近更新 更多