2011-12-14 40 views
7

Tôi có một applet JNLP chạy trên một máy tính 64bit với cả hai 32 và 64 bit JVM được cài đặt. JNLP phải chạy trên JVM 64 bit để thực thi chính xác. Có cách nào để buộc việc sử dụng một JVM 64bit?Làm thế nào để đảm bảo rằng một jnlp được chạy trên 64bits jvm

+0

* "JNLP phải chạy trên JVM 64 bit để thực thi chính xác." * Tại sao? –

+1

@Andrew, bộ nhớ! đó là một khó khăn. Ngoài ra có lẽ bản địa libs, vv – bestsss

+0

@bestsss Cảm ơn, nhưng tôi đã không yêu cầu đầu cơ từ người qua đường. Tôi muốn có một câu trả lời cụ thể từ OP. –

Trả lời

0

Xem ở đây: How can I tell if I'm running in 64-bit JVM or 32-bit JVM (from within a program)?

Bạn có thể sử dụng để phát hiện một JVM 64-bit, và nếu nó không, bạn hiển thị một thông báo lỗi.

+1

Chỉ có một trong những kỹ thuật đó hoạt động gần với tệp JNLP là thử nghiệm os.arch. OP sẽ cần danh sách tất cả các giá trị os.arch 64 bit. (Có ít nhất "xmd64" và "amd64" cho hai kiến ​​trúc phổ biến.) –

1

Sử dụng -d64 tùy chọn VM để chỉ cho phép máy ảo khởi động ở 64 bit. Cách khác nó đơn giản là không bắt đầu. Không thân thiện nhưng thực hiện công việc. Trong chế độ điều khiển in:

Error: This Java instance does not support a 32-bit JVM. 
Please install the desired version. 

-d64 được hỗ trợ từ 1.5.0

+1

KHÔNG. Sử dụng "-d64" (-D64 là một lỗi trong tài liệu Oracle, -D trong chữ hoa được sử dụng để xác định biến môi trường) để chuyển nó thành tùy chọn JVM, chuyển nó thành "-J-d64" –

+0

-d64 và -D64 có ý nghĩa khác nhau, bởi vì là trường hợp nhạy cảm. –

0

Nếu bạn sử dụng một trình duyệt 64Bit thì 64Bit JVM được sử dụng. Nếu bạn sử dụng Trình duyệt 32Bit (mặc định cho hầu hết các trình duyệt hiện nay) thì sử dụng 32Bit JVM. Vì vậy, ví dụ: firefox và chrome chỉ có phiên bản 32Bit trên mạng (tất nhiên có test/develop phiên bản nhưng không có gì chính thức). Microsofts IE là một trong số ít nhất offering cả hai phiên bản.

Bạn không thể đảm bảo rằng jnlp sẽ chạy trong môi trường 64 bit. Tuy nhiên, bạn có thể đảm bảo trong mã applet của mình, được bắt đầu trong môi trường phù hợp:

String architecture = System.getProperty("os.arch"); 

if(architecture.equals("i386") || architecture.equals("i686")){ 
architecture = "x86"; 
} 
else if(architecture.equals("amd64") || architecture.equals("universal")){ 
architecture = "x86_64"; 
} 
Các vấn đề liên quan