我正在尝试使用SVNKit在Coldfusion中获取SVN条目的日志。我下载了最新的SVNKit jar文件并将它们放在WEB-INF / lib下的lib文件夹中。
这是我的代码应返回一个日志条目数组,但此代码在Coldfusion 9.0.2中返回空指针异常。
SVNURL = createObject('java','org.tmatesoft.svn.core.SVNURL').parseURIEncoded(svnurl);
drf = createObject("java","org.tmatesoft.svn.core.internal.io.dav.DAVRepositoryFactory");
drf.setup();
rf = drf.create(SVNURL);
SVNWCUtil = createObject("java","org.tmatesoft.svn.core.wc.SVNWCUtil");
authManager = SVNWCUtil.createDefaultAuthenticationManager(user,pass);
rf.setAuthenticationManager(authManager);
log = rf.log(JavaCast("String[]",[]),JavaCast("null",""),JavaCast("long",10),JavaCast("long",15),true,true);
rf.closeSession();
运行此代码时,收到以下错误。
系统已尝试在代码或某些系统代码中使用未定义的值,这通常表示编程错误。 Null Pointers是未定义值的另一个名称。
指向这一行......
log = rf.log(JavaCast("String[]",[]),JavaCast("null",""),JavaCast("long",10),JavaCast("long",15),true,true);
我将相同的代码移到了Railo,一切运行正常。我只是看不出为什么ACF会在log()方法上窒息。
我正在使用SVNKit Wiki上的Printing Out Repository History示例启动我。
任何关于让它在Adobe Coldfusion中运行的建议都将不胜感激。我没有在CF10上进行测试。
答案 0 :(得分:1)
我没有在log()函数的最后两个参数中使用JavaCast(“boolean”,true)。在那之后,一切都很好。
要记得检查并使用JavaCast()!
log = rf.log(JavaCast("String[]",[]),JavaCast("null",""),JavaCast("long",10),JavaCast("long",15),JavaCast("boolean",true),JavaCast("boolean",true));