2011-01-19 31 views
5

Tôi muốn bắt đầu một ứng dụng .NET (tương thích với Mono) từ ngữ cảnh của một môi trường Java.Làm cách nào để khởi động ứng dụng .NET từ Java trên Linux, Mac và Windows?

Tôi đoán là tôi sẽ phải bằng cách nào đó tìm ra nếu mono được cài đặt, tìm vị trí và bắt đầu sử dụng đường dẫn ứng dụng .NET làm tham số.

Nhưng cách mạnh mẽ để làm điều đó là gì? đây có phải là cách tốt hơn không?

Có lẽ tôi nên làm rõ bối cảnh: phần Java đang chạy như một plugin trong môi trường có tương tác hạn chế, vì vậy tôi thực sự muốn tìm cách mà không cần phải có tệp cấu hình hoặc giao diện người dùng.

+1

Có "đường dẫn đến trình đơn thực thi làm tùy chọn cấu hình trong ứng dụng" không? –

+0

Thực sự muốn nó được tự động. –

Trả lời

1

Nếu bạn đã có net/mono đã được cài đặt và bạn có thể nhấn đúp chuột vào file exe và nó chạy, sau đó bạn chỉ có thể sử dụng Desktop.open()

Dễ dàng như:

Desktop.getDesktop().open(file); 

Xem vào đây để biết thêm chi tiết: Using the Desktop API in Java SE 6 EDIT

tôi phải khởi động Lin của tôi ux hộp nơi tôi có một ứng dụng đơn và điều này làm việc chỉ tuyệt vời:

class Launch { 
    public static void main(String ... arg) { 
     new ProcessBuilder("/usr/bin/myapp").start(); 
    } 
} 

Lặp lại, làm việc rất tuyệt!

+0

cũng điều này phụ thuộc vào cài đặt mono của bạn, trên hệ thống Linux của tôi, bạn phải gọi mono và chuyển ứng dụng làm đối số. –

+1

: -O, trong trường hợp đó bạn chỉ cần: 'ProcessBuilder mới ("/path/to/mono "," app "). Start();' và đó là nó. Bạn không thể đoán được nơi nó có thể được cài đặt. Nếu bạn không muốn sử dụng một tập tin cấu hình, sau đó chỉ cần mã cứng nó. Thực tế, nếu tập tin thực thi nằm trong $ PATH của bạn, hãy gọi 'ProcessBuilder mới (" monoexecutable "," app "). Start();' là đủ. Bạn đã thử nó chưa? – OscarRyz

+0

+1 để đề cập đến cách đơn giản điều này có thể xảy ra nếu mono thực thi được dự kiến ​​là trên PATH. Điều này nên được ưu tiên để có đường dẫn mã hóa cứng trong ứng dụng Java. –

0

Câu hỏi thú vị! Câu trả lời là không phải là đơn giản nào

Nếu bạn đang chạy Linux

chắc chắn bạn cần Mono chạy một CLR thực thi

Nếu bạn đang chạy Windows

bạn có thể chạy CLR thực thi thông qua vỏ HOẶC sử dụng cài đặt Mono cục bộ (vì Mono cũng chạy trên Windows), nhưng có rất ít lý do để chạy Mono trên Windows

Vì vậy, tôi nghĩ bạn nên rst phát hiện hệ điều hành trong Java (xin vui lòng không hỏi tôi làm thế nào để), và sau đó nếu bạn đang chạy Linux tìm Mono.

Thực thi chính của Mono thường ở /usr/bin, nhưng luôn ở trong số $PATH để bạn có thể chạy mono Executable.exe từ bảng điều khiển. Nếu bạn không thể chạy một lệnh như vậy trong Java, hoặc Mono không nằm trong đường dẫn, thì bạn cần chạy whereis mono để nhận đường dẫn đến tệp thực thi.

Không có ý tưởng nào khác.

+0

Không phải là thực thi cứng, đơn và .net có thể chạy với lớp "ProcessBuilder", xem câu trả lời của tôi – OscarRyz

+0

Có nhưng Mono hoạt động như Java: bạn phải chạy "mono App.exe" như "java -jar App.jar", vì vậy đó là lý do tại sao anh ta cần đường dẫn đến mono có thể thực thi –

0

Tôi không biết gì về .Net hoặc Mono, nhưng tôi cho rằng, nó không khác nhiều để bắt đầu ứng dụng .Net so với ứng dụng thông thường, hoặc?

Lớp dùng để giao tiếp với môi trường là java.lang.Runtime. Nó cũng cho phép bạn thực hiện các lệnh. (.exec-methods)

Để xây dựng một lệnh thích hợp, chức năng khác nhau trên java.lang.System có thể có ích.

Nếu tùy chọn này không đủ cho các yêu cầu của tình huống cụ thể của bạn, JNI có thể là lựa chọn duy nhất của bạn ...

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