Tôi có thể cài đặt Java 32 bit ngoài phiên bản 64 bit không?


14

Để phát triển bình thường, tôi đang sử dụng máy ảo 64 bit, khi tôi cài đặt bộ công cụ phát triển Java (OpenJDK) với trình quản lý gói.

Nhưng có một số ứng dụng Java (có chứa các thư viện riêng, tôi cho rằng) không hoạt động trên máy ảo Java 64 bit. (Có vẻ như SoapUI là một ứng cử viên như vậy - trong phiên bản 4.0.1 và 4.5 beta 1, nó không thành công với lỗi phân đoạn nếu chạy trong máy ảo 64 bit.)

Tôi đã cố gắng cài đặt phiên bản i386 của openjdk-6-jre ngoài phiên bản 64 bit, nhưng điều này bị từ chối bởi năng khiếu (nói rằng nó mâu thuẫn với phiên bản 64 bit hiện có). Điều tương tự cũng xảy ra nếu tôi cố gắng cài đặt openjdk-jre-7 trong phiên bản 32 bit.

Câu trả lời cho Tôi có thể chạy ứng dụng Java 32 bit trên hệ thống 64 bit được đề xuất để cài đặt không ia32-sun-java6-bin, nhưng không có gói nào có tên này (hoặc bất cứ thứ gì có ia32và Java).

Tôi có thể làm gì ở đây để chạy SoapUI mà không cần chuyển toàn bộ cài đặt Java hệ thống của mình sang 32 bit?


Tôi thực sự đã quản lý để chạy SoapUI với phiên bản 64 bit bằng cách chỉnh sửa tập lệnh shell để truyền một số tham số khác nhau. Tôi sẽ phải tìm kiếm chính xác những gì tôi đã làm.
Paŭlo Ebermann

Xem Askubfox.com/questions/111947/ trên để cài đặt cả java 64 bit và 32 bit từ kho lưu trữ. Bạn cũng có thể thay đổi mặc định.
dùng68186

Câu trả lời:


4

Thật dễ dàng để cài đặt nhiều phiên bản Java. Hơi khó hơn (đọc: tẻ nhạt) là chuyển đổi giữa các phiên bản bất chợt.

tldr

  1. có được một
  2. cởi trói cho người khác
  3. đường dẫn xuất tùy thuộc vào cái bạn muốn

apt-get một phiên bản

Quyết định phiên bản nào bạn sẽ sử dụng. Hoặc quyết định cái nào bạn muốn có cập nhật tự động. Hoặc lật một đồng xu, bất cứ điều gì. Bạn thậm chí không phải sử dụng apt-get; chỉ cần duy trì thủ công cả hai gói trên hệ thống của bạn (xem tiêu đề tiếp theo).

Vấn đề là: sử dụng trình quản lý gói của Ubuntu dễ dàng hơn để duy trì chính xác một phiên bản của gói như java. Bạn sẽ chăm sóc phần còn lại.

cởi trói cho người khác

Tải về một tarball jdk. Giải nén nó vào /opt.

chuyển đổi giữa chúng

Tôi để người quản lý gói xử lý cài đặt chính của tôi. Tôi xuất một số vars cho người khác khi tôi cần. Tôi làm việc trên dòng lệnh rất nhiều, vì vậy đó là một giải pháp tốt cho tôi. Tôi bận tâm với:

export JAVA_HOME=/opt/jdk
export PATH=$JAVA_HOME/bin:$PATH

Ngoài ra, tôi symlink jdk/-> jdk1.6.0_3/vì tôi lười biếng và không thích cấu hình lại .bashrc và các tập lệnh khác mỗi khi nâng cấp jdk gia tăng.

Biến môi trường bạn có thể quan tâm:

JAVA_LIBDIR
JNI_LIBDIR
JAVAJNI_LIBDIR
JVM_ROOT
JAVA_HOME
PATH

Bạn không thể có được .debkiến trúc khác thay vì tarball sao?
0xC0000022L

@ 0xC0000022L Ý tưởng là bạn chứa mỗi phiên bản vào thư mục riêng của nó. Nếu bạn có thể làm điều đó với một cuộc tranh luận, thật tuyệt!
djeikyb

2

Cài đặt

Đầu tiên, tải xuống JDK 32 bit mới nhất (không phải JRE) từ Sun. Tại thời điểm này, tôi là jdk-6u7-linux-i586.bin.

Cài đặt gói java:

sudo apt-get install java-package 

Bây giờ sử dụng gói java để xây dựng gói .deb từ tệp nhị phân bạn đã tải xuống. Bạn phải lừa nó để xây dựng gói 32 bit:

DEB_BUILD_GNU_TYPE=i486-linux-gnu DEB_BUILD_ARCH=i386 fakeroot make-jpkg jdk-6u7-linux-i586.bin 

Điều này sẽ tạo ra một gói .deb. Vì một số lý do, tên gói có hậu tố _amd64. Cài đặt gói:

sudo dpkg -i sun-j2sdk1.6_1.6.0+update7_amd64.deb 

Sử dụng các lựa chọn thay thế cập nhật để chọn JDK mới. Nó đã được cài đặt tại /usr/lib/j2sdk1.6-sun cho tôi.

sudo update-alternatives --config java 

Nếu bạn chạy java -version, bạn sẽ thấy phiên bản chính xác:

java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) Server VM (build 10.0-b23, mixed mode)

Nhật thực 32 bit

Tôi đã phải cài đặt lại phiên bản 32 bit của Eclipse (vì SWT chứa mã gốc). Tôi cũng đã phải xóa thư mục ~ / .eclipse của mình hoặc Eclipse sẽ không khởi động (điều này đòi hỏi phải cài đặt lại các phiên bản mới của bất kỳ plugin nào). Cuối cùng, thêm JRE mới trong Java-> JRE đã cài đặt bằng cách sử dụng vị trí cài đặt (/usr/lib/j2sdk1.6-sun) và chọn nó làm mặc định.

tham chiếu


Cảm ơn, tôi sẽ thử điều này ... mặc dù tôi không muốn cái 32 bit là mặc định, chỉ sử dụng nó cho một vài chương trình không hoạt động với 64 bit.
Paŭlo Ebermann

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.