2010-04-07 53 views
6

¿Hay alguna manera de utilizar el código JNI y C# para crear un programa que invoque cualquier método Java dado? Supongamos que tengo un jar que contiene la jerarquía de clases y soy responsable de cargar la JVM y estas clases, ¿puedo escribir un programa C# que reciba los valores de firma + argumentos de método java sobre la marcha y llamar al código java?Llamar a cualquier método Java desde C#

Intente restringir sus respuestas a tecnologías gratuitas (se prefieren las soluciones JNI).

Respuesta

3

IKVM es una opción. Implementa una JVM en .Net y proporciona herramientas de interoperabilidad.

+1

¿Cómo puedo ayudar a IKVM aquí, la resolución se debe hacer en tiempo de ejecución y no creando artefactos estáticos (proxys .NET)? – Guy

+0

@Guy - IKVM se puede usar en modos dinámico y estático; ver http://sourceforge.net/apps/mediawiki/ikvm/index.php?title=User%27s_Guide En modo dinámico, los códigos de byte de Java son traducidos sobre la marcha en CIL por el cargador de clases. –

+0

Siendo más general, quiero alejarme de la solución que crea el proxy .NET. – Guy

3

En mi humilde opinión, la mejor manera sería ejecutar el Programa Java como un Servicio Web (o crear una Interfaz de Servicio Web basada en Java para ello) y simplemente llamarlo desde C#.

+0

No mencioné que no tengo ninguna pista sobre el código de Java ni ninguna posibilidad de cambiarlo. La única entrada que tengo es: JAR, nombre del método, argumentos y valores – Guy

+0

dbenerlin: ¿Cuáles son los tipos de datos complejos admitidos en Java que son compatibles con .Net? Gracias – Ocean