我必須使用Java JNA來鏈接C庫。這個庫有一個Windows實現和一個Linux實現。這些方法與其他方法有所不同,因爲此方法僅由Windows版本實現。Java JNA根據OS
MyJnaInterface INSTANCE = (MyJnaInterface) Native.loadLibrary("MyLibrary",
MyJnaInterface.class);
我想只有一個版本,我的Java應用程序,這可能有一個單一的接口與2實現,一個用於Windows操作系統和一個用於Linux操作系統,顯然linux的實施,將有一個空的方法。
public interface MyJnaInterface
public class MyJnaWinImpl implements MyJnaInterface
public class MyJnaLinuxImpl implements MyJnaInterface
這工作在Windows中,Linux操作系統在服務啓動時JNA嘗試也覺得在窗口類的本地方法(也如果該類未在運行時使用),所以它拋出一個UnsatifiedLinkError。 如何解決這個僵局? 我真的不能改變本地庫(它會這麼簡單...)
你可以做在本機端的需要進行調整。這將是容易做到像[JavaCPP]工具(https://github.com/bytedeco/javacpp),而不是JNA :) – 2014-09-26 09:18:19
研究「抽象工廠模式」,http://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Abstract_Factory – RealHowTo 2014-09-26 22:34:01