2009-02-04 5 views
47

저는 초급 프로그래머입니다. 귀하의 답변에 설명이되어주십시오.C#에서 .jar Java 라이브러리 API를 사용 하시겠습니까?

C# .net 응용 프로그램에서 .jar 파일로 제공된 Java API를 사용하려고합니다. Java를 많이 알지는 못하지만이 .jar 파일은 라이브러리를 의미하도록 "main-class manifest attribute"를 실행하려고 할 때 나타납니다. 이 Java API에는 라이브러리 사용 방법을 보여 주지만 .jar 내부의 코드를 볼 수없는 .java 파일도 함께 제공됩니다.

이 사이트에서 this question을 찾았습니다. "간단한 방법으로 Java 클래스를 jar 파일로 압축 한 다음 C#에서 IO 클래스를 실행하고 매핑하는 데 Process 클래스를 사용할 수 있습니다."라는 대답 중 하나가 읽 힙니다. 나는 C#의 Process 클래스에 익숙하지만, C# .net 프로젝트에서 자바 라이브러리를 사용하는 방법을 이해하지 못한다.

이것이 가능합니까? 아니면 그 대답은 틀린가?

그렇다면 어떻게 C# 응용 프로그램에서 .jar 라이브러리를 사용할 수 있는지 설명 할 수 있습니까?

답변

65

IVKM.Net을 사용하여 수행 할 수 있습니다. IVKM.NET에는 ikvmc라는 응용 프로그램이 포함되어 있습니다. 다음은이 도구에 대한 문서는 다음과 같습니다

http://www.ikvm.net/userguide/ikvmc.html

그것이 항아리로 자바 코드를 컴파일 사용합니다.

myCode.jar

ikvmc

당신의 항아리는 main() 함수가 포함 된 경우

은, 그것이 CLR에서 실행할 수있는 EXE 파일로 변환됩니다

그런 다음 ikvmc 프로그램을 실행합니다. 그렇지 않으면 그것은 dll로 변환 될 것입니다. DLL을 프로젝트에 사용하려면 Visual Studio에서 참조로 추가하면됩니다. Java에서 사용할 수있는 것과 동일한 API는 .Net 응용 프로그램에서 액세스 할 수 있습니다.

ikvmc의 IKVM.GNU.Classpath.dll dll을 포함하고 응용 프로그램에 표준 Java 클래스 라이브러리를 사용할 수도 있습니다.

+0

감사합니다. 시도해 보겠습니다. 일단 내가 .dll을 가지고 있고 그것을 내 프로젝트로 가져 오면, Pinvoke를 사용하여 라이브러리의 함수를 호출해야합니까? – timmyg

+1

pinvoke를 사용할 필요가 없습니다. 마치 C#으로 작성된 원문처럼 API를 호출 할 수 있어야합니다. –

+1

"CIL에서 실행"을 "CLR에서 실행"으로 변경해야합니다. – LDomagala

4

IKVM을 (를) 살펴보세요 ... interop의 어느 정도 수준의 도구를 제공합니다. Java API를 말할 때 jar에서 일부 기능을 호출하기보다는 그냥 실행한다고 가정하십시오.

+0

.jar가 실행되지 않으면 "Main-Class Manifest 속성을로드하지 못했습니다 ..."라는 오류 메시지가 표시됩니다. 일단 .jar 파일을 .dll로 변환하면 .jar를 사용하는 자바 코드 예제와 같은 것을 사용하려고 시도 할 것입니다. – timmyg

관련 문제