Java OpenJDK, nauka c++, problem z uruchamianiem

0

Cześć
Mam taki problem że po długiej zabawie w javie stwierdziłem iż chciałbym coś po popróbować w c++, więc pobrałem visual studio c++. Kiedy zainstalowałem wszystko co wymagało środowisko w tym : OpenJDK pojawił się problem wszystkie pliki .jar zostały domyślnie przypisane jako uruchamiane prze OpenJDK, zmieniłem na Oracle i wszystko wróciło do wcześniejszego stanu. Ale problem pojawia się kiedy chce uruchomić plik .jar jako administrator, a robię to w taki sposób że tworzę skrót .bat do pliku .jar, następnie uruchamiał .bat jako administrator wtedy w konsoli wyświetla się taki błąd. Nie potrawie tego naprawić, dodam jeszcze że jak usunę OpenJDK to wszystko normalnie. Mam podejrzenia że pewnie chodzi o "edytor rejstru" i zmiany jakiejś wartości.
Bez tytułu.png

2

nie można odpalać kodu javowego starszą wersją javy niż ta, którą wykorzystano do kompilacji

https://en.wikipedia.org/wiki/Java_class_file

major version number of the class file format being used.
Java SE 17 = 61 (0x3D hex),
Java SE 16 = 60 (0x3C hex),
Java SE 15 = 59 (0x3B hex),
Java SE 14 = 58 (0x3A hex),
Java SE 13 = 57 (0x39 hex),
Java SE 12 = 56 (0x38 hex),
Java SE 11 = 55 (0x37 hex),
Java SE 10 = 54 (0x36 hex),
Java SE 9 = 53 (0x35 hex),
Java SE 8 = 52 (0x34 hex),
Java SE 7 = 51 (0x33 hex),
Java SE 6.0 = 50 (0x32 hex),
Java SE 5.0 = 49 (0x31 hex),
JDK 1.4 = 48 (0x30 hex),
JDK 1.3 = 47 (0x2F hex),
JDK 1.2 = 46 (0x2E hex),
JDK 1.1 = 45 (0x2D hex).

jak widać, skompilowałeś za pomocą javy 15 (class file version 59.0), a odpalasz za pomocą javy 11 (class file version 55.0)

żeby rozwiązać problem możesz np. przekompilować kod od nowa pod javą 11 (tzn. zbudować tego .jarka od nowa pod javą 11)

0

@Wibowit: Czemu problem pojawia się tylko kiedy mam zainstalowane OpenJDK ?

1

może dlatego, że polegasz na zawartości zmiennej środowiskowej PATH, a ta jest modyfikowana przez instalator? żeby sprawdzić, która wersja javy jest wybierana na podstawie zmiennej środowiskowej PATH odpal po prostu polecenie

java -version

jeśli dodatkowo chcesz zobaczyć wersję kompilatora javy (tzn z pliku .java do pliku .class) wybieraną na podstawie zmiennej środowiskowej PATH to odpal polecenie

javac -version

samą zmienną środowiskową PATH możesz podejrzeć poleceniem

echo %PATH%

ta zmienna zawiera wiele folderów oddzielonych znakiem ; i próbowane są one po kolei, więc jak masz dwie javki w PATH to wybrana zostanie pierwsza

0

@Wibowit:
C:\Users\rafal>java -version

openjdk version "11.0.12" 2021-07-20
OpenJDK Runtime Environment Microsoft-25199 (build 11.0.12+7)
OpenJDK 64-Bit Server VM Microsoft-25199 (build 11.0.12+7, mixed mode)

1

odpal jeszcze poniższe polecenia

where java.exe
where javac.exe
0

@plugan300: odpowiadaj w postach

C:\Users\rafal>where java.exe
C:\Program Files\Microsoft\jdk-11.0.12.7-hotspot\bin\java.exe
C:\Program Files\Common Files\Oracle\Java\javapath\java.exe
C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe

C:\Users\rafal>where javac.exe
C:\Program Files\Microsoft\jdk-11.0.12.7-hotspot\bin\javac.exe
C:\Program Files\Common Files\Oracle\Java\javapath\javac.exe

C:\Users\rafal> — plugan300 1 minuta temu

widać, że masz dwie javy - oracle java i microsoft openjdk.

najwidoczniej oracle java jest nowsza, więc (jak już powiedziałem) jeśli skompilowałeś nowszą javą to nie odpalisz starszą. cudów nie ma. zaklęciami też tego nie rozwiążesz. po prostu odpalaj programy na wersji javy nie starszej niż ta służąca do kompilacji (albo vice versa - kompiluj programy wersją javy nie nowszą niż ta, którą chcesz potem je odpalać).

jak chcesz sprawdzić bezpośrednio wylistowane wersje javy to odpal polecenia:

C:\Users\rafal>"C:\Program Files\Microsoft\jdk-11.0.12.7-hotspot\bin\java.exe" -version
C:\Users\rafal>"C:\Program Files\Common Files\Oracle\Java\javapath\java.exe" -version
C:\Users\rafal>"C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe" -version

możesz też odpalać programy bezpośrednio z konkretnej wersji javy, a nie przypadkowej javy znalezionej w zmiennej środowiskowej PATH. wystarczy podać pełną ścieżkę do javy, np:

C:\Users\rafal>"C:\Program Files\Common Files\Oracle\Java\javapath\java.exe" -jar C:\ścieżka\do\mojego\jarosława.jar

możesz też zrobić własną zmienną środowiskową, żeby sobie ułatwić uruchamianie w ten sposób

1 użytkowników online, w tym zalogowanych: 0, gości: 1