2012-01-28 2 views
1

나는 jni4net을 발견했습니다. 이것은 Java와 .NET 사이에 다리를 제공하는 데 사용되는 기술입니다. 그래서 새로운 Eclipse Java 프로젝트를 만들고 jni4net-0.8.6.0-bin/samples/myCSharpDemoCalc-> MyCalcUsageInJava.java의 샘플 코드를이 프로젝트에 복사했습니다. 그러나 두 개의 가져 오기 "mycsharpdemocalc.DemoCalc"및 "mycsharpdemocalc.ICalc"를 찾을 수 없기 때문에 코드를 컴파일 할 수 없습니다. 코드를 컴파일 할 수 있도록 mycsharpdemocalc.c를 Java 프로젝트에 통합/가져 오는 방법을 모르겠습니다.jni4net 샘플을 발견했습니다.

import net.sf.jni4net.Bridge; 

import java.io.IOException; 

import mycsharpdemocalc.DemoCalc; 
import mycsharpdemocalc.ICalc; 

public class MyCalcUsageInJava { 
    public static void main(String arsg[]) throws IOException { 
     Bridge.init(); 
     Bridge.LoadAndRegisterAssemblyFrom(new java.io.File("MyCSharpDemoCalc.j4n.dll")); 

     ICalc calc = new DemoCalc(); 
     final int result = calc.MySuperSmartFunctionIDontHaveInJava("Answer to the Ultimate Question of Life, the Universe, and Everything"); 

     System.out.printf("Answer to the Ultimate Question is : " + result); 
    } 
} 
+0

가 클래스 패스에 클래스 나 항아리 있습니까 커뮤니티가? –

+0

이 샘플을 포함하는 유일한 것은 Calc.cs, MyCSharpDemoCalc.c, MyCSharpDemoCalc.sln, MyCalcUsageInJava.java 및 MyCSharpDemoCalc.dll입니다. 그래서 MyCSharpDemoCalc.dll을 클래스 패스에 넣었지만 코드를 컴파일 할 수는 없습니다. –

+0

@ Youkuper 문제를 해결 했습니까? 나는 같은 문제가있어 ... – davioooh

답변

1

각 샘플 디렉토리에는 ReadMe이 있습니다. proxygen 도구를 사용하여 프록시 (Java 코드에서 사용되는)를 생성해야합니다. 이를 수행하는 generateProxies.cmd 배치가 있습니다. 더 복잡한 것들은 proxygen에 대한 설정 파일이 필요할 수 있습니다.

또한 Wiki

+0

이 프로젝트를 컴파일 한 후 실행 해 보았습니다. 다음 오류 메시지가 표시 하였다 : 글 예외 "메인"에서 java.lang.UnsatisfiedLinkError : mycsharpdemocalc.DemoCalc .__ ctorDemoCalc0 (LNET/SF/jni4net/INJ/IClrProxy) V \t mycsharpdemocalc.DemoCalc .__ ctorDemoCalc0 (원시 메소드)에 \t at mycsharpdemocalc.DemoCalc. (DemoCalc.java:25) \t at MyCalcUsageInJava.main (MyCalcUsageInJava.java:13). 뭐가 잘못 되었니, 제발 저에게 말해 줄 수 있습니까? –

+0

나는 당신이 추측하는 다리를 초기화하는 것을 잊었다. 또는 모든 DLL을 등록하지 않았습니다. –

+0

@PavelSavara 귀하의 라이브러리를 사용하는 것과 동일한 문제가 있습니다. 내 DLL을로드하고 lib 폴더에'jni4net.j-0.8.6.0.jar', ,'jni4net.n-0.8.6.0.dll'과'jni4net.n.w32.v40-0.8.6.0 .dll'. Proxygen은 jvm 폴더에 java 클래스를 생성하고 clr 폴더에 cs 파일을 생성합니다. 나는 처음 것만 사용하고 있습니다. 맞습니까? – davioooh

관련 문제