java - JDBC 类路径不工作

标签 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 有建议或修复吗?

最佳答案

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

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

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

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

关于java - JDBC 类路径不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4720284/

相关文章:

java - 如何通过客户端域网络保护我的源代码

java - javax.persistence、javax.persistence-api 和 javaee-api 之间的区别

java - 在 postgres jdbc 驱动程序中记录准备好的 sql 语句

java - sql查询中的列列表

java - JPQL - 如何在我的实体中获取额外的参数?

java - 找到成对产品的最大和

java.sql.SQLException : Access denied for user 'root' @'localhost' (using password: YES)

java - 如何在Java中正确从apache commons导入

java - 设置类路径后是否需要从 jar 文件导入包?

java - 我如何告诉 javac 如何找到 imageio 类?