我正在为我服务器上运行的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的建议或修复?
答案 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>