当 FreeMarker 运行在装有安全管理器的Java虚拟机中时,
你不得不再授与一些权限,确保运行良好。最值得注意的是,
你需要为对 freemarker.jar
的安全策略文件添加这些条目:
grant codeBase "file:/path/to/freemarker.jar" { permission java.util.PropertyPermission "file.encoding", "read"; permission java.util.PropertyPermission "freemarker.*", "read"; }
另外,如果从一个目录中加载模板, 你还需要给 FreeMarker 授权来从那个目录下读取文件, 使用如下的授权:
grant codeBase "file:/path/to/freemarker.jar" { ... permission java.io.FilePermission "/path/to/templates/-", "read"; }
最终,如果你使用默认的模板加载机制,也就是从当前文件夹下加载模板,
那么需要指定这些授权内容:(请注意,表达式 ${user.dir}
将会在运行时被策略解释器处理,几乎它就是一个 FreeMarker 模板)
grant codeBase "file:/path/to/freemarker.jar" { ... permission java.util.PropertyPermission "user.dir", "read"; permission java.io.FilePermission "${user.dir}/-", "read"; }
很自然地,如果你在Windows下运行, 使用两个反斜杠来代替一个斜杠来分隔路径中的目录间隔。