Score:1

ไม่พบคำสั่ง 'java' บน WSL แม้ว่าคำสั่ง 'java' จะทำงานใน Powershell

ธง ae

หัวข้อนี้อาจเป็นหัวข้อทั่วไป แต่เมื่อดูออนไลน์ ฉันไม่เห็นอะไรที่เกี่ยวข้องกับกรณีของฉันมากนัก เนื่องจากฉันไม่ได้ใช้งาน Ubuntu ทั่วไป แต่ใช้ WSL (ระบบย่อย Windows สำหรับ Linux)

ปัญหาของฉันคือฉันเปลี่ยนจาก java 8 เป็น java 17 เมื่อเร็ว ๆ นี้ (ฉันต้องการ java 8 สำหรับหลักสูตร) ​​แต่ฉันสังเกตเห็นว่าบนเทอร์มินัล Ubuntu จาวา - เวอร์ชัน ยังคงแสดงให้เห็น openjdk-1.8.(บางอย่าง), ค่อนข้างมากกว่า เจดีเค-17 หรืออะไรทำนองนั้น

ดังนั้นฉันคิดว่าการถอนการติดตั้ง openjdk จะทำเคล็ดลับซึ่งฉันทำด้วย sudo apt-get autoremove openjdk-8-jre. อย่างไรก็ตามตอนนี้กำลังพิมพ์ ชวา ในเทอร์มินัล Ubuntu ใช้งานไม่ได้อีกต่อไปและแสดง: ไม่พบคำสั่ง 'java' แต่สามารถติดตั้งได้ด้วย: .... แต่ฉันกลัวว่าการติดตั้งด้วยหนึ่งในคำสั่งเหล่านี้จะติดตั้งจาวาเวอร์ชันใหม่ แทนที่จะใช้เวอร์ชันที่ติดตั้งไว้แล้ว

ฉันได้ตั้งค่า JAVA_HOME ตัวแปรไปยังไดเร็กทอรีการติดตั้ง java ซึ่งก็คือ mnt/c/ไฟล์โปรแกรม/Java/jdk-17.0.1แต่พื้นที่ใน Program Files ดูเหมือนจะมีปัญหา

ฉันจะแก้ไขปัญหานี้ได้อย่างไร ฉันมักจะชอบใช้ bash terminal มากกว่า Powershell หรือ cmd เพราะฉันรู้จักคำสั่งดีกว่า จึงใช้งานไม่ได้ ชวา หรือ จาวัค ใน bash เป็นปัญหาสำหรับฉัน ขอบคุณ!

Score:4
ธง cn

มีบางสิ่งที่ไม่เหมือนใครเกี่ยวกับ WSL ที่สำคัญที่นี่ ขั้นแรก หากคุณพิมพ์ชื่อของ .exe ที่อยู่ในฝั่ง Windows แต่จาก WSL มันจะใช้งานได้ ตัวอย่างเช่น เปิดพรอมต์ Bash ใน WSL พิมพ์ notepad.exeและกด Enter แผ่นจดบันทึกจะเปิดขึ้น

ก่อนที่คุณจะถอนการติดตั้ง OpenJDK 8 คุณมี openjdk-8-jre ติดตั้งใน WSL และ ติดตั้ง Java 17 ใน Windows เมื่อคุณโทรมา ชวา จาก Windows มันฉลาดพอที่จะเพิ่มไฟล์ .exeและเรียกใช้สำเนา Windows ของ Java แต่เมื่อคุณเปลี่ยนเป็น WSL เมื่อคุณพิมพ์ ชวามันรันเวอร์ชันลินุกซ์ แต่ถ้าคุณพิมพ์ (เป็น WSL) java.exeมันจะเปิดตัว Java เวอร์ชัน Windows จาก WSL ด้วยเหตุผลเดียวกับที่ Notepad ใช้งานได้

ถ้าฉันต้องการพัฒนา Java จาก WSL ฉันจะถอนการติดตั้ง Java เวอร์ชัน Windows อย่างสมบูรณ์ ติดตั้ง Java เวอร์ชันที่ฉันต้องการใน WSL (อัปเดต sudo apt && sudo apt ติดตั้ง openjdk-17-jre) และทำการพัฒนาจากใน WSL ผ่านคอมไพเลอร์ WSL Java

Thibaut B. avatar
ae flag
นั่นดูน่าสนใจ! ฉันลอง `java.exe` และ `javac.exe` ใน bash terminal และมันทำงานได้อย่างถูกต้อง! การทำเช่นนี้ "ไม่ดี" หรือไม่ (เช่น ฉันควรถอนการติดตั้ง windows java และทำ sudo apt install) หรือใช้ได้ดี แต่ใช้งานง่าย/ง่ายน้อยกว่า
cocomac avatar
cn flag
ฉันจะถอนการติดตั้ง Windows java และเพียงแค่ `sudo apt install openjdk-17-jdk` หากคุณกำลังจะพัฒนาใน Linux ควรใช้ Java เวอร์ชัน Linux จะดีกว่า ในทางเทคนิคแล้ว การเรียกคอมไพเลอร์ Windows จาก WSL จะใช้ได้ผลในทางทฤษฎี แต่อาจสร้างปัญหาที่ไม่คาดคิด เช่น การสิ้นสุดบรรทัด ดังนั้นฉันจะถอนการติดตั้ง Windows Java และติดตั้ง JDK ใน Ubuntu เท่านั้น

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา