วิธีใช้การติดตั้ง windows ของ java จาก BashOnWindows10


10

ฉันไม่สามารถเรียกใช้ java.exe จาก Windows รุ่น BashOnWindows10 ได้ มีอยู่ใน PATH แต่การเรียกใช้ล้มเหลวอย่างเงียบ ๆ เป้าหมายของฉันคือหลีกเลี่ยงการติดตั้ง JDK / JRE อีกครั้งใน WSL ขณะที่ฉันกำลังอัปเดตผู้สร้างฉันคาดหวังว่าจะสามารถเรียกใช้แอปพลิเคชัน windows ได้ ความคิดใด ๆ ว่าทำไมสิ่งนี้ถึงเกิดขึ้น? อย่างไรก็ตามฉันสามารถเปิดการติดตั้ง Python บน Windows ได้สำเร็จ

ทุบตี

username@PC:~$ which java.exe
/mnt/c/ProgramData/Oracle/Java/javapath/java.exe

username@PC:~$ java.exe
username@PC:~$         <<<nothing happens

username@PC:~$ which python.exe
/mnt/c/Python34/python.exe

username@PC:~$ python.exe
Unable to translate current working directory. Using C:\WINDOWS\system32
Python 3.4.0 (v3.4.0:04f714765c13, Mar 16 2014, 19:25:23) [MSC v.1600 64 bit 
(AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

cmd.exe

C:\Users\username>java -version
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)

ไม่เกี่ยวข้องกับ Java มันเป็นปัญหากับไบนารีของ Windows ทั้งหมด ดูข้อผิดพลาดนี้สำหรับการสนทนาและแก้ไขบางอย่าง: github.com/Microsoft/BashOnWindows/issues/333
eckes

คำตอบ:


8

นี่คือวิธีที่ฉันเพิ่งสร้าง Java "เพิ่งทำงาน" สำหรับการติดตั้ง WSL ของฉัน

ln -s /mnt/c/Program\ Files\ \(x86\)/Java/jre1.8.0_151/bin/java.exe /bin/java

สิ่งนี้จะสร้างลิงก์สัญลักษณ์ใน/binโฟลเดอร์ของคุณไปยังไบนารี Windows Java ของคุณ เมื่อใดก็ตามที่ WSL พยายามเรียกใช้ Java ตอนนี้ก็จะถูกเปลี่ยนเส้นทางไปเป็นเวอร์ชั่น Windows คุณอาจจะต้องปรับเปลี่ยนเส้นทางเมื่อ Java เวอร์ชันเปลี่ยนไปในอนาคต


สุดยอด ! ก่อนหน้านี้: Java รุ่นที่ให้Command 'Java' not foundหลังจาก: Java - รุ่นให้java version "1.8.0_151"ฉันหวังว่าฉันจะได้คำตอบนี้เช่น 10 คะแนนแทน 1!
boardtc

1
เพียงแค่หัวขึ้นว่านี่จะ "สับสน" และเส้นทางที่ใช้ในโปรแกรม Java ของคุณหรือเป็นคุณสมบัติ / อินพุต เช่น "/tmp/somefile.txt" จะเป็นเช่น "c: /tmp/somefile.txt" เมื่อ Windows Java ของคุณพยายามเรียกใช้งานและส่งผลให้ไม่พบไฟล์!
Anders

2

ปัญหานี้เกิดขึ้นเนื่องจาก WSL ไม่สนับสนุนทางลัดหน้าต่างในการอัปเดตของผู้สร้าง /mnt/c/ProgramData/Oracle/Java/javapath/java.exeจริง ๆ แล้วเป็นทางลัดไปยังไดเรกทอรีการติดตั้งจริงซึ่งC:\Program Files\Java\jre1.8.0_31\binในกรณีของฉัน การเรียกใช้ java จากพา ธ การติดตั้งจริงดูเหมือนว่าจะทำงานได้ตามที่คาดไว้

ปัญหานี้ได้รับการแก้ไขในบิลด์ 16193


0

หากคุณต้องการรัน java.exe ของคุณภายในระบบย่อย linux คุณสามารถทำตามคำตอบนี้: https://stackoverflow.com/a/54151117/2751561

หากวัดที่คุณต้องการวิธีอื่น ๆ คุณสามารถเรียก java bin บน cmd ดังนี้:

wsl java -version
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.