2012-06-11 19 views
5

Soy un desarrollador de Java. Pero, por alguna razón, tengo que tomar la ayuda de C# para llevar a cabo mi tarea. He mencionado el código C# que se utiliza para crear una DLL. Esa DLL debe ser utilizada en mi programa Java para hacer lo necesario.Llamando a C# dll desde Java

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Microsoft.Office.Interop.Word; 

namespace Yrl.Tracingtool 
{ 
public class DocxUtil 
{ 
    public Application Jump(string fileName) 
    { 

     object fileNameAsObject = (object)fileName; 
     Application wordApplication; 
     try 
     { 
      wordApplication = new Application(); 
      object readnly = false; 
      object missing = System.Reflection.Missing.Value; 
      wordApplication.Documents.Open(ref fileNameAsObject, ref missing, ref readnly, ref missing, 
              ref missing, ref missing, ref missing, ref missing, 
              ref missing, ref missing, ref missing, ref missing, 
              ref missing, ref missing, ref missing, ref missing); 
      object what = Microsoft.Office.Interop.Word.WdGoToItem.wdGoToPage; 
      object which = Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToFirst; 
      object count = 3; 

      wordApplication.Selection.GoTo(ref what, ref which, ref count, ref missing); 

      return wordApplication; 
     } 
     catch (Exception ex) 
     { 
      //LogEntry log = new LogEntry(); 
      //log.Categories.Add("Trace"); 
      //log.Message = ex.ToString(); 
      //Logger.Write(log, "Trace"); 
      throw new System.IO.FileLoadException("File cannot be opened"); 
     } 
     finally 
     { 
      wordApplication = null; 
     } 
    } 
} 
} 

He comprobado este foro y en otros foros también, pero la mayoría de ellos hablar sobre el uso de un C++ o archivo DLL C en una llamada JNI. Si alguien tiene conocimiento de llamar a C# DLL desde Java, por favor avíseme.

+0

creo que tendría que utilizar COM? ¿Puede estar mal? – Liam

+0

@duffymo No lo creo. Ese artículo no tiene ninguna información sobre C# DLL. – rajshekhar

+0

Existe una API de Java para el proyecto de Microsoft Documents en Apache, [Apache POI] (http://poi.apache.org/). ¿Podría ser esta una alternativa para mezclar Java y C#? (Por supuesto, no tengo experiencia en el uso de _Apache POI_). –

Respuesta

0

es posible que tenga que usar JNI.

JNI es un acrónimo de Java Native Interface. El uso de JNI, podemos llamar a las funciones que están escritas en otros idiomas desde Java

echar un vistazo al siguiente

http://www.codeproject.com/Articles/2876/JNI-Basics-1

+0

Gracias por compartir el enlace. Pero, ese artículo habla de C/C++ DLL. Necesito información sobre las DLL escritas en C#. – rajshekhar

+0

puede usar el ejemplo también para llamar al código de C# –

+0

¿Tiene un ejemplo para eso? Estoy de acuerdo con Raj, las DLL C# son diferentes a las DLL nativas de Windows. De hecho, estoy buscando una herramienta para combinar un proyecto de Java y .NET y si pudiera usar JNI podría ser una solución adecuada. Gracias – Bjoern

2

Utilizamos ICE para la comunicación entre aplicaciones .NET y Java. No es exactamente lo que necesita, pero podría ayudar.

También me gustaría recomendar googlear "puente .NET Java" - hay varios marcos para esto (jni4net, JNBridge etc)