Jump to content
  • 0

TechnicLauncher.exe not recognizing Java




I've downloaded the latest TechnicLauncher.exe. I've got Java 1.8 installed:

java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

Nonetheless, when I try to run the TechnicLauncher I'm presented with the following message:

This application requires a Java Runtime Environment 1.8.0 - 1.8.0_999

Clearly, 0_202 is somewhat inbetween 0 and 999.

Worth mentioning - I've installed Java manually, as I often need to switch between version 8 and 19. All I need to do is to set %JAVA_HOME% system variable.
Now what does TechnicLauncher really checks to verify the Java version, as simply typing java -version in the command prompt returns the very valid version per TechnicLauncher's requirements?

I was trying to find any code on the GitHub, but I'm assuming it is not publicly available, as the only thing I could find is the documentation and language packs. I'm eager to branch the code and make the appropriate adjustments myself, as I cannot believe checking anything other than Java version residing in the %PATH% variable is the right way to validate the "installed Java version".


By looking at the .exe file bytes, I think I know the answer: it's checking for the registry entries, isn't it? Why? Why not parse the java -version output? So much more reliable... or at least add that step if the registry entries weren't found...

If there is no way to let me see the repository so I can create a pull request, can anyone tell me what registry keys I need to set in order for the launcher to figure out the Java version so it can run?

Edited by Nyuno
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

===== UPDATE =====

Did some more fiddling with the file. The below registry entries are required to properly run the launcher:

Windows Registry Editor Version 5.00


[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\JavaSoft\Java Runtime Environment]

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\JavaSoft\Java Runtime Environment\1.8]
"JavaHome"="C:\\Program Files\\Java\\jdk-8.0.202\\jre"
"RuntimeLib"="C:\\Program Files\\Java\\jdk-8.0.202\\jre\\bin\\server\\jvm.dll"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\JavaSoft\Java Runtime Environment\1.8.0_202]
"JavaHome"="C:\\Program Files\\Java\\jdk-8.0.202\\jre"
"RuntimeLib"="C:\\Program Files\\Java\\jdk-8.0.202\\jre\\bin\\server\\jvm.dll"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\JavaSoft\Java Runtime Environment\1.8.0_202\MSI]
"INSTALLDIR"="C:\\Program Files\\Java\\jdk-8.0.202\\jre\\"

Take this, save as a .reg file, change the paths to the jre you have, run to add entries (assuming you are using a 64-bit version of Java) and that is what the launcher needs to 'validate' the installed Java version.
If you have a different Java version installed and are wondering what the PRODUCTVERSION should be - look closely at the FullVersion value and you should figure out the pattern.

I still do not understand why would it search for the registry keys instead of parsing the java -version output... so my original point stands and perhaps the devs should take adding that option into consideration ;)


Edited by Nyuno
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...