본문 바로가기
Works/C#

[.NET] Java Bridge

by Vader87 2019. 3. 22.
반응형

C# 개발 환경에서 Java 와 통신을 해야 할 일이 생겼습니다.

JavaBridge 라는 키워드를 들고 찾아보니 jni4net 이라는 라이브러리가 나옵니다.

jni4net

Java의 라이브러리(jar)를 C# 라이브러리(dll)로 바꾸어주는 일을 합니다.


해당 라이브러리의 사용법은 다음과 같습니다.


다운로드 링크

링크에서 원하는 버전을 선택 합니다.

파일 목록 중 bin이 들어간 파일을 다운 받습니다.

압축을 해제합니다.


사용할 jar 압축 해제한 폴더에 넣어줍니다.

해당 폴더에서 커맨드 창을 열어줍니다.

다음과 같이 입력합니다.

bin\proxygen.exe FILE_NAME.jar -wd .\

PS. C 드라이브가 아닌 다른 드라이브에서 할 경우 실패할 수 있다고 합니다.


DLL 생성을 위한 파일들이 생성됩니다.

여기서 .NET 경로가 PATH 에 지정되어 있지 않다면 build.cmd 파일을 수정해 줍니다.

csc 라고 되어 있는 부분을 찾아서 본인의 .NET 경로로 수정해 줍니다.

C:\Windows\Microsoft.NET\Framwork\버전\csc


build.cmd 파일을 실행합니다.

C# 라이브러리(dll)이 생성됩니다.


생성된 C# 라이브러리와 lib 폴더의 jni4net.n-0.8.8.0.dll을 참조해 C#에서 다음과 같은 양식으로 사용 가능합니다.


using net.sf.jni4net;


BridgeSetup bridgeSetup = new BridgeSetup();

bridgeSetup.AddAllJarsClassPath(".");

//bridgeSetup.IgnoreJavaHome = true;

//bridgeSetup.Verbose = true;

BridgeCreateJVM(bridgeSetup);


Bridge.RegisterAssembly(typeof(PACKAGE_NAME.CLASS_NAME).Assembly);


PACKAGME_NAME.CLASS_NAME.METHOD_NAME();


C# 실행 파일의 경로에 jni4net 폴더에 생성되거나 존재 했던 clr, jvm,lib,target 폴더와 build.cmd, 라이브러리 파일(dll, jar) 들이 들어있어야 정상 실행 됩니다.


테스트 케이스에서는 

- lib\jni4net.j-0.8.8.0.jar

- lib\jni4net.n-0.8.8.0.dll

- C# 라이브러리

- Java 라이브러리

만 있어도 실행이 됩니다.


PS. CLR 문제가 생겼을땐 x86, x64 환경 문제일 수 있습니다. 확인해 보시기 바랍니다.


원래 Unity 에서 사용하고자 찾았으나...

이 라이브러리는 C# 프로젝트에서 잘 작동 하지만 Unity 엔 어떻게 붙여야할지 답이 없네요..


다른 라이브러리를 이용해 성공했단 글이..

ikvmc

반응형

'Works > C#' 카테고리의 다른 글

Covariance and Contravariance  (0) 2022.01.19
C# 암호화 변수  (0) 2020.09.23
[.NET] Windows Registry 등록/삭제  (0) 2019.09.08
For vs Foreach  (0) 2018.12.04

댓글