0
votes

My goal is to be able to parse the output of the following windows command line command (and in powershell too) :

java -XshowSettings:properties -version

I am trying to specifically get the line that says "java.home = Path\to\java\home"

So far I have tried commands like

java -XshowSettings:properties -version | findstr /C:java.home

or redirecting to a file and parsing from there but the file is empty

 java -XshowSettings:properties -version > tmp.txt

I also tried the following powershell commands

java -XshowSettings:properties -version | Select-String -Pattern 'java.home' -SimpleMatch
java -XshowSettings:properties -version | Out-String -Stream | Select-String -Pattern 'home' -SimpleMatch

I even tried making a function for the command and setting a variable to the command output which I would then try to parse, but the variable was also empty

function javahome {
   java -XshowSettings:properties -version
}
$Jhome = javahome

$Jhome is empty...

I think that the output of the java command is not outputting through the same pipes that the command lines are capturing even though it is being output on the screen. I'm not sure how to find this separate output and begin parsing it, but that is what I need to do. I need to be able to parse out the java.home path as it is needed for another process. I also will need other lines too, so I am not looking to pull the %JAVA_HOME% environment variable.

1

1 Answers

0
votes

This command writes to standard error, not to standard output.

For command line, try
java -XshowSettings:properties -version 2>&1 | findstr /C:java.home
The 2>&1 redirects standard error to standard output.

Or java -XshowSettings:properties -version 2> tmp.txt
redirecting standard error to file.