Import thư viện C# vào trong project Java với jni4net
Bài đăng này đã không được cập nhật trong 5 năm
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é:
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
All rights reserved