Import thư viện C# vào trong project Java với jni4net

Import thư viện C# vào trong project Java với jni4net

I. Mở đầu

Ngày trước khi mình mới bắt đầu sự nghiệp trên con đường làm coder, mình đã có quãng thời gian dài làm freelancer. Mình có gặp khá nhiều những dạng yêu cầu của khách hàng, rồi trong lúc bắt tay vào làm thì xuất hiện vô số vấn đề nan giải.

Mình nhớ lúc đó có 1 vấn đề như thế này: Do mình là developer java nên mình thường ưu tiên làm các dự án bằng Java, nhưng đợt làm 1 cái app desktop lại dính ngay 1 cái vấn đề là bên java không có một cái lib cần cho quá trình làm cái app đó. May thay bên C# lại có lib đó. Vậy vấn đề là làm sao mình có thể cho cái thư viện đó vào trong code java của mình. Chứ mình không thể đập cả dự án đang làm dở để chuyển đổi ngôn ngữ vì một lib được



Câu trả lời là nằm ở JNI4Net

Hôm nay mình sẽ hướng dẫn các bạn làm thế nào để import 1 lib được viết bằng C# vào trong project java.



II. Jni4net là gì

Nó là cầu nối giữa Java và .Net

Đây là cách thức thư viện hoạt động



III. Ví dụ cụ thể để thêm một lib từ C# vào project java



1. Tạo 1 lib định dạng file .dll bằng Visual studio

Bạn tạo 1 project loại Class Library nhé:



Đổi tên file class đi cho dễ nhìn xíu. Như của mình là TestClass và mình viết sẵn 1 hàm sum để lát nữa test trong java.

Cuối cùng là click Build -> Build Solution để tạo lib với định dạng file *.dll

Bạn vào thư mục project trong thư mục bin sẽ có lib đó



2. Download thư viện jni4net về

Các bạn vào link phía dưới để download nhé:

http://jni4net.com/index.html

Như bản của mình là jni4net-0.8.6.0-bin.zip. Bạn giải nén ra và bắt đầu tiến hành build và tạo lib cho java sử dụng:

Trước khi bạn làm cái này nhớ setup biến môi trường cho java và .net



Setup java home

Set up thêm cái path cho java và .net

Đã xong xuôi. giờ tiến hành build lib từ .Net thôi.

Vào cmd cd đến …..\jni4net-0.8.6.0-bin\bin



.\proxygen.exe [path_file_dll] -wd [directory_save]



Ví dụ:

Tiếp theo cd vào thư mục chứa cái file mình vừa ghi ra. Mình di chuyển file dll đó vào E:\test.



Gõ lệnh

.\build.cmd



Nó build cho mình 2 file



TestLibDll.j4n.jar

TestLibDll.j4n.dll



Giờ gom cho mình những tệp này bỏ cùng vào thư mục libs

3 tệp mình khoanh đỏ thì lấy trong cái jni4net ban đầu mình tải về nhé jni4net-0.8.6.0-bin\lib Mình là win64 nên mình dùng cái đó.

3. Add vào project java



Ví dụ mình đang dùng IDE là Inteliji.

Bạn tạo 1 app java cơ bản



Add cái thư mục libs mà mình vừa mới tạo vào trong project

Chọn File -> project structure… -> module Xong click vào dấu + để thêm nhé

Chọn JARs or directories… xong trỏ đến thư mục libs mình vừa gom -> ok

Tạo 1 class App Main

Với source code như sau:



import net.sf.jni4net.Bridge;
import testlibdll.TestClass;

import java.io.File;
import java.io.IOException;

public class AppMain {

   public static void main(String[] args) throws IOException {
       Bridge.setVerbose(true);
       Bridge.init(new File("E:/test/libs/jni4net.n.w64.v40-0.8.6.0.dll"));
       Bridge.LoadAndRegisterAssemblyFrom(new File("E:/test/libs/TestLibDll.j4n.dll"));
       int x = TestClass.sum(10, 11);
       System.out.println("\nJava show: "+x);
   }
}

Đây là kết quả khi chạy

Vậy là mình đã thành công gọi thư viện .Net sang project Java

Cảm ơn các bạn đã theo dõi