jdbc 的驱动包部署问题

datafansbj 2020-06-23 11:43:38
初学 java,很简单的问题:jdbc 的 mysql 驱动包文件(mysql-connector-java-5.1.33-bin.jar),在目标机器上应该部署在什么位置?

试过几种都不行,偶尔一次使用 -classpath 参数成功了,后来又不行了(什么都没做,只是重启过机器)。以下是试过的方法(mysql-connector-java-5.1.33-bin.jar在 d:\lib,当前目录是 d:\):
1、系统环境变量里设置 classpath=d:\lib\mysql-connector-java-5.1.33-bin.jar,无效
2、cmd 执行过 set classpath=d:\lib\mysql-connector-java-5.1.33-bin.jar,无效
3、命令行执行 java -classpath d:\lib\mysql-connector-java-5.1.33-bin.jar wang.common.test.dbtest,无效(wang.common.test 是包名,dbtest 是主类名)

程序本身无问题,在 Eclipse 里执行是正常的。

显示的错误都是:找不到或无法加载主类 wang.common.test.dbtest。
...全文
378 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2020-06-23
  • 打赏
  • 举报
回复
先学会在命令行下怎样才行执行或访问自己的文件。
qq_39936465 2020-06-23
  • 打赏
  • 举报
回复
引用 楼主 datafansbj 的回复:
初学 java,很简单的问题:jdbc 的 mysql 驱动包文件(mysql-connector-java-5.1.33-bin.jar),在目标机器上应该部署在什么位置? 试过几种都不行,偶尔一次使用 -classpath 参数成功了,后来又不行了(什么都没做,只是重启过机器)。以下是试过的方法(mysql-connector-java-5.1.33-bin.jar在 d:\lib,当前目录是 d:\): 1、系统环境变量里设置 classpath=d:\lib\mysql-connector-java-5.1.33-bin.jar,无效 2、cmd 执行过 set classpath=d:\lib\mysql-connector-java-5.1.33-bin.jar,无效 3、命令行执行 java -classpath d:\lib\mysql-connector-java-5.1.33-bin.jar wang.common.test.dbtest,无效(wang.common.test 是包名,dbtest 是主类名) 程序本身无问题,在 Eclipse 里执行是正常的。 显示的错误都是:找不到或无法加载主类 wang.common.test.dbtest。
你这个问题是你的程序类不是所有文件夹都能执行的需要添加路径,jdbc路径设置了,dbtest的路径没有设置只能在dbtest所在的文件夹下执行,建议先学要dos操作的基础。
datafansbj 2020-06-23
  • 打赏
  • 举报
回复
引用 10 楼 qq_39936465 的回复:
[quote=引用 9 楼 datafansbj 的回复:]
我是直接从项目的 bin 目录里复制出来的,在项目里 jdbc 驱动包不在图中的 lib 目录,而是在 MySQL 的安装目录里来引用的。图中那个 lib 目录是其他用途的,里面有其他的代码。
Eclipse 打包是什么意思?是不是把这些目录里的所有程序代码打包成一个 jar?我是初学者没打过包,见笑了。


在编译程序中,有编译的环境,编译环境会帮你添加导入包的路径地址,这个时候驱动包并没有导入项目。但是实际使用的话,你需要打包项目,在打包的时候,编译程序自动会帮你把第3方驱动打包到项目的特定文件夹中,这个和你直接拷贝项目是不同的。除非你对java项目结构很熟悉,不然不要自己建立项目的文件夹,因为你很可能会放错文件的位置造成找不到文件。[/quote]

谢谢了,我先去了解 java 文件结构和打包机制。
qq_39936465 2020-06-23
  • 打赏
  • 举报
回复
引用 9 楼 datafansbj 的回复:
我是直接从项目的 bin 目录里复制出来的,在项目里 jdbc 驱动包不在图中的 lib 目录,而是在 MySQL 的安装目录里来引用的。图中那个 lib 目录是其他用途的,里面有其他的代码。 Eclipse 打包是什么意思?是不是把这些目录里的所有程序代码打包成一个 jar?我是初学者没打过包,见笑了。
在编译程序中,有编译的环境,编译环境会帮你添加导入包的路径地址,这个时候驱动包并没有导入项目。但是实际使用的话,你需要打包项目,在打包的时候,编译程序自动会帮你把第3方驱动打包到项目的特定文件夹中,这个和你直接拷贝项目是不同的。除非你对java项目结构很熟悉,不然不要自己建立项目的文件夹,因为你很可能会放错文件的位置造成找不到文件。
datafansbj 2020-06-23
  • 打赏
  • 举报
