Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC类路径不工作_Java_Jdbc_Classpath - Fatal编程技术网

Java JDBC类路径不工作

Java JDBC类路径不工作,java,jdbc,classpath,Java,Jdbc,Classpath,我正在服务器上设置一个简单的JDBC连接到我的MySQL数据库。我正在使用MySQL提供的Connector-J。根据他们的文档,我假设创建CLASSPATH变量以指向mysql-connector-java-5.0.8-bin.jar所在的目录。我使用了导出集CLASSPATH=/path/mysql-connector-java-5.0.8-bin.jar:$CLASSPATH。当我键入echo$CLASSPATH查看它是否存在时,一切似乎都正常。但是,当我打开一个新终端并键入echo$CL

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

有人对如何首先设置JDBC提出了建议或修正吗?

尝试以下操作:

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

您可能还希望获得mysql jdbc驱动程序的最新版本。5.0.8已经很老了

看看它会给你一些提示


这也可能对您有所帮助。

您似乎正在使用linux设备。确保终端启动
登录
shell。例如,
gnome终端
应用程序(如果您正在使用ubuntu或fedora框进行开发,可能就是您正在使用的)在profile preferences>标题和命令菜单下有一个复选框,名为“run command as a login shell”。检查这一点,并确保将此代码放在~/.bash_概要文件的末尾

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>
#/bin/bash
设置CLASSPATH=CLASSPATH=/path/mysql-connector-java-5.0.8-bin.jar:$CLASSPATH
java-cp“$CLASSPATH”

使其可执行并使用它来启动应用程序

忘记
CLASSPATH
环境变量。这是个大笑话。除了一个低级的
javacom.example.Foo
命令外,它几乎被所有其他命令所忽略。当您添加
-jar
参数时,它将被忽略。当您添加
-cp
-classpath
参数时,它将被忽略。IDE和web/应用服务器忽略了它。该环境变量旨在为初学者提供方便。但除此之外,它是无用的

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

因为您谈论的是服务器,并且考虑到
CLASSPATH
环境变量不起作用,所以我假设它实际上是一个Web服务器/appserver,比如ApacheTomcat。如果这是真的,那么您必须将JAR文件放到
Tomcat/lib
文件夹中(如果您使用容器管理的
DataSource
方法来创建快速连接池),或者放到webapp的
WEB-INF/lib
文件夹中(如果您使用穷人的
类#forName()
方法来加载驱动程序)


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

我知道这是一条旧线索,但它可能会帮助别人

我已使用正确的类路径成功连接到Windows7上的SQLite3

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

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

Class.forName("org.sqlite.JDBC");
我认为这是由于Windows bug在文件夹名中有空格,比如“ProgramFiles”

因此,我复制了C:\jbmorla下的JAR文件,并将类路径设置为:

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

希望这对MAVENS项目解决方案有所帮助。您可以直接修改pom.xml文件。 将mysql连接器依赖项添加到pom.xml项目文件:

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

mysql
mysql连接器java
5.1.40

看看@Balusc说了什么,因为基本上是一样的。只需确保应用程序在类路径中以jdbc驱动程序启动。。。让我给你一些背景知识。实际上,我刚刚启动了一台新服务器,因为我的旧服务器死于硬盘故障。我的旧服务器在Debian Lenny上运行JDBC just find。不过,这台新服务器目前正在Atom处理器上运行Debian挤压。无论如何,我在这台机器上设置JDBC时遇到了困难,但是我知道我的Java服务器已经工作了,所以在Java程序中这不是一个问题。你能发布一些更多的信息吗,比如你得到的堆栈跟踪,以及你用来启动进程的命令行?java-version的输出可能也很有用。当然,我是根据java-version使用Java1.5.0的。这是当服务器无法连接到JDBC时我得到的确切堆栈跟踪。当然,根据Java-version,我使用的是Java1.5.0。下面是堆栈跟踪:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行com.MySQL.jdbc.SQLError.createSQLException(SQLError.java:936)com.MySQL.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2985)com.MySQL.jdbc.MysqlIO.sendCommand(MysqlIO.java:1631.html)附近使用的正确语法。。。废话废话这一步自2007年以来就没有必要了。