2016-12-15 15 views
5

Tôi có một ứng dụng Java SWT mà tôi đang cố gắng khởi chạy qua Java Web Start. Phiên bản 32 bit hoạt động tốt, nhưng nhiều người không thể có phiên bản 64 bit để khởi chạy. Họ nhận được một lỗi nói rằng không thể chạy một thư viện 64 bit trên một JVM 32 bit. Tôi đã tìm kiếm Google và StackOverflow và những người khác và không thể tìm thấy câu trả lời về cách bắt đầu Web để khởi chạy trong một JVM 64 bit.Java Web Start và 64 Bit JVM

Tôi đã thử sử dụng tùy chọn JVM, (-d64, -J-d64) mà không có bất kỳ sự may mắn nào. Điều này thậm chí còn có thể, hoặc chỉ là tôi chỉ giới hạn ở phiên bản 32 bit (lý tưởng là 64 bit là tốt nhất vì ứng dụng này sẽ phân tích rất nhiều dữ liệu từ các tệp nhật ký để hiển thị rõ ràng) không? Không. Tôi cần phải thay đổi gì trong JNLP của mình để cho phép điều này hoạt động?

<?xml version = '1.0' encoding = 'windows-1252'?> 
<jnlp spec="1.0+" 
     codebase="http://example.com/confluence/download/attachments/212175616/" 
     href="LogMiner_64Bit.jnlp"> 
    <information> 
      <title>LogMiner 64 Bit</title> 
      <vendor> TECH</vendor> 
      <description>Parse Log messages </description> 
      <shortcut online="true"> 
       <desktop/> 
       <menu submenu="FA"/> 
      </shortcut> 
      <offline-allowed/> 
    </information> 
    <menu>64Bit</menu> 
    <security> 
      <all-permissions/> 
    </security> 
    <resources> 
      <java version="1.7+" java-vm-args="-J-d64"/> 
      <jar href="LogMiner64.jar" main="true" download="eager"/> 
    </resources> 
    <application-desc main-class="com.logMiner.ui.LogMiner"/> 
</jnlp> 

Trả lời

4

Bạn có thể tạo một tệp jnlp duy nhất hỗ trợ cả kiến ​​trúc. Ví dụ:

<resources arch="amd64 x86_64"> 
    <jar href="LogMiner64.jar"/> 
</resources> 

<resources arch="x86 i386"> 
    <jar href="LogMiner32.jar"/> 
</resources> 

Nếu cần thẻ nguồn lực cũng có thể có một thuộc tính os, như trong os="Linux", os="Mac"os="Windows"

Bằng cách này bạn có thể có một tập tin jnlp duy nhất mà sẽ làm điều đúng liên quan cho các thư viện gốc, bất kể hệ điều hành và kiến ​​trúc mà người dùng đang sử dụng.

Xem thêm How to distinguish 32 bit from 64 bit java version in jnlp files

+1

Vâng, nhưng điều này không giúp người dùng có cả JVM 32 & 64 Bit trên máy tính của họ tận dụng bộ nhớ bổ sung mà có thể được phân bổ. Đây là lý do chính tôi đang cố gắng để có được 64 bit để làm việc. – user2857108

+1

JNLP sẽ sử dụng tài nguyên phù hợp đầu tiên. Vì vậy, có yếu tố tài nguyên với 64 bit vòm đầu tiên, sẽ để lại thứ hai (32 bit) như là một mùa thu trở lại. Tất nhiên, bạn có thể xóa phần tử tài nguyên kiến ​​trúc 32 bit để không cho phép JVM 32 bit. –

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