jFinal4.2无法读取resources下的sql/user.sql

【已解决】错误信息  File not found in CLASSPATH or JAR : "sql/user.sql"

具体配置

BaseJfinalConfig
arp.setContainerFactory(new CaseInsensitiveContainerFactory());
arp.setShowSql(isShowSql);
//arp.setBaseSqlTemplatePath(PathKit.getRootClassPath() + "/sql");
List<File> files = getFileList(PathKit.getRootClassPath() + "/sql");
// 通过JfinalConfig中继承方法实现表关联
this.addMappingKit(dbType, arp);


public class ActiveRecordMapping implements ActiveRecordMappingKit {

	@Override
	public void mapping(String dbSource, ActiveRecordPlugin arp) {
		arp.getEngine().setToClassPathSourceFactory();
		switch (dbSource) {
		case "ORA":
			arp.addMapping("T_USER", User.class);
			break;
		case "mysql":
			arp.addMapping("t_user", User.class);
			break;
		case "POST":

			break;
		case "MSSQL":
			arp.addMapping("t_user", User.class);
			arp.addSqlTemplate("/sql/user.sql");
			break;
		case "Sqlite3":

			break;
		case "AnsiSql":

			break;
		default:
			arp.addMapping("USER_TEST", UserTest.class);
			break;
		}
	}

}

解决方式:
    修改pom.xml文件中,在resource中<include>**/*.sql</include>
                        <resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**/*.properties</include>
					<include>**/*.xml</include>
					<include>**/*.sql</include>
				</includes>
				<filtering>false</filtering>
			</resource> 
			
maven一下即可


评论区

JFinal

2019-11-13 18:16

去除下面的代码:
arp.setBaseSqlTemplatePath(PathKit.getRootClassPath() + "/sql");

如果是老版本,要还添加下面的代码:
arp.getEngine().setSourceFactory(new ClassPathSourceFactory());

这个配置就可以从 class path 和 jar 中读取模板了

后续就可以通过 arp.addSqlTemplate("/sql/user.sql") 来添加模板了

邓小杰

2019-11-13 18:27

@JFinal 波哥 我这句话去掉了 依然还是这样

JFinal

2019-11-13 18:30

@邓小杰 如果你是 maven 项目, 去 target/classes/sql 下面找一找 user.sql 文件是不是真的存在

如果你打成了 jar 包,去 jar 包找一找 sql 目录下面有没有 user.sql

实际去看一下现场,确认文件在 classpath 或者 jar 包中是存在的

如果你是传统的 java web 项目,则去 WEB-INF/classes/sql 下面去找一找 user.sql 文件是不是存在

建议加入俱乐部,获取官网源码,里面大量这种用法:
https://www.jfinal.com/club

邓小杰

2019-11-13 18:44

@JFinal 波哥 我刚才改了下pom文件 target/classes/sql有user.sql war包里也有

热门反馈

扫码入社