我正在设置一个简单的JDBC连接到我的服务器上正在工作的MySQL数据库。我正在使用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的建议或解决方案?
发布于 2011-01-18 11:53:01
忘记CLASSPATH环境变量。这是个大笑话。除了低级的java com.example.Foo命令之外,几乎所有其他东西都忽略了它。当您添加-jar参数时,它会被忽略。当您添加-cp或-classpath参数时,它会被忽略。它被IDE和web/应用程序服务器忽略。该环境变量旨在为初学者提供方便。但除此之外,它是没用的。
归根结底,JAR文件必须放在所讨论的Java应用程序的运行时类路径的任何现有/默认路径中,或者至少要将JAR文件的路径添加到所讨论的Java应用程序的运行时类路径中。
由于您讨论的是服务器,并且考虑到CLASSPATH环境变量不起作用,因此我假设它实际上是一个webserver/appserver,比如Apache Tomcat。如果确实如此,您必须将JAR文件放在Tomcat/lib文件夹中(如果您使用容器管理的DataSource方法来实现快速连接池),或者放入webapp的WEB-INF/lib文件夹中(如果您使用穷人的Class#forName()方法加载驱动程序)。
如果不是这样,并且它实际上是一个要作为JAR执行的Java应用程序,那么您必须在有问题的JAR的MANIFEST.MF文件中指定类路径。但是如果它也不是这样,并且它是一个松散的.class文件,那么您必须在-cp或java命令的-classpath参数中指定类路径。为了避免在执行它时反复键入它,只需使用命令创建一个.sh文件即可。
发布于 2011-01-18 11:49:52
试着去做:
Class.forName("com.mysql.jdbc.Driver"); 在获得连接之前
您可能还希望获得较新版本的mysql jdbc驱动程序。5.0.8是相当老的版本。
看看JDBC Basics,它会给你一些提示。
此tutorial可能也会对您有所帮助。
发布于 2011-01-18 11:52:35
你似乎在linux机器上工作。确保您的终端启动了一个login外壳。例如,gnome-terminal应用程序(如果您使用ubuntu或fedora框进行开发,可能会使用该应用程序)在配置文件首选项>标题和命令菜单下有一个名为"run command as a login 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>使其成为可执行文件,并使用它启动您的应用程序。
https://stackoverflow.com/questions/4720284
复制相似问题