如何让java项目连同mysql数据库一起打包成可安装的文件,可以在其他没有JVM的电脑上运行??

云sf 发布于 2014/11/15 20:22
阅读 5K+
收藏 0
怎么把数据库打包进去,我用Eclipse打包之后,数据库的驱动包是打包进去了的,然后我生成了exe。在我自己的电脑上可以运行,没有问题,可是传给另一台电脑之后,就无法连接数据库了,数据无法显示。错误提示如下:

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:951)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4600)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1328)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2395)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2428)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2213)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:797)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:389)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at util.Connect.getConnection(Connect.java:38)
at dao.DecodingCardDao.queryCardList(DecodingCardDao.java:59)
at service.DecodingCardService.InputList(DecodingCardService.java:120)
at foreground_pkg.Main.<init>(Main.java:332)
at foreground_pkg.Main.main(Main.java:103)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.exe4j.runtime.LauncherEngine.launch(Unknown Source)
at com.exe4j.runtime.WinLauncher.main(Unknown Source)
java.lang.NullPointerException
at dao.DecodingCardDao.queryCardList(DecodingCardDao.java:65)
at service.DecodingCardService.InputList(DecodingCardService.java:120)
at foreground_pkg.Main.<init>(Main.java:332)
at foreground_pkg.Main.main(Main.java:103)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.exe4j.runtime.LauncherEngine.launch(Unknown Source)
at com.exe4j.runtime.WinLauncher.main(Unknown Source)

以下是问题补充:

@云sf:没有把JDK打进去,只把jre和导出的jar文件一起生成exe文件,但是没有成功,我用的是exe4j导出exe文件 我写的java程序里有数据库,我想的是如何连数据库中的数据一起生成exe文件,这样程序才可以在任何电脑上运行。 (2014/11/15 23:33)
加载中
0
h
hao5ang

这个...

你打包的程序如果需要连接数据库的话,里面的驱动是可以访问远程数据库(不在同一台机器上)或者本地数据库.数据库是一个独立的数据管理系统,为你的程序包提供数据读取和写入服务.你的程序包和这个系统分工合作,不会包含在你的程序包里面的.

云sf
但是我的电脑没开机或者客户端用的是局域网呢,这样还是不行啊!
0
h
hao5ang
传统的数据库是基于客户端服务器模式.听说有个"嵌入式数据库",不知道能不能满足你的要求.
一号男嘉宾
一号男嘉宾
不一定是嵌入式的,绿色版的也可以。
0
buglife
buglife
没有jvm?   那你意思你这个项目打出的包连同jdk都打进去了  而且MySQL跟jvm又有什么关系
0
云sf
没有把JDK打进去,只把jre和导出的jar文件一起生成exe文件,但是没有成功,我用的是exe4j导出exe文件   我写的java程序里有数据库,我想的是如何连数据库中的数据一起生成exe文件,这样程序才可以在任何电脑上运行。
pantrick
pantrick
那你就不用安装版mysql了,用一个配置好的mysql,带上数据库,安装的时候要顺便把mysql安装成为后台服务,这样就好了,没难度
0
ForEleven
ForEleven
借助一下install4j   设定一下安装步骤,在安装过程中安装一下mysql  并启动一下
0
抢小孩糖吃
抢小孩糖吃
数据库可以考虑用sqlite,JDK还是不太清楚
0
色魔张大妈
色魔张大妈
连jre一块儿打包呗
云sf
我是连jre一起打包的,但就是在别人的电脑上打不开
0
刘学炜
刘学炜
数据库 可以用 h2
刘学炜
刘学炜
语法和MySQL无缝迁移的
返回顶部
顶部