我正在尝试从使用 eclipse(indigo、jdk1.7)的 java Web 应用程序连接 Lotus Notes Domino(8.5.1)对象。这就是我所做的:
1.将notes.jar添加到eclipse中Java Build Path的Libraries中,
2. 将“C:\Program Files (x86)\IBM\Lotus\Notes”的路径变量添加到本地计算机的环境变量路径中。
然后我在 eclipse 中创建了这个简单的 java 代码,如下所示:
import lotus.domino.*;
public class platform3
{
public static void main(String argv[])
{
try
{
NotesThread.sinitThread();
Session s = NotesFactory.createSession();
String p = s.getPlatform();
System.out.println("Platform = " + p);
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
NotesThread.stermThread();
}
}
}
上面的代码编译没有任何问题,但是当我运行它时,出现以下错误:
线程“main”中出现异常 java.lang.UnsatisfiedLinkError:C:\Program Files (x86)\IBM\Lotus\Notes\nlsxbe.dll:无法在 AMD 64 位平台上加载 IA 32 位 .dll
我在网上搜索了一下,似乎Lotus Domino 8.5.1是32位的,而我的java项目(jdk1.7)是64位的,所以它们不兼容。但我无法将我的 java (eclipse) 更改为 32 位,因为我需要它来开发 64 位 Web 项目。
有谁知道如何在不将我的java从64位更改为32位的情况下使其工作?
正如 @maksimov 在评论中指出的,64 位 JVM 无法加载 32 位 Notes DLL。然而,DLL 有 64 位版本,但您必须在您的计算机上以及将运行 Web 应用程序的任何计算机上安装和配置 Lotus Domino Server(64 位 Windows 版本)。每台机器只需运行一次 Domino 服务器即可对其进行完全配置。为了让您的代码访问 DLL,它不必一直运行,但您必须保留它的安装状态。但是,在以这种方式安装 Domino 服务器代码之前,您必须与管理您的 IBM 关系的任何人(可能还有 IBM)进行核实,以确定是否存在任何许可和成本影响。 (进一步说明:为了将 64 位 Domino 服务器代码干净地安装在计算机上,并确保该特定版本的 nlsxbe.dll 是您的代码加载的版本,如果您卸载并完全清理该版本,效果会更好。现有的 32 位 Notes 客户端安装。通过清理,我将删除 Lotus.ini 文件以及卸载后可能留下的所有 Notes.ini 文件和与 Notes 相关的注册表项。)
还有另一种选择。您的代码正在使用notes.jar 中的Notes Java API 的“本地”版本。还有一个 CORBA/IIOP 版本的 API,它不使用任何 Notes 或 Dominbo DLL。事实上,它不需要安装任何 Lotus 代码,也没有许可问题。为此,您所需要的只是将 NCSO.jar 的副本添加到您的项目中。您确实需要注意,NCSO.jar 版本的 API 的功能与本地版本略有不同,设置会话的代码也略有不同,身份验证不依赖于 Notes ID 文件,并且 Domino 服务器您连接的服务器必须正在运行 IIOP 任务 - 默认情况下不会出现这种情况,因此您可能必须与管理这些服务器的人员进行协商。
注意 - 删除了建议使用 OpenNTF API 作为替代方案的更新。那是暂时的混乱。这没有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)