在调试 Java 代理的过程中,Domino 服务器给出的错误信息是这样的:

HTTP JVM: java.lang.NullPointerException
HTTP JVM: at JavaAgent.createYjPDF(Unknown Source)
HTTP JVM: at JavaAgent.NotesMain(Unknown Source)

这一堆的 Unknown Source 让人无从下手。还好这个问题很好解决:在代理属性中勾上如下选项即可(lib 库也是一样的)

结果如下,是不是舒服多了?

HTTP JVM: java.lang.NullPointerException
HTTP JVM: at JavaAgent.createYjPDF(JavaAgent.java:674)
HTTP JVM: at JavaAgent.NotesMain(JavaAgent.java:134)

从 8.0 版开始,出于对旧版本兼容性的考虑,在 Designer 中编写 Java 代理时,编译器会生成与 Domino 6(JVM 1.2) 兼容的 class 文件。我们可以通过以下 Notes.ini 参数来修改它(以 1.5 为例,重启客户端生效):

JavaCompilerTarget=1.5

对于兼容版本的设定,这里有个权衡需要把握:版本设定的越高可用的新特性越多,但同时能够兼容的 Domino 版本越少。大家可以按照实际需要,参考下表来选择。

JavaCompilerTarget=
等同的 javac 参数
兼容的 Notes/Domino 版本
1.1
-source 1.3 -target 1.1
N/D 5.0 及以上
1.2
-source 1.3 -target 1.2
N/D 6.0 及以上
1.3
-source 1.3 -target 1.3
N/D 6.0 及以上
1.4
-source 1.4 -target 1.4
N/D 7.0 及以上
1.5
-source 1.5 -target 1.5
N/D 8.0 及以上
1.6
-source 1.6 -target 1.6
N/D 8.5 及以上
CurrentJavaVersion
(取当前版本 Notes 附带的 Java版本,以 N/D 8.5 为例,此值等同于 1.6)
-source 1.6 -target 1.6
N/D 8.5 及以上

参考链接:JavaCompilerTarget