为什么我加载sql不行呢?

ActiveRecordPlugin arp = new ActiveRecordPlugin(druid);

arp.setBaseSqlTemplatePath(PathKit.getWebRootPath()+"/WEB-INF/sql");

arp.addSqlTemplate("/all.sql");

image.png



Caused by: java.lang.IllegalArgumentException: File not found in CLASSPATH or JAR : "D:/git/kindergarten/src/main/webapp/WEB-INF/sql/all.sql"

at com.jfinal.template.source.ClassPathSource.<init>(ClassPathSource.java:66)

at com.jfinal.template.source.ClassPathSourceFactory.getSource(ClassPathSourceFactory.java:29)

at com.jfinal.template.Engine.buildTemplateBySourceFactory(Engine.java:158)

at com.jfinal.template.Engine.getTemplate(Engine.java:145)

at com.jfinal.plugin.activerecord.sql.SqlKit.parseSqlTemplate(SqlKit.java:93)

at com.jfinal.plugin.activerecord.ActiveRecordPlugin.start(ActiveRecordPlugin.java:224)

at com.jfinal.core.Config.startPlugins(Config.java:128)

... 16 more


评论区

JFinal

2019-06-20 15:53

1:将 sql 模板挪到 src/main/resources/sql 目录下面去

2:删除下面这行:
arp.setBaseSqlTemplatePath(PathKit.getWebRootPath()+"/WEB-INF/sql");

3: arp.addSqlTemplate("/sql/all.sql");

JFinal

2019-06-20 15:56

这里的关键就是用于 sql 模板管理的 Engine 对象已经默认配置了下面的配置:
arp.getEngine().setToClassPathSourceFactory();

也就是说 engine 会去 class path 和 jar 包中找模板文件

当然,如果你仍然希望去 webapp 目录下面去找模板,再追加一个配置即可:
arp.getEngine().setSourceFactory(new FileSourceFactory());

然后就可以这么来用了:
arp.addSqlTemplate("/WEB-INF/sql/all.sql");

JFinal

2019-06-20 15:56

建议将 sql 模板放在 src/main/resources 下面,这样在打包的时候会将 sql 文件打入 jar 包之中,比让它处于 webapp 下面要更好

魑魅魍魉-two

2019-06-21 08:58

谢谢@JFinal 谢谢

热门反馈

扫码入社