Java JNA를 사용하여 C 라이브러리를 연결해야합니다. 이 라이브러리에는 Windows 구현과 Linux 구현이 있습니다. 이 메서드는 Windows 버전에서만 구현되므로 이러한 메서드는 단일 메서드와 다릅니다. 내 Java 응용 프로그램의 한 버전을 가지고 싶습니다Java JNA OS에 따라 다른 구현
MyJnaInterface INSTANCE = (MyJnaInterface) Native.loadLibrary("MyLibrary",
MyJnaInterface.class);
이 분명히 리눅스 구현이 비어있는 방법이있을 것이다, 2 구현, 윈도우 운영 체제 용 및 리눅스 운영 체제에 대한 하나 하나의 인터페이스를 가질 수있다.
public interface MyJnaInterface
public class MyJnaWinImpl implements MyJnaInterface
public class MyJnaLinuxImpl implements MyJnaInterface
이것은 JNA (이 클래스는 런타임에 사용되지도 경우) 그래서이 UnsatifiedLinkError가 발생 창 클래스도 네이티브 방법을 찾으려고 서비스 시작에 리눅스 OS에서, 윈도우에서 작동합니다. 이 교착 상태를 해결하는 방법은 무엇입니까? 정말 네이티브 라이브러리를 변경할 수 없습니다. (매우 간단합니다 ...)
당신은 기본 측면에 필요한 조정을 ... 이것은 [JavaCPP]와 같은 도구를 쉽게 할 수있을 것입니다 수 (https://github.com/bytedeco/javacpp) 대신 JNA의 : –
"Abstract Factory Pattern"연구, http://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Abstract_Factory – RealHowTo