2016-09-13 61 views
1

我試圖運行訪問Mac上的Notes客戶機的HelloWord Java應用程序。我曾在舊版本上工作。目前我有Java 1.8.0_101-b13 OS/X 10.11.6。我嘗試運行此代碼:在OS X上運行IBM Notes Java應用程序El Capitan拋出UnsatisfiedLinkError

import lotus.domino.NotesException; 
import lotus.domino.NotesFactory; 
import lotus.domino.NotesThread; 
import lotus.domino.Session; 

public class HelloWorld { 

    public static void main(String[] args) throws NotesException { 
    HelloWorld hw = new HelloWorld(); 
    hw.sayHello(); 
    } 

    private void sayHello() throws NotesException { 
    System.out.println("java.library.path: "+ System.getProperty("java.library.path")); 
    System.out.println("PATH: "+ System.getenv("PATH")); 
    NotesThread.sinitThread(); 
    Session s = NotesFactory.createSession(); 
    System.out.println(s.getEffectiveUserName()); 
    NotesThread.stermThread(); 
    } 
} 

我在Eclipse運行配置中設置了LD_LIBRARY_PATH=/Applications/IBM Notes.app。當我運行應用程序時,我得到:

java.library.path: /Applications/IBM Notes.app:/Users/joe/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:. PATH: /Applications/IBM Notes.app:/usr/bin:/bin:/usr/sbin:/sbin Exception in thread "main" java.lang.UnsatisfiedLinkError: no lsxbe in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864) at java.lang.Runtime.loadLibrary0(Runtime.java:870) at java.lang.System.loadLibrary(System.java:1122) at lotus.domino.NotesThread.load(Unknown Source) at lotus.domino.NotesThread.checkLoaded(Unknown Source) at lotus.domino.NotesThread.sinitThread(Unknown Source) at com.notessensei.HelloWorld.sayHello(HelloWorld.java:31) at com.notessensei.HelloWorld.main(HelloWorld.java:20)

庫路徑看起來不錯。我必須錯過明顯的東西?

更新:當你看到在輸出端,Java的拿起LD_LIBRARY_PATH變量,因此DYLD_LIBRARY_PATH似乎不被需要(我添加它來測試無濟於事)。 DYLD ...似乎在OS/X上爲be problematic

一個不清楚的想法:在OS/X世界中,您通常指向應用程序(IBM Notes.app),但內容實際上是appname.app/Contents/MacOS。我認爲我嘗試了兩個結果相同的結果。路徑中的空間是否會膨脹?

更新2:按照要求的otool -L liblsxbe.dylib

liblsxbe.dylib: @executable_path/liblsxbe.dylib (compatibility version 0.0.0, current version 0.0.0) @executable_path/libxmlproc.dylib (compatibility version 0.0.0, current version 0.0.0) @executable_path/libnotes.dylib (compatibility version 0.0.0, current version 0.0.0) /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 157.0.0) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 60.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

otool -L libxmlproc.dylib

libxmlproc.dylib: @executable_path/libxmlproc.dylib (compatibility version 0.0.0, current version 0.0.0) @executable_path/libnotes.dylib (compatibility version 0.0.0, current version 0.0.0) /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 157.0.0) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 60.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

輸出`otool -L libnotes.dylib」

libnotes.dylib: @executable_path/libnotes.dylib (compatibility version 0.0.0, current version 0.0.0) /usr/lib/libresolv.9.dylib (compatibility version 1.0.0, current version 1.0.0) @executable_path/libjsmac.dylib (compatibility version 0.0.0, current version 0.0.0) @executable_path/libndgts.dylib (compatibility version 0.0.0, current version 0.0.0) @executable_path/libxmlproc.dylib (compatibility version 0.0.0, current version 0.0.0) @executable_path/libgsk8iccs.dylib (compatibility version 0.0.0, current version 0.0.0) /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 55471.14.0) /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0) /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 20.0.0) /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 157.0.0) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 60.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 855.14.0) /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0) /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1265.19.0) /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork (compatibility version 1.0.0, current version 673.2.1) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 48.0.0) /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 59.0.0)

什麼?

+0

它在Mac OS X上的'DYLD_LIBRARY_PATH' – user2543253

+0

@ user2543253不再:https://github.com/soumith/cudnn.torch/issues/111在El Captain上被阻止。而且我確實也設置了這個 - 修正了問題 – stwissel

+0

啊,很高興知道,謝謝。但是'/ Applications/IBM Notes.app'中的lib實際上是?我寧願期望'/ Applications/IBM Notes.app/Contents/MacOSX' – user2543253

回答

0

經過多番探索,結果發現有2個問題需要解決。第一個,描述在post by Mikkel Flint Heisterberg。除了DYLD_LIBRARY_PATH另一個環境變量需要設置:NOTESBIN。需要在Eclipse運行配置

DYLD_LIBRARY_PATH=/Applications/IBM Notes.app/Contents/MacOS 
NOTESBIN=/Applications/IBM Notes.app/Contents/MacOS 

不帶引號或反斜線:這兩個點在同一位置。

第二個更棘手。出於方便,因爲它以前工作過,我創建了一個名爲「Notes9」的新條目「安裝了JVM」。在那裏,我指出了Oracle JVM8(是的,在Mac Notes上運行Java8) Notes程序目錄的Notes.jar(和其他)jvm/lib/ext

Mac不喜歡那(再))。一旦我指向一個「裸」JVM8並將Notes.jar添加爲外部Jar依賴項,所有事情都按預期開始工作。

相關問題