调用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;
        }
    }
}
}

我已经检查了这个论坛和其他论坛,但是大多数人谈论的是在JNI调用中使用C++或C DLL文件。如果有人知道如何从Java调用C# DLL,请告诉我。


我认为你可能需要使用COM?但我也可能错了。 - Liam
@duffymo 我不这么认为。那篇文章没有关于C# DLL的任何信息。 - rajshekhar
在Apache上有一个针对Microsoft文档的Java API项目,名为Apache POI。这是否可以成为Java和C#混合编程的替代方案?(当然,我自己没有使用过_Apache POI_,所以无法确定。) - Anders Gustafsson
@AndersGustafsson 我已经对使用Apache POI进行了可行性研究。但是,那并不完全符合我的要求。 - rajshekhar
@Raj 有一些Java/COM互操作库可用,例如JACOB和j-interop。更多信息请参见此SO答案。这对你有帮助吗? - Anders Gustafsson
2个回答

2
我们使用 ICE 在 .NET 和 Java 应用程序之间进行通信。虽然不完全符合你的需求,但可能会有所帮助。
此外,我建议搜索一下 "".NET Java bridge"" - 有几个框架可以实现这一点(jni4net、JNBridge 等)。

0

谢谢分享链接。但是,那篇文章讨论的是C/C++ DLL。我需要关于用C#编写的DLL的信息。 - rajshekhar
你有示例吗?我同意Raj的观点,C# DLL与本机Windows DLL是不同的。实际上,我正在寻找一种工具来将Java和.NET项目结合起来,如果我可以使用JNI,那可能会是一个合适的解决方案。谢谢。 - Bjoern

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接