Java项目使用SQLite数据库后无法启动的问题
背景:
Java > maven 的 jar 项目
功能是记录用户的每天的按键次数
使用 jar2exe 工具将 jar 转为 exe 可执行文件
原本项目中使用的Mysql数据库,使用Mybatis工具操作运行没有问题
后来发现对于一个小工具来说,用Mysql太麻烦,因为需要安装配置Mysql等等.
于是我上网查了查,找到了一个轻量级的嵌入式数据库SQLite
导入一个 org.xerial > sqlite-jdbc jar 包,直接就可以创建数据库文件了十分方便
当时用的 jar 是最新的版本 3.20.0
费了一天的劲,将之前的持久层代码从Mysql替换成了SQLite
问题介绍:
在编辑器内运行良好
编译成 jar 后,使用 java -jar ***.jar 运行良好
当我把 jar 用 jar2exe 转成 exe 运行文件后, 它就报错了
错误信息如下:
java.sql.SQLException: Error opening connection
at org.sqlite.core.CoreConnection.open(CoreConnection.java:215)
at org.sqlite.core.CoreConnection.<init>(CoreConnection.java:76)
at org.sqlite.jdbc3.JDBC3Connection.<init>(JDBC3Connection.java:26)
at org.sqlite.jdbc4.JDBC4Connection.<init>(JDBC4Connection.java:24)
at org.sqlite.SQLiteConnection.<init>(SQLiteConnection.java:45)
at org.sqlite.JDBC.createConnection(JDBC.java:114)
at org.sqlite.JDBC.connect(JDBC.java:88)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:119)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:143)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:132)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.initializeAutomaticTestTable(C3P0PooledConnectionPoolManager.java:772)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.createPooledConnectionPool(C3P0PooledConnectionPoolManager.java:696)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:257)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:271)
at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
at com.play.util.SQLiteUtil.openConnection(SQLiteUtil.java:56)
at com.play.base.BaseDaoImpl.execute(BaseDaoImpl.java:54)
at com.play.dao.impl.KeyRecordDayDaoImpl.add(KeyRecordDayDaoImpl.java:22)
at com.play.DataManager.addToDayRecord(DataManager.java:75)
at com.play.DataManager.addBeat(DataManager.java:58)
at com.play.DataManager.lambda$new$0(DataManager.java:32)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:315)
at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:64)
at org.sqlite.core.NativeDB.load(NativeDB.java:56)
at org.sqlite.core.CoreConnection.open(CoreConnection.java:211)
... 21 more
很伤脑筋,上网查了半天没有查到相关问题
最终翻墙到谷歌上搜索了一番
找到了一个类似的问题,全是英文,具体没看太懂
但是里面提到了 sqlite-jdbc jar 版本的问题.
于是我抱着试试看的心态
将版本改成了 3.8.11.2
编译完成 > 转 exe 完成 > 运行成功> 问题解决!
Java项目使用SQLite数据库后无法启动的问题的更多相关文章
- Springboot项目 配置数据库连接属性后,启动项目报错
Springboot项目 配置数据库连接属性后,启动项目报错,错误如下: 错误原因分析: 1.连接信息配置错误 当使用properties为配置文件时,如图所示,上面的 spring.datasour ...
- Java项目专栏之数据库建表
Java项目专栏之数据库建表 数据库建表前期准备 1. 安装mysql:数据库语言,语法和sql server差不太多,如果习惯于sql server可以不用mysql. 2. 安装navicat:可 ...
- SpringBoot项目打包成jar后,启动脚本
将springboot项目打包成jar后,上传至服务器,每次都需要手敲命令,重新部署项目,可将这些命令写入脚本中,直接运行. 启动脚本(start.sh): CUR_PATH=$(cd "$ ...
- java项目部署Linux服务器几种启动方式总结经验
一:两种部署包: 部署之前先说下两种包,java项目部署到服务器一般有用war包的,也有用jar包的,微服务spring-cloud普及后大部分打包都是jar,部署之前先搞清楚自己要打war包还是ja ...
- Java 项目JDBC 链接数据库中会出现的错误
1.出现的地方 package com.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql ...
- 安卓项目-利用Sqlite数据库,开发新闻发布系统
本教程致力于程序员可以快速的学习安卓移动端手机开发. 适合于已经习得一种编程语言的同仁. 更多志同道合,想要学习更多编程技术的大神们. 小弟不才,麻烦关注一下我的今日头条号-做全栈攻城狮. 本文章是基 ...
- 在Java中使用Sqlite数据库
一.安装 下载最新的 Sqlite Jdbc 驱动程序jar文件,并添加到Java工程的class路径下: 二.使用 以 sqlite Jdbc 驱动版本为 sqlitejdbc-v56.jar 为例 ...
- JDBC(Java项目使用Oracle数据库)
Java项目中使用Oracle数据库(Eclipse) 前言 这学期选了Oracle数据库这门课,于是自己下载了Oracle11gR2版本的数据库.在这之前我一直用的是MySQL.虽然两者教程差不多, ...
- java 项目连接MySQL数据库
1.导入jar包 mysql-connector-java-5.1.35百度云链接如下: 链接:https://pan.baidu.com/s/1DPvIwU_An4MA3mU5bQa6VA 密码:5 ...
随机推荐
- LODOP设置超文本不自动分页的方法
在LODOP中,超文本超过打印项高度会自动分页,自动分页有两种情况:超过设置的打印项高度,超过纸张.这里是指高度,超过纸张宽度的超文本不会显示,会隐藏掉. 如果你不了解什么是LODOP中的超文本打印项 ...
- python抓取NBA现役球员基本信息数据并进行分析
链接:http://china.nba.com/playerindex/ 所需获取JSON数据页面链接:http://china.nba.com/static/data/league/playerli ...
- 【LOJ6060】【2017 山东一轮集训 Day1 / SDWC2018 Day1】Set 线性基
题目大意 给出 \(n\) 个非负整数,将数划分成两个集合,记为一号集合和二号集合.\(x_1\) 为一号集合中所有数的异或和,\(x_2\) 为二号集合中所有数的异或和.在最大化 \(x_1 + x ...
- 爬虫,基于request,bs4 的简单实例整合
简单爬虫示例 爬取抽屉,以及自动登陆抽屉点赞 先查看首页拿到cookie,然后登陆要携带首页拿到的 cookie 才可以通过验证 """""" ...
- 工作环境换成Ubuntu18.04小记
Linux汇总:https://www.cnblogs.com/dunitian/p/4822808.html#linux Ubuntu常用软件安装(小集合)http://www.cnblogs.co ...
- 监控MySQL|Redis|MongoDB的执行语句(go-sniffer)
上节回顾:https://www.cnblogs.com/dotnetcrazy/p/9986873.html 以CentOS为例: 1.环境 PS:如果不需要Golang环境,可以编译后把执行文件c ...
- nuxt.js实战之引入jquery
head: { title: 'nuxt', meta: [ { charset: 'utf-8' }, { name: 'viewport', content: 'width=device-widt ...
- 动态SQL之、条件判断(转)
错误方式一: 在mybatis的动态sql语句中使用<if>标签可以判断sql中的条件是否成立. <select id="getPerson" resultTyp ...
- 安装java8
很多软件都是在java基础上搭建的 ,所以使用的前提是搭建好java的环境,记录下 linux版本:centos7.2 一.下载 到官网下载最新的java8 链接 注意,因为官网需要同意协议才能下载, ...
- IIS虚拟目录内的视频文件访问出错:HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开.多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式. 我是 ...