2012-06-11 2 views
5

Я разработчик Java. Но по какой-то причине я должен взять на себя помощь C# для выполнения своей задачи. У меня ниже приведен код C#, который используется для создания DLL. Эта DLL должна использоваться в моей программе Java, чтобы сделать это нужным.Вызов C# dll из 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; 
     } 
    } 
} 
} 

Я проверил этот форум и другие форумы тоже, но большинство из них говорят об использовании C++ или файл DLL C в JNI вызова. Если кто-то знает о вызове C# DLL из Java, пожалуйста, дайте мне знать.

+0

Я думаю, вы должны использовать COM? Может быть, неправильно? – Liam

+0

@duffymo Я так не думаю. В этой статье нет информации о C# DLL. – rajshekhar

+0

Существует проект Java API для Microsoft Documents на Apache, [Apache POI] (http://poi.apache.org/). Может ли это быть альтернативой смешению Java и C#? (Конечно, у меня нет опыта использования _Apache POI_.) –

ответ

0

Возможно, вам придется использовать JNI.

JNI - это аббревиатура интерфейса Java Native. Использование JNI, мы можем вызывать функции, написанные на других языках с Java

взглянуть на ниже

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

+0

Спасибо, что поделились этой ссылкой. Но в этой статье рассказывается о C/C++ DLL. Мне нужна информация о DLL, написанная на C#. – rajshekhar

+0

вы можете использовать этот пример также для вызова кода C# –

+0

У вас есть пример для этого? Я согласен с Raj, DLL C# отличаются от родных DLL Windows. Я на самом деле ищу инструмент для объединения проекта Java и .NET, и если бы я мог использовать JNI, это могло бы быть подходящим решением. благодаря – Bjoern

2

Мы используем ICE для обмена данными между .NET и Java-приложений. Это не совсем то, что вам нужно, но может помочь.

Также я рекомендую прибегая к помощи «.NET Java мост» - есть несколько рамок для этого (jni4net, JNBridge и т.д.)