Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Eseguire da prompt un programma compilato con Java 11

    Salve,
    ho installato Java 11 sul mio pc, dove coesiste Java 8.
    Con pochi settaggi sono riuscito a far girare Java 11 sia su IntelliJ che su Visual Studio Code.
    Non riesco invece a eseguire programmi da prompt, cioè riesco a compilare ma in fase di lancio, ricevo
    Error: A JNI error has occurred, please check your installation and try again
    Exception in thread "main" java.lang.UnsupportedClassVersionError: PlayoffTest has been compiled by a more recent version of the Java Runtime (class file version 55.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(Unknow n 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(Unkno wn Source)
    Sto cercando un JRE ma mentre i due IDE sopra citati "fanno tutto" da JDK, a quanto pare il prompt appoggiandosi alle variabili d'ambiente del sistema ha bisogno di qualcos'altro. Eppure Visual Studio Code lavora su Java tramite le medesime variabili d'ambiente che il prompt non accetta. Come risolvo?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Gas75 Visualizza il messaggio
    Salve,
    ho installato Java 11 sul mio pc, dove coesiste Java 8.
    Su questo non ci sono problemi. Sul PC da cui sto scrivendo ho ben 11 JDK Oracle (praticamente tutti dal 8 al 18 attuale).
    L'unica abilità sta nel saper "controllare" e impostare appropriatamente le variabili di ambiente PATH e JAVA_HOME (la JAVA_HOME serve principalmente a tools esterni, es. Maven, non al JDK in sé).
    E poi sugli IDE tipo Eclipse/IntelliJ IDEA basta "puntare" quel/quei JDK di interesse. Tutto lì.

    Tra l'altro Oracle dal JDK 11 mette a disposizione anche gli zip (su Windows) invece che solo gli installer. Quindi molto più semplice e senza alcun bisogno di "installare" in maniera più invasiva.

    Quote Originariamente inviata da Gas75 Visualizza il messaggio
    Salve,
    Non riesco invece a eseguire programmi da prompt, cioè riesco a compilare ma in fase di lancio, ricevo

    Exception in thread "main" java.lang.UnsupportedClassVersionError: PlayoffTest has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
    55.0 indica Java 11 mentre 52.0 indica Java 8. Vuol dire che la tua applicazione è stata compilata per Java 11 ma stai cercando di avviarla con un Java 8. Ovviamente non va.

    Ripeto: l'unica questione è impostare la PATH (e JAVA_HOME per altri tool).
    Ultima modifica di andbin; 11-07-2022 a 20:27
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    L'unica abilità sta nel saper "controllare" e impostare appropriatamente le variabili di ambiente PATH e JAVA_HOME (la JAVA_HOME serve principalmente a tools esterni, es. Maven, non al JDK in sé).
    Perfettamente d'accordo, infatti per anni configuravo Windows per usare Java da prompt avviato via Notepad++.
    La situazione attuale è questa:
    JAVA_HOME: C:\Program Files\Java\jdk-11.0.15.1
    JAVA_JDK: C:\Program Files\Java\jdk-11.0.15.1
    Nel Path ho questi riferimenti a Java
    C:\Program Files (x86)\Common Files\Oracle\Java\javapath
    C:\ProgramData\Oracle\Java\javapath
    C:\Program Files\Java\jdk-11.0.15.1\bin
    C:\Program Files\Java\jdk1.8.0_311\bin (preesistente all'installazione di Java 11).

    La documentazione dice che JDK 11 ingloba già JRE, ma come farlo capire a Windows?
    Ho la cartella C:\Program Files\Java\jre1.8.0_311 , e prima vi puntavo uno dei Path, che ora ho sostituito con C:\Program Files\Java\jdk-11.0.15.1\bin poiché se è vero che JDK 11 ingloba JRE...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Gas75 Visualizza il messaggio
    JAVA_HOME: C:\Program Files\Java\jdk-11.0.15.1
    JAVA_JDK: C:\Program Files\Java\jdk-11.0.15.1
    JAVA_JDK non è standard. Se serve a te per "altro" ok.

    Quote Originariamente inviata da Gas75 Visualizza il messaggio
    Nel Path ho questi riferimenti a Java
    C:\Program Files (x86)\Common Files\Oracle\Java\javapath
    C:\ProgramData\Oracle\Java\javapath
    C:\Program Files\Java\jdk-11.0.15.1\bin
    C:\Program Files\Java\jdk1.8.0_311\bin (preesistente all'installazione di Java 11).
    Temo che il problema sia quei primi due path che presumo siano dei runtime Java installati da un qualche prodotto Oracle (un DB o altro tool).
    Sposta il path del jdk 11 in modo che sia il primo della lista.

    Quote Originariamente inviata da Gas75 Visualizza il messaggio
    La documentazione dice che JDK 11 ingloba già JRE, ma come farlo capire a Windows?
    Il JDK è nient'altro che un JRE + tools di sviluppo (javac, javadoc, ecc..)
    Basta mettere in PATH il percorso alla "bin" di un JDK.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Quote Originariamente inviata da andbin Visualizza il messaggio
    JAVA_JDK non è standard. Se serve a te per "altro" ok.
    Non saprei, sono impostazioni che trovai da applicare quando installai Java la prima volta.
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Temo che il problema sia quei primi due path che presumo siano dei runtime Java installati da un qualche prodotto Oracle (un DB o altro tool).
    Quei due path non credo siano direttamente opera mia: ricordo di aver inserito JAVA_HOME e JAVA_JDK anni fa ma quelle altre due voci saranno finite lì in seguito a varie installazioni/disinstallazioni, dato che in passato ho provato svariati IDE.
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Sposta il path del jdk 11 in modo che sia il primo della lista.
    Effettivamente mettendo in cima il bin di JDK 11 funziona tutto.
    Grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.