Điểm:1

Không tìm thấy lệnh 'java' trên WSL, mặc dù lệnh 'java' hoạt động trong Powershell

lá cờ ae

Chủ đề này có lẽ là một chủ đề phổ biến, nhưng khi tìm kiếm trực tuyến, tôi không thấy nhiều điều liên quan đến trường hợp của mình, vì tôi không chạy Ubuntu bình thường mà là WSL (Hệ thống con Windows cho Linux).

Vì vậy, vấn đề của tôi là gần đây tôi đã chuyển từ java 8 sang java 17 (tôi yêu cầu java 8 cho một khóa học), nhưng tôi nhận thấy rằng trên các thiết bị đầu cuối ubuntu, phiên bản java vẫn cho thấy openjdk-1.8.(cái gì đó), còn hơn là jdk-17 hay đại loại thế.

Vì vậy, tôi nghĩ rằng việc gỡ cài đặt openjdk sẽ thực hiện thủ thuật mà tôi đã làm với Sudo apt-get autoremove openjdk-8-jre. Tuy nhiên, bây giờ gõ java trong một thiết bị đầu cuối Ubuntu hoàn toàn không hoạt động nữa và hiển thị: Không tìm thấy lệnh 'java' nhưng có thể cài đặt bằng: .... Nhưng tôi sợ rằng việc cài đặt nó bằng một trong các lệnh này sẽ cài đặt một phiên bản java mới, thay vì sử dụng phiên bản đã được cài đặt.

tôi đã thiết lập Java_HOME biến vào thư mục cài đặt java, đó là mnt/c/Tệp chương trình/Java/jdk-17.0.1, nhưng không gian trong Tệp chương trình dường như có vấn đề.

Làm thế nào tôi có thể sửa lỗi này? Tôi thường thích sử dụng thiết bị đầu cuối bash hơn Powershell hoặc cmd vì tôi biết các lệnh tốt hơn, vì vậy không thể sử dụng java hoặc javac trong bash là một vấn đề đối với tôi. Cảm ơn!

Điểm:4
lá cờ cn

Có một vài... điều độc đáo về WSL quan trọng ở đây. Đầu tiên, nếu bạn gõ tên của một .exe đó là ở phía Windows, nhưng từ WSL, nó sẽ hoạt động. Ví dụ: mở dấu nhắc Bash trong WSL, nhập notepad.exe, và nhấn enter. Sổ tay sẽ mở ra.

Trước khi gỡ cài đặt OpenJDK 8, bạn đã có openjdk-8-jre được cài đặt trong WSL Java 17 được cài đặt trong Windows. Khi bạn gọi java từ Windows, nó đủ thông minh để thêm .exe, và chạy bản sao Windows của Java. Tuy nhiên, khi bạn chuyển sang WSL, khi bạn gõ java, nó chạy phiên bản Linux. Nhưng nếu bạn gõ (vào WSL) java.exe, nó sẽ khởi chạy phiên bản Windows của Java từ WSL vì lý do tương tự mà Notepad đã hoạt động.

Nếu tôi muốn phát triển Java từ WSL, tôi sẽ gỡ cài đặt hoàn toàn phiên bản Java của Windows, cài đặt phiên bản Java mong muốn của tôi trong WSL (cập nhật sudo apt && sudo apt cài đặt openjdk-17-jre) và chỉ thực hiện phát triển từ trong WSL thông qua trình biên dịch WSL Java.

Thibaut B. avatar
lá cờ ae
Nó thật thú vị! Tôi đã thử `java.exe` và `javac.exe` trong thiết bị đầu cuối bash và nó hoạt động bình thường! Làm điều này có "xấu" không (tức là tôi có nên gỡ cài đặt windows java và cài đặt sudo apt không), hay nó ổn nhưng kém trực quan/dễ dàng hơn?
cocomac avatar
lá cờ cn
Tôi sẽ gỡ cài đặt Windows java và chỉ `sudo apt install openjdk-17-jdk`. Nếu bạn định phát triển trên Linux, tốt hơn hết là sử dụng phiên bản Java của Linux. Về mặt kỹ thuật, việc gọi trình biên dịch Windows từ WSL sẽ hoạt động trên lý thuyết, nhưng nó có thể tạo ra các sự cố không mong muốn như kết thúc dòng, vì vậy tôi chỉ cần gỡ cài đặt Windows Java và chỉ cài đặt JDK trong Ubuntu.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.