Come utilizzare l'installazione di Windows di Java da BashOnWindows10?


10

Non riesco a eseguire la versione Windows di java.exe da BashOnWindows10. È presente nel PERCORSO, ma l'invocazione fallisce silenziosamente. Il mio obiettivo è evitare di dover installare nuovamente JDK / JRE in WSL. Mentre eseguo l'aggiornamento del Creatore, mi aspettavo di poter invocare qualsiasi applicazione Windows. Qualche idea sul perché questo stia accadendo? Sono comunque in grado di avviare correttamente l'installazione di Windows di Python.

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)

Non è correlato a Java, è un problema con tutti i file binari di Windows. Vedi questo bug per la discussione e alcune soluzioni: github.com/Microsoft/BashOnWindows/issues/333
eckes

Risposte:


8

Ecco come ho appena reso Java "funziona" per la mia installazione WSL.

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

Ciò che fa è creare un collegamento simbolico nella /bincartella al file binario Java di Windows. Ogni volta che WSL tenta di richiamare Java ora, viene reindirizzato alla versione di Windows. Probabilmente dovrai modificare il percorso man mano che le versioni Java cambieranno in futuro.


Superbo ! Prima: Java -version dà Command 'Java' not foundDopo: Java - versione dà java version "1.8.0_151"Vorrei poter ottenere questa risposta come 10 punti invece di 1!
Boardtc

1
Solo un avvertimento che questo "confonderà" e percorsi utilizzati nel tuo programma Java o come proprietà / input. Ad esempio "/tmp/somefile.txt" sarà ad esempio "c: /tmp/somefile.txt" quando Windows Java tenta di eseguirlo e risulta in un file non trovato!
Anders,

2

Questo problema è dovuto al fatto che WSL non supporta le scorciatoie di Windows nell'aggiornamento del Creatore. /mnt/c/ProgramData/Oracle/Java/javapath/java.exeè in realtà un collegamento alla directory di installazione effettiva che è C:\Program Files\Java\jre1.8.0_31\binnel mio caso. Richiamare Java dal percorso di installazione effettivo sembra funzionare come previsto.

Questo problema è stato risolto nella build 16193


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.