最近给帮另外的团队搞一个Server服务问题,因为服务很微小,所以使用SpringBoot + SQLite。看到很多SpringBoot + SQLite项目使用的是jpa,但是我对这种orm框架不是很感冒,MyBatis手写sql才能感觉顺畅。所以,自己动手丰衣足食。于是,我在https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc/3.20.0找到了相关jar包的信息,于是在 pom.xml 内加入了以下的引用:
org.xerial
sqlite-jdbc
3.20.0
test
就在我以为可以高兴地撸代码的时候,我却手动引入了隐患。在写好了一个简单的demo,准备看看效果的时候,出现了一下的错误:
java.sql.SQLException: Unable to load class: org.sqlite.JDBC from ClassLoader:sun.misc.Launcher$AppClassLoader@18b4aac2;ClassLoader:TomcatEmbeddedWebappClassLoader
context: ROOT
delegate: true
----------> Parent Classloader:
sun.misc.Launcher$AppClassLoader@18b4aac2
我google了所有相关问题的答案,依然没有解决这个报错。我很好奇,我在 application.properties 内点击org.sqlite.JDBC 都可以跳转到相应的class文件,为什么在运行的时候却找不到相应的类。我甚至把整个相关换到了MySQL来检验框架的正确性,显然,框架经受住了考验,而SQLite 驱动的问题,依然无法解决。时间就这样经过,几个小时以后,我发现,我google的所有的答案,用到的 sqlite-jdbc 的版本都是 3.7.2 。于是我在想是不是版本的问题,我就切换到了 3.7.2 。
org.xerial
sqlite-jdbc
3.7.2
实验的结果,让我很震惊,perfect!项目运行起来了。可是为什么 3.20.0 就不行呢。于是重新切换到了 3.20.0 ,发现依然无法运行。我观察到两者的区别,在于test,所以我就把scope给去掉了,结果我的宝贝跑起来了。哈哈。今天两次遇到scope的问题,这是个bad boy!
0
相关