java.lang.ClassNotFoundException 尽管使用了 CLASSPATH 环境变量

Posted

技术标签:

【中文标题】java.lang.ClassNotFoundException 尽管使用了 CLASSPATH 环境变量【英文标题】:java.lang.ClassNotFoundException in spite of using CLASSPATH environment variable 【发布时间】:2011-02-05 04:44:43 【问题描述】:

我正在尝试在 windows7 上使用 java 连接到 mysql 数据库。尽管在 CLASSPATH 中添加了 jdbcdriver jar 文件的完整 url,java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 被抛出。谁能告诉我我在这里缺少什么?如果我在项目库中添加 jar 文件,它可以工作,但我想通过 CLASSPATH 本身来完成。 我的类路径看起来像这样- C:\jython2.5.1\javalib\mysql-connector-java-5.1.12-bin.jar

我想明确表示这不是我正在从事的实际项目。我实际上将 Django 与 Jython 一起使用,这需要 JDBC 驱动程序来访问数据库。这就是我必须只使用 CLASSPATH 的原因。

【问题讨论】:

你用什么来构建你的项目? ...如果您是从命令提示符处执行此操作,是否还可以显示您正在使用的确切命令行? 我正在使用 netbeans ide。实际上我在使用 django 和 jython 时遇到了这个错误,所以我想我应该尝试从纯 java 连接到 mysql 数据库。 【参考方案1】:

CLASSPATH 环境变量java.exe 命令使用,即使这样也仅在使用时没有任何-cp-classpath-jar 参数。它被 Eclipse、Netbeans 和 IDEA 等 IDE忽略

该环境变量在现实世界中也被认为是一种糟糕的做法,因为它破坏了可移植性。 IE。程序 X 将成功运行,而程序 Y 在不更改 CLASSPATH 的情况下将无法运行。 Sun Oracle 只是“有用”,以防止初学者在学习 Java 教程时厌倦了在 -cp-classpath 参数中一遍又一遍地键入相同的类路径。在现实世界中,批处理/shell 文件是首选,其中只指定了带有 -cp/-classpath 参数的整个命令。

在您的情况下,您使用的是 IDE。类路径在那里称为“构建路径”。在纯 Java 项目中,它代表both 编译时和运行时类路径。您可以在项目的属性中对其进行配置。您可以添加一个完整的文件夹,您可以添加单个/外部 JAR 文件,您可以链接项目等。好好利用它。忘记使用CLASSPATH 环境变量。 Sun Oracle 犯了一个错误。他们想说服初学者,但最终只会让初学者更加困惑,因为他们错误地将环境变量解释为 类路径。

另见:

How to add JAR libraries to WAR project without facing java.lang.ClassNotFoundException? Classpath vs Build Path vs /WEB-INF/lib

【讨论】:

谢谢你的回复,其实我的项目是在 django 和 jython 上的。 jython 在 jvm 上运行,它需要 jdbc 驱动程序才能访问 db。我不知道包含 jar 文件的任何其他方式。 详细答案取决于运行时环境。至少,您可以使用sys.path 环境变量(类似于CLASSPATH,因此也是不可移植的),或命令参数-Dpython.path【参考方案2】:

最终帮助我的是将 mysql-connector-java-5.1.15-bin.jar 复制到 \jre\lib 和 \jre\lib\ext 两者(!)即使我做了所有的类路径马戏团Java 提供 :) 环境是纯记事本/命令行。

【讨论】:

这是一个截止日期的链接,您可以从这里下载独立于平台的链接:dev.mysql.com/downloads/connector/j/#downloads 完整路径是你实际的java平台。例如在 Linux amd64 可以是 /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/【参考方案3】:

使用 Netbeans 对我有用的是: 运行 > 设置项目配置 > 自定义。 在库 > 添加库下。添加了 MySQL JDBC 驱动程序(我假设它出现在列表中,因为我将 jar 文件复制到了 jre\lib\ext 文件夹。 而且运行顺畅。

我尝试设置类路径,但没有奏效。我正在使用 Netbeans 7.0

【讨论】:

感谢上帝的回答。在过去的 2 1/2 小时里,我一直在与这个问题作斗争,而你为我解决了这个问题。 天哪,你是最棒的!设置类路径对我也不起作用!我正在使用eclipse,但它是相似的。所以对于那些正在使用 Eclipse 的人:右键单击项目 -> 运行配置 -> 类路径 -> 将其添加到那里。 感谢 @DaoLam 为我工作。为你投票!你也是,南丹【参考方案4】:

只需在“Netbeans”中右键单击您的项目,选择属性,然后单击“库”,然后单击“添加库...”按钮,然后选择“MySQL JDBC 驱动程序”,然后单击“添加库”按钮在“确定”按钮上

【讨论】:

【参考方案5】:

在 Netbeans IDE 中只需检查您正在处理的项目的属性,在属性窗口中转到“库”标签,在对话框中添加您的 mysql-connector-java-**。 jar 文件。

【讨论】:

【参考方案6】:

我在 Netbeans 中遇到了同样的问题。因为我使用的是 context.xml 中定义的 tomcat 连接池,所以我需要将 jdbc jar 添加到项目(Properties->Libraries)和我的 Tomcat 服务器中的 lib/ 文件夹中,以便在启动时可以看到它。

【讨论】:

【参考方案7】:
    打开 Netbeans IDE 右键单击您的项目。 选择属性。 点击左侧的库。 在“编译”选项卡下 - 单击添加 Jar/文件夹按钮。 选择下载的“mysql-connector-java-5.1.25-bin.jar”文件(Download Connector/J from dev.mysql.com) 点击确定 再次运行...它的工作。

【讨论】:

【参考方案8】:

我之前也遇到过这个问题,但是在我将mysql-connector-java-5.1.34-bin.jar(从here下载)放入/添加到apache-tomcat-8.0 .15\lib 文件夹,然后运行我的项目,确实有效。

注意:即使添加 jar 文件后错误仍然存​​在,请重新启动 Tomcat 服务器并再次重新运行您的项目。

【讨论】:

为我工作。 Java新手。将此 .jar 添加到 Eclipse 构建路径。谢谢!【参考方案9】:

如果您使用的是maven,请将依赖添加到pom.xml 应该可以解决问题。

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.36</version>
</dependency>

【讨论】:

解决了!如果你使用的是 maven,那就用这个吧!

以上是关于java.lang.ClassNotFoundException 尽管使用了 CLASSPATH 环境变量的主要内容,如果未能解决你的问题,请参考以下文章