修改Apache Velocity源码并重新打包velocity1.7.jar已解决动态加载自定义函数的问题(二)
上文链接:https://blog.csdn.net/rico_zhou/article/details/105008066
这一篇我们讲述如何修改velocity源码并打包:
首先下载源码:http://archive.apache.org/dist/velocity/engine/1.7/,需要两个文件一个是pom,一个是zip:
velocity-1.7.pom,velocity-1.7.zip
由于项目是ant构建,我们现在改成maven项目导入开发工具中,然后在使用ant打包,
首先将velocity-1.7.zip解压到velocity-1.7,然后将velocity-1.7.pom复制到根目录下并修改文件为pom.xml,然后使用eclipse或者idea以maven项目导入velocity-1.7,等待加载完成,报错的话百度即可解决,注意velocity项目比较老,使用的jdk也比较老。
然后我们开始修改源码,找到类:org.apache.velocity.runtime.RuntimeInstance,定位到1000行左右这个方法附近:
/**
* instantiates and loads the directive with some basic checks
*
* @param directiveClass classname of directive to load
*/
public void loadDirective(String directiveClass)
{
try
{
Object o = ClassUtils.getNewInstance( directiveClass);
if (o instanceof Directive)
{
Directive directive = (Directive) o;
addDirective(directive);
}
else
{
String msg = directiveClass + " does not implement "
+ Directive.class.getName() + "; it cannot be loaded.";
log.error(msg);
throw new VelocityException(msg);
}
}
// The ugly threesome: ClassNotFoundException,
// Illega