开发者社区> 问答> 正文

jfinal2.2配置sqlite的问题?报错

准备给猥琐同学写个图片抓取的程序, 其实也完成了, 现在是想展示,就想到了我们的java-web第一的JFinal ,但有点点问题啦,听我慢慢道来: 

sqlite数据库如下:

jfinal如下配置 就是报错,过不去, 不知道怎么回事了, 帮忙看看吧, 

public class WebApp extends JFinalConfig {
	public void configPlugin( Plugins me ) {
		Prop p = PropKit.use( _CONFIG_ );
		C3p0Plugin c3p0 = new C3p0Plugin( p.get( "jdbcUrl" ).trim() , p.get( "user" ) , p.get( "password" ) , "org.sqlite.JDBC" );
		ActiveRecordPlugin arp = new ActiveRecordPlugin( "sqlite" , c3p0 );
		arp.setShowSql( p.getBoolean( "devMode" , false ) );
		arp.setDialect( new Sqlite3Dialect() );
		__MappingKit.mapping( arp );
		me.add( c3p0 );
		me.add( arp );
	}
}

controller就一句话:

public class JandanController extends Controller {
	
	public void index() {
		List<Meizi> l = Meizi.dao.find( "select * from meizi" );
		setAttr( "meizi" , l );
	}
}

 启动后访问页面就有很多错误了,难道是sqlite不对么?

展开
收起
爱吃鱼的程序员 2020-06-09 15:57:47 531 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    随便修改下代码,jetty重新加载下,打印了以下日志,再开页面就好了,真神奇啊


    nullpointer异常很好找原因建议调试一下,可能是使用model.find的时机过早,早在activerecordplugin启动之前

    肯定不存在调用过早的情况啦?  

    我简单调试过,启动时 DbKit.modelToConfig在TableBuilder.build()时,填充的有数据, 

    执行index()里的find()时   DbKit. modelToConfig是空的,导致 nullpointer,

    jetty重新加载后   DbKit. modelToConfig被填充,是正确的

    再 执行index()里的find()时   DbKit. modelToConfig就是有数据的了,就正常了. 


    周末花了点时间把这个问题解决了,虽然最终也没从根本上弄懂是怎么回事,只是简单的解决了;

    说起来也算是我自己矫情吧,弄了 一个web工程运行,一个java工程生成jfinal代码且被web工程依赖,就会出现正文描述的现象,合成一个eclipise工程就ok了,啥事没有.

    我感觉还是工程依赖后web运行前class加载的顺序问题导致的,不是特别明白.

    我用的my eclipise6.5,JDK6,算是比较老的了.


    2020-06-09 15:58:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
微信SQLite数据库损坏恢复实践 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载