Вопрос по c#, dll, java-native-interface, java – Вызов C # dll из Java

5

Я разработчик Java. Но по какой-то причине я должен воспользоваться помощью C #, чтобы выполнить мою задачу. Я ниже упомянул код C #, который используется для создания DLL. Эта 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 ++ или C DLL-файла в вызове JNI. Если у кого-то есть знания по вызову C # DLL из Java, пожалуйста, дайте мне знать.

@ Duffymo Я так не думаю. В этой статье нет никакой информации о C # DLL. rajshekhar
Я думаю, что вы должны использовать COM? Может быть не прав? Liam
@Raj Доступно несколько библиотек взаимодействия Java / COM, таких как JACOB и j-interop. Больше информации вthis SO answer, Может ли это помочь? Anders Gustafsson
На Apache есть проект Java API для Microsoft Documents,Apache POI, Может ли это быть альтернативой смешиванию Java и C #? (Конечно, у меня нет опыта использованияApache POI себя.) Anders Gustafsson
@AndersGustafsson Я подготовил технико-экономическое обоснование использования Apache POI. Но это не совсем вписывается в мои требования. rajshekhar

Ваш Ответ

2   ответа
0

JNI is an acronym of Java Native Interface. Using JNI, we can call functions which are written in other languages from Java

посмотрите на ниже

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

Вы можете использовать этот пример также для вызова кода C #
Спасибо, что поделились ссылкой. Но эта статья рассказывает о C / C ++ DLL. Мне нужна информация о DLL, написанных на C #. rajshekhar
У вас есть пример для этого? Я согласен с Раджем, библиотеки C # отличаются от собственных библиотек Windows. Я на самом деле ищу инструмент для объединения проектов Java и .NET, и если бы я мог использовать JNI, это могло бы быть подходящим решением. Спасибо
2

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

Также я рекомендую поискать в Google".NET Java bridge" - для этого есть несколько фреймворков (jni4net, JNBridge и т. д.)

Похожие вопросы