2012-06-11 58 views
5

Tôi là một nhà phát triển Java. Nhưng, vì một lý do nào đó tôi phải nhận sự giúp đỡ của C# để hoàn thành nhiệm vụ của mình. Tôi đã đề cập dưới đây C# mã được sử dụng để tạo ra một DLL. DLL đó phải được sử dụng trong chương trình Java của tôi để làm việc cần thiết.Gọi C# dll từ 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; 
     } 
    } 
} 
} 

Tôi đã kiểm tra diễn đàn này và các diễn đàn khác, nhưng hầu hết trong số họ nói về việc sử dụng tệp C++ hoặc C DLL trong cuộc gọi JNI. Nếu bất cứ ai có kiến ​​thức về việc gọi C# DLL từ Java, hãy cho tôi biết.

+0

Tôi nghĩ rằng bạn sẽ phải sử dụng COM? Có thể sai? – Liam

+0

@duffymo Tôi không nghĩ vậy. Bài viết đó không có bất kỳ thông tin nào về C# DLL. – rajshekhar

+0

Có một API Java cho dự án Microsoft Documents trên Apache, [Apache POI] (http://poi.apache.org/). Đây có phải là một thay thế cho việc trộn Java và C#? (Cấp, tôi không có kinh nghiệm sử dụng _Apache POI_ bản thân mình.) –

Trả lời

0

bạn có thể phải sử dụng JNI.

JNI là từ viết tắt của Giao diện bản địa Java. Sử dụng JNI, chúng ta có thể gọi các hàm được viết bằng các ngôn ngữ khác từ Java

có một cái nhìn tại bên dưới

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

+0

Cảm ơn bạn đã chia sẻ liên kết. Tuy nhiên, bài viết đó nói về C/C++ DLL. Tôi cần thông tin về các tệp DLL được viết bằng C#. – rajshekhar

+0

bạn có thể sử dụng ví dụ này để gọi C# code –

+0

Bạn có ví dụ về điều đó không? Tôi đồng ý với Raj, C# DLLs khác với Windows DLL gốc. Tôi thực sự đang tìm kiếm một công cụ để kết hợp một dự án Java và .NET và nếu tôi có thể sử dụng JNI nó có thể là một giải pháp thích hợp. Cảm ơn – Bjoern

2

Chúng tôi sử dụng ICE để giao tiếp giữa các ứng dụng .NET và Java. Nó không phải là chính xác những gì bạn cần nhưng có thể giúp đỡ.

Ngoài ra tôi muốn khuyên bạn nên googling "cầu .NET Java" - có một số khuôn khổ cho việc này (jni4net, JNBridge vv)

Các vấn đề liên quan