java.lang.UnsatisfiedLinkError : C:\Program Files (x86)\IBM\Lotus\Notes\nlsxbe. dll AMD 64 位平台上的 : Can't load IA 32-bit . dll

标签 java eclipse 32bit-64bit lotus-domino

我正在尝试从使用 eclipse(indigo、jdk1.7)的 java web 应用程序连接 Lotus Notes Domino (8.5.1) 对象。这就是我所做的: 1.在eclipse的Java Build Path的Librairies中添加notes.jar, 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。然而,有一个 64 位版本的 DLL,但您必须在您的机器上以及将运行 Web 应用程序的任何机器上安装和配置 Lotus Domino 服务器(64 位 Windows 版本)。您只需在每台机器上运行一次 Domino 服务器,即可对其进行全面配置。为了让您的代码访问 DLL,它不必一直运行,但您必须保持安装状态。但是,您必须与管理您的 IBM 关系的任何人核实,并可能与 IBM 核实,以确定在以这种方式安装 Domino 服务器代码之前是否存在任何许可和成本影响。 (进一步注意:为了在机器上干净地安装 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 的副本添加到您的项目中。您确实需要注意,API 的 NCSO.jar 版本的功能与本地版本略有不同,设置 session 的代码略有不同,身份验证不依赖于 Notes ID 文件,并且 Domino 服务器您连接到的必须正在运行 IIOP 任务——默认情况下不会是这种情况,因此您可能必须与管理这些服务器的人员协商。

注意 - 删除了建议使用 OpenNTF API 作为替代方案的更新。这只是暂时的困惑。它不可能有帮助。

关于java.lang.UnsatisfiedLinkError : C:\Program Files (x86)\IBM\Lotus\Notes\nlsxbe. dll AMD 64 位平台上的 : Can't load IA 32-bit . dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27868284/

相关文章:

java - 在 Windows 7 中从 VBA 宏运行 java 绕过 System32/SysWOW64 javaw.exe

java String.split(regex) 设计

eclipse - GitHub:原始文件的 URL

java - 规模适应性测试中的空指针异常

c++ - MFC CDialog::Create 在 x64 上挂起

c# - 从 C#(64 位)加载 C++ 类库

java - 如何理解导致ArrayIndexOutOfBoundsException异常的mod计算的数学公式?

java - 无法在 HTC P3400i 上打开与 J2ME 应用程序的套接字连接

java - Exception 的 catch 子句中包含什么

eclipse - 如何使用Play调试测试! 2.0