jfinal2.2配置sqlite的问题

酷酷的就 发布于 2016/04/13 15:07
阅读 280
收藏 0

准备给猥琐同学写个图片抓取的程序, 其实也完成了, 现在是想展示,就想到了我们的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不对么?

加载中
0
酷酷的就
酷酷的就

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


0
JFinal
JFinal
null pointer 异常很好找原因建议调试一下,可能是使用 model.find 的时机过早,早在 active record plugin 启动之前
0
酷酷的就
酷酷的就

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

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

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

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

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


0
酷酷的就
酷酷的就

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

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

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

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


返回顶部
顶部