2018-02-07 23:40

推荐使用Eclipse Mars这个版本,下载地址为:https://www.eclipse.org/mars/

新版本 eclipse 不知为何不支持切换 jetty 的 class loader,貌似也只有这一个 Oxygen 这个版本不支持

jfinal 这样在 eclipse 下启动用了五年多了,一直是好用的,Oxygen 才出现这个问题

2018-02-07 17:30

又是一个 NoClassDefFoundError,jar 包不对,或者多个版本的 jar 包互相影响,在百度里面搜索一下相关问题

2018-02-07 15:06

这种设计方式,可以让不同的数据源,使用相同的 sql key 值,互相之间不干扰,所以,你的 "api_" + key 的方式或许不再需要,使用同名的 key 值,只需要切换数据源就要以取到对应数据源的 sql:
Db.use(ds1).getSql(同名key);
Db.use(ds2).getSqlPara(同名key);

2018-02-07 15:03

@188085240 获取 sql 之前切换了数据源,表明你是多数据源情况

所以在 addSqlTemplate 也要相应的使用对应的数据源:
arp1.addSqlTemplate(...);
arp2.addSqlTemplate(...);
arp3.addSqlTemplate(...);

上面的 arp1 arp2 arp3 分别对应了各自的数据源: ds1 ds2 ds3,在使用的时候:
Db.use("ds1").getSql(key) 即可

2018-02-07 14:43

@188085240 异常已经很清楚,不是在 addSqlTemplate 的时候出异常,而是在使用 find(sql) 方法时出现 sql 为 null,这种问题通过单步调试极度容易解决

2018-02-07 14:42

@188085240 刚看错了,你在构造方法中初始化了 sqlBuilder,所以前面那个异常不会抛出来

代码看上去是没问题的,从异常上看是你在使用 DbPro.find(sql) 这个方法的 sql 为 null ,单步调试秒秒钟解决问题,不要靠猜

这个问题与是否添加多个 addSqlTemplate 没有关系,添加多个才是正常的姿势

2018-02-07 11:58

@陈伟 jfinal 3.4 已经处理过, 这个问题本质不是 jfinal 要解决的,报出这个异常是正确的

2018-02-07 11:54

去小木的社区找一找:
http://www.wxappclub.com/

这个社区是用 jfinal 来开发小程序的一整套东西

2018-02-07 11:49

@Joe88 配置问题,找下相关资料

2018-02-07 11:49

@qiuzhiwei 应该可以,调用一下 HttpKit 中的配置方法

2018-02-07 11:48

代码看上去是正确的,既然配置了 setBaseDowndPath,在 renderFile 时只需要指定相对路径与文件名就可以了,不需要 PathKit.getWebRootPath() 来拼接路径

如果没有反应,很可能出现了别的错误,但同时也不报错,很可能是 log4j 没有配置好,下载首页的 jfinal demo,拿到里头的 log4j.properties 与 log4j.jar 文件用于自己的项目中

2018-02-07 11:45

jfinal 目前没有提供现成的针对 DB2 的 Dialect,可以用 activeRecordPlugin.setDialect(new AnsiSqlDialect()) 来支持一下

AnsiSqlDialect 支持所有符合 ANSI SQL 标准的数据库方言。当然,你也可以参考 OracleDialect、SqlServerDialect 来扩展一个 Db2Dialect 来支持

2018-02-07 11:42

@jimmyyn 用 shiro 升到 jfinal 3.2 是没有问题的

一般来说升级 jfinal 到新版本,都是改改类名、方法名就可以了。 有朋友曾经跨越 9 个 jfinal 版本来升级也很容易

2018-02-07 11:39

@JFinal9527 过一天再启动报错,很可能是用的 kill pid 强调关闭的项目,造成日志文件句柄未关闭

2018-02-06 17:23

当响应给微信平台太慢时,微信平台会重复回调,以确保业务被正确执行

考虑到一些不确定性因素,无论你的程序响应有多快,都必须要有处理微信平台重复回调的机制

不同的业务处理办法不同,例如,如果是订单支付部分的处理,在订单支付回调后可以将 isPaid 字段置为 1,然后如果微信平台重发回调时,可以通过这个字段值来确定是否已经处理过

未处理则放行,处理过则响应一个值告诉对方已处理