我的笔记本电脑刚刚从Windows 7升级到Windows 10,并且一段代码停止工作。使用速度模板的大型应用程序以前可以在Windows 7上正常运行,现在无法找到模板文件。
模板保留在项目目录下的路径 WebContent \ WEB-INF \ config \ templates 中。 EngineInitializer类用于加载它们。该类的代码如下:
private static Logger logger = Logger.getLogger(EngineInitializer.class);
private static String RELATIVE_PATH_FOR_TEMPLATES = "/WEB-INF/config/templates";
if(logger.isDebugEnabled())
logger.debug("About to initialize the Velocity Engine");
Properties p = new Properties();
String absolutePath=new File(Thread.currentThread().getContextClassLoader().getResource("").getFile()).getParentFile().getParentFile().getPath();//this goes to webapps directory
//configure the velocity logger to use the default logging
p.put(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS,"org.apache.velocity.runtime.log.Log4JLogChute");
p.put("runtime.log.logsystem.log4j.logger", "defaultLog");
p.put("file.resource.loader.path", absolutePath + RELATIVE_PATH_FOR_TEMPLATES);
p.put("file.resource.loader.cache", "true");
p.put("file.resource.loader.modificationCheckInterval", "-1");
p.put("parser.pool.size", "30");
Velocity.init(p);
if(logger.isInfoEnabled())
logger.info("The velocity engine is now initialized..");
applicationBeans.xml文件中的以下几行初始化了引擎:
<!-- initialize the velocity engine before the listener thread starts -->
<bean id="engineInitializer" class="com.file.myprogram.template.processor.EngineInitializer"
init-method="initializeEngine" />
在一开始,日志将被打印。在各个类内部,使用Velocity.getTemplate()方法调用模板。现在,这将返回 org.apache.velocity.exception.ResourceNotFoundException:无法找到资源'MediationZone.vm'错误。除了底层操作系统外,没有其他更改。这段代码可以作为Web应用程序在RHEL服务器上正常运行。已经从Subversion下载了代码,并使用eclipse v4.9在Windows 10便携式计算机上运行了代码。
这是怎么回事?