我正在尝试在Spring中加载文件。 该文件包含基于OpenRules引擎的规则。 问题是当我使用Spring BootRun时它正确加载。 但是当我尝试在外部Tomcat中部署相同的文件时,我收到错误FileNotFound。
我以下列方式提到属性文件中的文件路径:
rules.open.main.decision.path=file:rules/main/Decision.xls
rules文件夹直接位于Project Folder。
在Java中我正在加载文件:
public Decision getDecisionEngine(){
String decisionName = "CustomerPreventStrategies";
//String fileName = "file:rules/main/Decision.xls";
String fileName = env.getProperty("rules.open.main.decision.path");
System.out.println("rules.open.main.decision.path:"+fileName);
Decision decision = new Decision(decisionName,fileName);
return decision;
}
当我为外部Tomcat创建WAR时,我将它保存在2个位置。但它没有帮助。
war {
baseName = 'MyOpenRules'
version = '0.1.0'
from("rules") {
into("WEB-INF/classes/rules")
}
from("rules") {
into("rules")
}
}
我得到了:
Caused by: java.io.FileNotFoundException: rules\main\Decision.xls (The system cannot find the path specified)
答案 0 :(得分:0)
尝试使用
rules.open.main.decision.path=file:/rules/main/Decision.xls
这使得Springs可以从位置WEB-INF / classes / rules / main / Decision.xml
中选择使用时 rules.open.main.decision.path =文件:规则/主/ Decision.xls 该文件应该在当前目录中。当我们通过catalina.bat或startup.bat启动tomcat服务器时,它位于Tomcat_HOME / bin内,然后bin目录是该进程的当前文件夹。因此,当你将文件保存在有效的tomcat bin中时。
当你把/ spring使用相对路径来查找文件时。