2009-02-04 14 views
47

Jestem programistą pierwszego stopnia, więc prosimy o opisowe w swoich odpowiedziach.Użyj interfejsu API .jar java library w języku C#?

Próbuję użyć interfejsu API języka Java podanego jako plik .jar w mojej aplikacji C# .net. Nie znam zbyt wiele Java, ale ten plik .jar mówi "nie ma atrybutu manifestu klasy głównej", kiedy próbuję go uruchomić, więc oznacza to bibliotekę? Ten interfejs API Java zawiera również plik .java, który pokazuje, jak korzystać z biblioteki, ale nie widzę kodu wewnątrz pliku .jar.

Znalazłem this question na tej stronie, a jedna z odpowiedzi brzmi: "W prosty sposób możesz spakować swoje klasy Javy do pliku JAR, a następnie W klasie C# use Process dla wykonania i odwzorowania strumienia IO." Jestem semi-znajomy z klasy Process w C#, ale nie rozumiem, jak mogłem go używać do korzystania z biblioteki Java w moim projekcie C#.

Czy to możliwe? lub czy ta odpowiedź była niepoprawna?

Jeśli tak, czy możesz wyjaśnić, w jaki sposób mogę użyć biblioteki .jar w mojej aplikacji C#.

Odpowiedz

65

Możesz to zrobić za pomocą IVKM.Net. IVKM.NET zawiera aplikację o nazwie ikvmc. Oto dokumentacja dla tego narzędzia:

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

wykorzystać go skompilować kod Java w słoiku.

Następnie uruchom ikvmc program:

ikvmc myCode.jar

Jeśli słoik zawiera funkcję main(), zostanie ona przekształcona exe, który można uruchomić na CLR. W przeciwnym razie zostanie zamieniony na dll. Aby użyć bibliotek DLL w projekcie, po prostu dodaj je jako odniesienia w Visual Studio, a ten sam interfejs API, który był dostępny w Javie, będzie dostępny w Twojej aplikacji .Net.

Można również dołączyć bibliotekę IKVM.GNU.Classpath.dll z ikvmc i korzystać ze standardowych bibliotek klas Java w swojej aplikacji.

+0

dzięki to spróbuję. kiedy mam .dll i zaimportuję go do mojego projektu powinienem zadzwonić do funkcji biblioteki za pomocą Pinvoke? – timmyg

+1

Nie musisz używać pinvoke. Powinieneś być w stanie po prostu wywołać api tak, jakbyś był napisany w C#. –

+1

powinieneś zmienić "run on the CIL" na "run on the CLR" – LDomagala

4

Spójrz na IKVM ... ma narzędzia dające ci pewien poziom współdziałania. Kiedy mówisz Java API zakładam, że chcesz wywołać niektóre funkcje z słoika, a nie po prostu go wykonać

+0

Prawidłowo, plik .jar nie jest wykonywany, zgłasza komunikat o błędzie, który brzmi "Nie można załadować atrybutu manifestu klasy głównej z ...". Po przekonwertowaniu pliku .jar na .dll zamierzam użyć go tak samo, jak w przykładzie z kodem java, używając pliku .jar. – timmyg

Powiązane problemy