JDBC CLASSPATH不起作用

时间:2011-01-18 03:44:55

标签: java jdbc classpath

我正在为我服务器上运行的MySQL数据库建立一个简单的JDBC连接。我正在使用MySQL提供的Connector-J。根据他们的文档,我想创建CLASSPATH变量以指向mysql-connector-java-5.0.8-bin.jar所在的目录。我用了export set CLASSPATH=/path/mysql-connector-java-5.0.8-bin.jar:$CLASSPATH。当我输入echo $CLASSPATH以查看它是否存在时,一切似乎都很好。但是当我打开一个新终端并输入echo $CLASSPATH时,它就不再存在了。我认为这是我的Java服务器无法连接到JDBC的主要原因,因为它没有保存我设置的CLASSPATH变量。

任何人都有关于如何设置JDBC的建议或修复?

5 个答案:

答案 0 :(得分:2)

忘记CLASSPATH环境变量。这是个大笑话。除了低级java com.example.Foo命令之外,其他所有内容都忽略了它。添加-jar参数时会忽略它。添加-cp-classpath参数时会忽略它。 IDE和Web /应用程序服务器忽略了它。该环境变量旨在为初学者提供便利。但除此之外,它毫无用处。

归结为JAR文件必须放在相关Java应用程序的运行时类路径的任何现有/缺省路径中,或者至少要将JAR文件的路径添加到有问题的Java应用程序的运行时类路径。

由于您正在讨论服务器并考虑到CLASSPATH环境变量不起作用的事实,我将假设它实际上是一个Web服务器/应用程序服务器,例如Apache Tomcat。如果确实如此,则必须将JAR文件放在Tomcat/lib文件夹中(如果对快速连接池使用容器管理DataSource方法),或者在webapp的WEB-INF/lib中删除文件夹(如果您使用穷人的Class#forName()方法加载驱动程序)。

如果不是,并且它实际上是要作为JAR执行的Java应用程序,那么您必须在相关JAR的MANIFEST.MF文件中指定类路径。但如果它也不是那个并且它是一个松散的.class文件,那么你必须在-cp-classpath java命令的.sh参数中指定类路径。为了避免在执行时反复输入,只需使用该命令创建一个{{1}}文件。

答案 1 :(得分:1)

尝试:

Class.forName("com.mysql.jdbc.Driver"); 
在获得连接之前

您可能还想获得更新版本的mysql jdbc驱动程序。 5.0.8很老了。

看看JDBC Basics它会给你一些提示。

tutorial也可能对您有所帮助。

答案 2 :(得分:0)

您似乎正在使用Linux机器。确保终端启动login shell。例如,gnome-terminal应用程序(可能是您使用ubuntu或fedora框进行开发时使用的应用程序)在配置文件首选项>下面有一个复选框。标题和命令菜单称为“运行命令作为登录shell”。检查一下,确保最后将此代码放在〜/ .bash_profile文件中。

export CLASSPATH=/path/mysql-connector-java-5.0.8-bin.jar:$CLASSPATH

但是我会反对这样做并为你的应用程序做一个简单的启动脚本。类似的东西:

#!/bin/bash

Set CLASSPATH=CLASSPATH=/path/mysql-connector-java-5.0.8-bin.jar:$CLASSPATH

java -cp "$CLASSPATH" <your.main.application.Class>

制作可执行文件并使用它来启动您的应用程序。

答案 3 :(得分:0)

我知道这是一个旧帖子,但它可能对某人有帮助。

我已成功使用正确的CLASSPATH

连接到Windows 7上的SQLite3

我使用JDBC驱动程序sqlite-jdbc-3.7.2。

首先,我尝试将驱动程序复制到目录c:\ Program Files \ java \ jre7 \ lib下,然后设置CLASSPATH变量,但无法识别该行:

Class.forName("org.sqlite.JDBC");

我认为这是由于Windows错误在文件夹名称中有空格,如“Program Files”。

所以我复制了C:\ jbmorla下的JAR文件并将CLASSPATH设置为:

.;c:\jbmorla\sqlite-jdbc-3.7.2.jar

希望这有帮助

答案 4 :(得分:0)

对于 MAVENS项目解决方案。您可以直接修改 pom.xml 文件。 将mysql-connector依赖项添加到pom.xml项目文件:

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