﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
18809	JOSM.exe uses unexpected java version	blackboxlogic@…	team	"Originally encountered while debugging #18769

Summary:
With some system configurations, josm.exe (with launch4j) uses java 8, josm-tested.jar uses java 13

My experience:
I updated JOSM to latest, installed OpenJDK 13 and changed the `%JAVA_HOME%` environment variable to point to it.

When I opened a console and ran
{{{#!cmd
java -version
}}}
I get `OpenJdk version ""13.0.2"" 2020-01-14`

When I ran
{{{
C:\Program Files (x86)\JOSM\**josm-tested.jar**
}}}
The program is visually improved in many ways (layout, font etc)
In Help -> About -> Info
 **Java Version is 13**
In Help -> About -> Installation Details
 `%JAVA_HOME%` points to OpenJDK 13
 `<java.home>` points to OpenJDK 13

When I ran
{{{
C:\Program Files (x86)\JOSM\**josm.exe**
}}}
The program is visually poor in many ways
In Help -> About -> Info
 **Java Version is 8**
In Help -> About -> Installation Details
 `%JAVA_HOME%` points to OpenJDK 13
 `<java.home>` points to **java 8**

Situation which created the problem:
* I had installed java 8 JRE previously.
* I had downloaded the OpenJDK 13 JDK, but josm.exe is configured to prefer a JRE
  * ​https://github.com/openstreetmap/josm/blob/23f812d89309fe7e1660efa1b2a21433305b5cfb/windows/launch4j.xml#L18 
* I had correctly set the `JAVA_HOME` environment variable, but launch4j ignores `JAVA_HOME` and only looks at registry keys. This might change with the next release of launch4j.
  * ​https://sourceforge.net/p/launch4j/feature-requests/127/ 
* While installing OpenJDK, I did not write java keys to registry 

To work around the problem:
* Download the OpenJDK 13 JRE (NOT JDK)
* Select the installer option to write registry keys 

I suggest two changes to launch4j.xml to avoid this problem:
* `<jdkPreference>preferJre</jdkPreference>`
  * should be: `<jdkPreference>preferJdk</jdkPreference>`
  * Will take a JDK over a JRE 
* `<path></path>`
  * should be: `<path>%JAVA_HOME%</path>`
  * Will negate the need to have registry keys, which are not always there for OpenJDK

I am not well versed in java, launch4j, registry keys, or the `JAVA_HOME` environment variable. I have not tested my suggested changes and I don't know if it might break it for other people. Also, just waiting for the next release of launch4j might fix this."	defect	closed	normal		Installer Windows		wontfix		stoecker
