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 环境变量的主要内容,如果未能解决你的问题,请参考以下文章