Làm cách nào để sử dụng cài đặt windows của java từ BashOnWindows10?


10

Tôi không thể chạy phiên bản windows của java.exe từ BashOnWindows10. Nó hiện diện trong PATH, nhưng lời cầu khẩn thất bại trong âm thầm. Mục tiêu của tôi là tránh phải cài đặt lại JDK / JRE trong WSL. Khi tôi đang chạy bản cập nhật của Người tạo, tôi đã hy vọng có thể gọi bất kỳ ứng dụng Windows nào. Có ý kiến ​​giải thích tại sao điều này lại xảy ra không? Tuy nhiên tôi có thể khởi chạy cài đặt windows của Python thành công.

bash

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)

Nó không liên quan đến Java, nó là một vấn đề với tất cả các nhị phân Windows. Xem lỗi này để thảo luận và một số công việc xung quanh: github.com/Microsoft/BashOnWindows/issues/333
eckes

Câu trả lời:


8

Đây là cách tôi vừa tạo Java "vừa hoạt động" cho bản cài đặt WSL của mình.

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

Điều này làm là tạo một liên kết tượng trưng trong /binthư mục của bạn tới tệp nhị phân Windows Java của bạn. Bất cứ khi nào WSL cố gắng gọi Java bây giờ, nó sẽ được chuyển hướng sang phiên bản Windows. Bạn có thể sẽ cần điều chỉnh đường dẫn khi các phiên bản Java thay đổi trong tương lai.


Tuyệt vời ! Trước: Chuyển đổi Java cung cấp Command 'Java' not foundSau: Phiên bản Java cho java version "1.8.0_151"tôi ước tôi có thể trả lời câu trả lời này như 10 điểm thay vì 1!
boardtc

1
Chỉ cần lưu ý rằng điều này sẽ "gây nhầm lẫn" và các đường dẫn được sử dụng trong chương trình Java của bạn hoặc làm thuộc tính / đầu vào. Ví dụ: "/tmp/somefile.txt" sẽ là ví dụ "c: /tmp/somefile.txt" khi Windows Java của bạn cố gắng thực thi nó và kết quả là không tìm thấy tệp!
Anders

2

Vấn đề này là do WSL không hỗ trợ các phím tắt windows trong bản cập nhật của Creator. /mnt/c/ProgramData/Oracle/Java/javapath/java.exethực sự là một lối tắt đến thư mục cài đặt thực tế C:\Program Files\Java\jre1.8.0_31\bintrong trường hợp của tôi. Gọi java từ đường dẫn cài đặt thực tế dường như hoạt động như mong đợi.

Vấn đề này được giải quyết trong bản dựng 16193


0

Nếu bạn muốn thực thi java.exe của mình bên trong hệ thống con linux, bạn có thể làm theo câu trả lời sau: https://stackoverflow.com/a/54151117/2751561

Nếu wat bạn muốn theo cách khác, bạn có thể gọi java java trên cmd như thế này:

wsl java -version
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.