Sử dụng phiên bản nhất định của JRE / JDK cho các chương trình nhất định


7

Tôi sử dụng ArchLinux và một IDE có tên PyCharm. Trên trang tải xuống , nó khuyên bạn nên sử dụng Java 6 thay vì OpenJDK. ArchLinux có gói OpenJDK ( jdk7-openjdk) mà tôi đã cài đặt, cài đặt và từ những gì tôi đã đọc trong Arch Wiki trên Java , có thể cài đặt Oracle Java 6 cùng với OpenJDK 7 thông qua một gói được gọi jdk6-compatjre6-compatcài đặt các phiên bản này của Java /opt/thay vì vị trí bình thường.

Tuy nhiên, sau khi cài đặt jdk6-compatjre6-compat, tôi vẫn thấy rằng tôi đang chạy OpenJDK 7 khi tôi chạy như sau:

% java -version
java version "1.7.0_09"
OpenJDK Runtime Environment (IcedTea7 2.3.3) (ArchLinux build 7.u9_2.3.3-1-x86_64)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)

... thậm chí sau khi tôi đã thiết lập JAVA_HOMEvà bổ sung /opt/java6/binđể tôi PATHtrong tôi .zshrctập tin.

Làm cách nào tôi có thể khiến PyCharm (hoặc các ứng dụng khác) sử dụng Oracle Java 6 thay vì OpenJDK?

Cảm ơn, và xin lỗi nếu tôi đăng sai chỗ.

Các thông tin khác có thể hữu ích:

  • Sử dụng Gnome 3 làm DE

Câu trả lời:


4

Nếu tôi muốn sử dụng một phiên bản Java khác, tôi làm hai việc:

  • Đầu tiên, thiết lập JAVA_HOMEphù hợp với cài đặt Java đó và xuất nó.
  • Sau đó, cập nhật đường dẫn của tôi với `PATH = $ {JAVA_HOME} / bin: $ {PATH}.

Do cách PATHtìm kiếm, nếu bạn thêm vào cuối đường dẫn, phiên bản mới sẽ không được sử dụng. Bất cứ điều gì được thêm vào cuối đường dẫn chỉ thêm các lệnh mới, nó không thay thế các lệnh hiện có. Chuẩn bị cho PATHbiến sẽ sử dụng lệnh trong thư mục mới ưu tiên cho lệnh khác.

Các lệnh như javathường liên quan đến một số liên kết tượng trưng trước khi bạn vào chương trình. Việc sử dụng ${JAVA_HOME}/binbỏ qua mọi hướng dẫn và cung cấp một đường dẫn trực tiếp đến các lệnh liên quan đến Java khác nhau.

EDIT: Nếu bạn chỉ muốn chạy một số chương trình nhất định với một phiên bản Java khác, bạn có thể sử dụng trình bao bọc như thế này:

#!/bin/bash
# javawrapper - replace Java for a command.
export JAVA_HOME=$1; shift
PATH=${JAVA_HOME}/bin:$PATH
$*

Sau đó, bạn có thể gọi trình bao bọc bằng một lệnh như.

javawrapper /opt/java6 PyCharm

Bạn cũng có thể thêm bí danh vào ~/.bashrctệp của mình như thế này

alias PyCharm='javawrapper /opt/java6 PyCharm'

Vâng, điều đó giải quyết một nửa vấn đề; Tôi đã nối đến cuối, thay vì bắt đầu $PATH. Nhưng làm thế nào để tôi chỉ chạy phiên bản Java khác nhau cho các ứng dụng nhất định?
NT3RP

Tôi đã cập nhật phản hồi của mình. Tuy nhiên, trong trường hợp như của bạn, tôi hiếm khi cần giữ các chương trình sử dụng phiên bản Java mặc định.
BillThor

6

ArchLinux giữ các JDK khác nhau trong thư mục / usr / lib / jvm, thay đổi JDK mặc định là vấn đề sửa đổi các liên kết tượng trưng ở đó:

# ls -al /usr/lib/jvm  
lrwxrwxrwx   1 root root     14 May 31 19:58 default -> java-8-openjdk
lrwxrwxrwx   1 root root     18 May 31 19:58 default-runtime -> java-8-openjdk/jre
drwxr-xr-x   7 root root   4096 May 27 21:45 java-10-openjdk
drwxr-xr-x   6 root root   4096 May 31 14:35 java-8-openjdk
drwxr-xr-x   7 root root   4096 May 31 19:56 java-9-openjdk

Arch có một kịch bản đặc biệt cho điều đó:

# archlinux-java set java-10-openjdk

và bạn nhận được:

# java -version
openjdk version "10.0.1" 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10)
OpenJDK 64-Bit Server VM (build 10.0.1+10, mixed mode)

bạn cũng có thể sử dụng các tùy chọn 'sửa chữa' và 'trạng thái':

# archlinux-java fix
# archlinux-java status
Available Java environments:
  java-10-openjdk (default)
  java-8-openjdk
  java-9-openjdk

1
Tôi không biết tại sao câu trả lời không được chấp nhận?
Herrgott

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.