C# 개발 환경에서 Java 와 통신을 해야 할 일이 생겼습니다.
JavaBridge 라는 키워드를 들고 찾아보니 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 엔 어떻게 붙여야할지 답이 없네요..
'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 |
댓글