回复
引用 8 楼 qq_39936465 的回复:
[quote=引用 7 楼 datafansbj 的回复:]

如上图,DBTest 和 StrTest 两个程序都在 test 目录下,DBTest 访问了 MySQL 数据库,StrTest 不访问数据库。在 D:\ 下执行:
java wang.common.test.StrTest 是没问题的。
java wang.common.test.DBTest 是有问题的。

那么 jdbc 包应放在什么地方呢?


一般放在lib下,你这个问什么不是从eclipse中直接打包jar出来?

你自己在命令时候设置classpath,所以java 会从classpath路径下查找,所以是找不到你d盘根据录下的文件的。[/quote]

我是直接从项目的 bin 目录里复制出来的,在项目里 jdbc 驱动包不在图中的 lib 目录,而是在 MySQL 的安装目录里来引用的。图中那个 lib 目录是其他用途的,里面有其他的代码。
Eclipse 打包是什么意思?是不是把这些目录里的所有程序代码打包成一个 jar?我是初学者没打过包,见笑了。
qq_39936465 2020-06-23
  • 打赏
  • 举报
回复
引用 7 楼 datafansbj 的回复:
如上图,DBTest 和 StrTest 两个程序都在 test 目录下,DBTest 访问了 MySQL 数据库,StrTest 不访问数据库。在 D:\ 下执行: java wang.common.test.StrTest 是没问题的。 java wang.common.test.DBTest 是有问题的。 那么 jdbc 包应放在什么地方呢?
一般放在lib下,你这个问什么不是从eclipse中直接打包jar出来? 你自己在命令时候设置classpath,所以java 会从classpath路径下查找,所以是找不到你d盘根据录下的文件的。
datafansbj 2020-06-23
  • 打赏
  • 举报
回复

如上图,DBTest 和 StrTest 两个程序都在 test 目录下,DBTest 访问了 MySQL 数据库,StrTest 不访问数据库。在 D:\ 下执行:
java wang.common.test.StrTest 是没问题的。
java wang.common.test.DBTest 是有问题的。

那么 jdbc 包应放在什么地方呢?
qq_39936465 2020-06-23
  • 打赏
  • 举报
回复
引用 4 楼 datafansbj 的回复:
[quote=引用 2 楼 qq_39936465 的回复:] 先学会在命令行下怎样才行执行或访问自己的文件。
命令没问题,另一个程序,不访问数据库,在同一个文件夹里,执行没问题。 [/quote] 因为你设置了classpath ,java 会自动 到classpath下查找程序,但是你设置的是jdbc的classpath,不是你项目的classpath,一般应该classpath设置为项目classpath,把jdbc拷贝到项目中。 你这里classpath用的是jdbc的话,你的项目类如果不在jdbc的目录下的话,你的项目类就要用真实路径,但是你并没有用,所以你的命令是有问题的。
datafansbj 2020-06-23
  • 打赏
  • 举报
回复
引用 2 楼 qq_39936465 的回复:
先学会在命令行下怎样才行执行或访问自己的文件。


命令没问题,另一个程序,不访问数据库,在同一个文件夹里,执行没问题。
datafansbj 2020-06-23
  • 打赏
  • 举报
回复
引用 1 楼 qq_39936465 的回复:
[quote=引用 楼主 datafansbj 的回复:]
初学 java,很简单的问题:jdbc 的 mysql 驱动包文件(mysql-connector-java-5.1.33-bin.jar),在目标机器上应该部署在什么位置?

试过几种都不行,偶尔一次使用 -classpath 参数成功了,后来又不行了(什么都没做,只是重启过机器)。以下是试过的方法(mysql-connector-java-5.1.33-bin.jar在 d:\lib,当前目录是 d:\):
1、系统环境变量里设置 classpath=d:\lib\mysql-connector-java-5.1.33-bin.jar,无效
2、cmd 执行过 set classpath=d:\lib\mysql-connector-java-5.1.33-bin.jar,无效
3、命令行执行 java -classpath d:\lib\mysql-connector-java-5.1.33-bin.jar wang.common.test.dbtest,无效(wang.common.test 是包名,dbtest 是主类名)


程序本身无问题,在 Eclipse 里执行是正常的。

显示的错误都是:找不到或无法加载主类 wang.common.test.dbtest。


你这个问题是你的程序类不是所有文件夹都能执行的需要添加路径,jdbc路径设置了,dbtest的路径没有设置只能在dbtest所在的文件夹下执行,建议先学要dos操作的基础。[/quote]

DOS命令没问题,另一个程序,不访问数据库,在同一个文件夹里,执行没问题。

50,503

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