2010-04-07 9 views
6

Czy istnieje sposób używania kodu JNI i C# do utworzenia programu wywołującego daną metodę Java? Załóżmy, że mam słoik zawierający hierarchię klas i jestem odpowiedzialny za ładowanie JVM i tych klas, czy mogę napisać program w języku C#, który od razu otrzyma wartości podpisu i argumentu metody java i wywoła kod java?Wywołanie dowolnej metody Java z C#

Proszę ograniczyć odpowiedzi na bezpłatne technologie (preferowane rozwiązania JNI).

Odpowiedz

3

IKVM to jedna opcja. Implementuje wirtualną maszynę wirtualną w .Net i zapewnia narzędzia współdziałania.

+1

W jaki sposób IKVM może tutaj pomóc, rozdzielczość powinna zostać wprowadzona w środowisku wykonawczym, a nie przez tworzenie statycznych artefaktów (.NET proxy)? – Guy

+0

@Guy - IKVM może być używany zarówno w trybie dynamicznym, jak i statycznym; zobacz http://sourceforge.net/apps/mediawiki/ikvm/index.php?title=User%27s_Guide W trybie dynamicznym kody bajtowe Java są tłumaczone w locie na CIL przez moduł ładujący klasy. –

+0

Będąc ogólniejszym, chcę odciąć się od rozwiązania, które tworzy .NET proxy. – Guy

3

IMHO najlepszym sposobem byłoby uruchomienie programu Java jako WebService (lub utworzenie dla niego interfejsu WebService opartego na Javie) i po prostu wywołanie go z C#.

+0

Nie wspomniałem, że nie mam żadnych wskazówek dotyczących kodu Java ani żadnej możliwości jego zmiany. Jedyne dane wejściowe to: JAR, nazwa metody, argumenty i wartości – Guy

+0

dbenerlin: Jakie typy danych są obsługiwane w Javie, które są obsługiwane w .Net? Dzięki – Ocean