Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What version of JRE I need to compile with JDK 13.0.2?

Tags:

java

jvm

javac

I'm figuring out what I have to do in order to get print a "Hello World" into my PC with Java.

The main thing is when I'm compiling the code, and when I want to run it this appears:

IMAGE: Click to see the image

ACTUAL CODE ERROR:

`C:\Users\Pedro\Documents\java>java Myfirst
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: Myfirst has been compiled by a more recent version of the Java Runtime (class file version 57.0), this version of the Java Runtime only recognizes class file versions up to 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

C:\Users\Pedro\Documents\java>`

So, I see that the problem is the JRE (Java Runtime Enviroment).

My Java Version:

java version "1.8.0_251"
Java(TM) SE Runtime Environment (build 1.8.0_251-b08)
Java HotSpot(TM) Client VM (build 25.251-b08, mixed mode, sharing)

My Javac version:

javac 13.0.2

In order to fix this, I would like to know:

  1. What version of JRE do I need to compile my program successfully?
  2. If item N°1 is not the problem, How can I solve this?
like image 821
Pedro Uzcátegui Avatar asked Oct 16 '22 03:10

Pedro Uzcátegui


2 Answers

Starting with Java 11, JRE does not exist anymore. You just need to install JDK and set the path of the bin folder correctly.

All you need to do is to set the path of the bin folder of JDK 13.0.2 in the environment variable, PATH and move this entry to the top. I also suggest you do it for both, User variables as well as System variables.

After this, you need to open a new cmd window and then check the version again. Now, you will see that java -version returns JDK 13.0.2.

Now, compile the program and run it -OR- simply do java Myfirst.java as starting from Java 11, you can run a java file (provided the top most class in the file has main) without compiling.

like image 138
Arvind Kumar Avinash Avatar answered Nov 15 '22 07:11

Arvind Kumar Avinash


Why do you have different versions of JDK and JRE? That looks strange.

I would do this:
1) Uninstall all JDKs and JREs.
2) Install JDK 8 and during installation tell
the installer not to install a standalone JRE,
browser plugin or anything like that. Just JDK.

That's my general recommendation to stay out of troubles.
This way you will have just a JDK which provides also a JRE
(then the JRE java will be of the same version as the compiler javac).

On your question:

A) Either run it with the same JRE version (13.0.2) as the JDK version you complied it with.

B) Or when compiling specify java -source 1.8 MySourceFile.java
Then you will be able to run it with JRE 1.8

But before playing with A) and B) just follow the general recommendation first.

like image 44
peter.petrov Avatar answered Nov 15 '22 08:11

peter.petrov