2010-04-07 47 views
6

Có cách nào bằng cách sử dụng mã JNI và C# để tạo chương trình gọi bất kỳ phương thức Java đã cho không? Giả sử rằng tôi có một hệ thống phân cấp lớp chứa jar và tôi chịu trách nhiệm tải JVM và các lớp này, tôi có thể viết chương trình C# nhận giá trị chữ ký + đối số java khi đang chạy và gọi mã java không?Gọi bất kỳ phương thức Java nào từ C#

Hãy cố gắng hạn chế câu trả lời của bạn cho các công nghệ miễn phí (các giải pháp JNI được ưu tiên).

Trả lời

3

IKVM là một tùy chọn. Nó thực hiện một JVM trong .Net và cung cấp các công cụ interop.

+1

Làm thế nào IKVM có thể trợ giúp ở đây, độ phân giải phải được thực hiện trong thời gian chạy chứ không phải bằng cách tạo các tạo phẩm tĩnh (.NET proxy)? – Guy

+0

@Guy - IKVM có thể được sử dụng ở cả chế độ động và tĩnh; xem http://sourceforge.net/apps/mediawiki/ikvm/index.php?title=User%27s_Guide Ở chế độ động, các mã bytecode Java được trình dịch nạp lớp dịch chuyển vào CIL. –

+0

Nói chung, tôi muốn rút ra khỏi giải pháp tạo proxy .NET. – Guy

3

IMHO cách tốt nhất là chạy Chương trình Java dưới dạng WebService (hoặc tạo một Giao diện WebService dựa trên Java cho nó) và chỉ cần gọi nó từ C#.

+0

Tôi đã không đề cập đến rằng tôi không có bất kỳ đầu mối nào về mã Java cũng như bất kỳ khả năng nào để thay đổi nó. Đầu vào duy nhất tôi có là: JAR, tên phương thức, đối số và giá trị – Guy

+0

dbenerlin: Các kiểu dữ liệu phức tạp được hỗ trợ trong Java được hỗ trợ trong .Net là gì? Cám ơn – Ocean

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