2013-06-27 5 views
3

Java 코드에서 Mac OSX의 Wifi 장치 목록에 액세스해야하며이를 조사한 후에 CorelLAN 프레임 워크 및 CWInterface.h 클래스 (https://developer.apple.com/library/mac/#documentation/CoreWLAN/Reference/CWInterface_reference/translated_content/CWInterface.html) 인 "기본"코드를 사용해야합니다.Java에서 Objective-C 코드를 호출하는 가장 쉬운 방법은 무엇입니까?

처음에는 JNA를 사용하여이 코드를 호출 할 수 있다고 생각했지만 CoreWLAN이 Objective-C (C/C++이 아님) 이후로 필요한 것을 깨달았습니다.

이 Objective-C Java 브리지 (https://github.com/shannah/Java-Objective-C-Bridge)를 사용해 보았지만 CoreWLAN 프레임 워크를 찾는 방법을 찾지 못했습니다.

그래서 BridJ (https://code.google.com/p/bridj/)를 사용할 수 있도록 JNAerator (https://code.google.com/p/jnaerator/wiki/ObjectiveC)를 사용해 보았지만 올바른 Java 코드를 생성 할 수 없습니다.

  • 그냥 java -Xmx1000m -jar jnaerator.jar -framework CoreWLAN -jar CoreWlan.jar 실행 빠르게이 스타일을 사용하지만 CWInterface.h에 대해 jnaerator를 실행하는 경우에만 CoreWlan.h
  • 에 대한 매핑을 포함 항아리에 결과는 다음 jnaerator이 실패합니다. (최신 스냅 샷 버전의 jnaerator 사용)

Java에서 CWInterface.h의 메서드를 호출하는 가장 좋은 방법은 무엇입니까?

+0

로코코아를 사용해보세요. –

답변

1

내가 할 것은 JNI를 통해 Java 코드와 통신하는 C++ 클래스를 만드는 것입니다. xCode 프로젝트에서 C++과 Obj-C를 모두 사용할 수 있습니다. 나는 Obj-C++ 클래스를 JNI와 함께 사용하려고하지는 않았지만, Java와 Obj-C 사이의 모든 통신을 책임지는 C++ 클래스를 생성 할 것이고,이 클래스는 필요할 때 Obj-C 클래스에 포함될 수있다. 그것 (이 Obj-C 파일의 확장자는 C++ 코드를 포함하므로 .mm로 변경하십시오). http://www.ibm.com/developerworks/java/tutorials/j-jni/

0

가 개인적으로 나는이 공유 메모리 매핑 된 파일을 통해 통신이 개 완전히 별도의 프로그램을 통해 이런 짓을 했을까 :

나는이에게 JNI에 도움이되는 기사를 발견했다. 하나의 프로그램은 Objective-C로 작성되었고 다른 하나는 Java로 작성되었습니다.

메모리 매핑은 두 프로그램 모두 JNI에 전혀 의지하지 않고 동일한 메모리 영역에 액세스 할 수 있음을 의미합니다.

당신은 JNI의 경로를 이동하고 싶은 경우 말했다
https://gist.github.com/jverkoey/2985830 

, 그럼 애플이 가지고 목표 C에서 메모리 매핑에

http://javarevisited.blogspot.co.uk/2012/01/memorymapped-file-and-io-in-java.html 

참고 : 자바에서 메모리 매핑에

노트 다음 조언 :

JNI 개발을위한 출발점으로 Xcode의 Java JNI 템플릿을 사용하는 것이 좋습니다 ment.

JNI의 Objective-C 런타임과 상호 운용하려면 JavaNativeFoundation.framework에 링크하십시오. 은 JavaVM.framework의 하위 프레임 워크입니다. 을 자동으로 설정하고 자동 풀 풀을 해체하고 Java 및 Cocoa 예외를 포착 및 재사용하며 JNI 글로벌 참조 을 Foundation 컨테이너 클래스에 보관하고 문자열, 숫자, 목록 및 기타 개체 그래프를 변환하는 Objective-C 클래스 및 매크로를 포함합니다. 지도 및 세트.

위의 인용은 여기에서 찍은 :

https://developer.apple.com/library/mac/documentation/java/conceptual/java14development/Java14Development.pdf