Hvordan indstiller jeg standard Java-installation/runtime (Windows)?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er i den situation, hvor jeg har installeret JDK, men jeg kan ikke køre applets i browsere (jeg har muligvis ikke installeret JRE).


Når jeg installerer JRE, klipper den dog min JDK som standard runtime. Dette bryder stort set alt (Eclipse, Ant) - da de kræver en server JVM.


Der er ingen JAVA\_HOME miljøvariabel i disse dage - det synes bare at bruge nogle registreringsdatabaser magi (indstilling af systembanen er heller ikke til nogen nytte). Tidligere har jeg lige afinstalleret JRE efter at jeg har brugt det til Gendan JDK. Denne gang vil jeg rette det ordentligt.


Dette manifesterer sig også i jreautoupdateren - engang havde jeg en arbejdsopsætning med JDK og JRE, men det opdaterede og bustede alt.

Bedste reference


Dette er lidt af en smerte på Windows. Her er hvad jeg gør.


Installer nyeste Sun JDK, f.eks. 6u11 , i sti som c:installjdksun6u11, så lad installationsprogrammet installere det offentlige JRE på standardstedet (c:program fileslah). Dette vil opsætte din standard JRE for de fleste ting.


Installer ældre JDK'er efter behov, som 5u18 i c:installjdksun5u18, men installer ikke de offentlige JRE'er.


Når jeg er i udvikling, har jeg en lille batch-fil, som jeg bruger til at konfigurere en kommandoprompt for hver JDK-version. Grundlæggende skal du blot indstille JAVA\_HOME=c:jdksunJDK\_DESIRED og derefter indstille PATH=\%JAVA\_HOME\%in;\%PATH\%. Dette vil sætte den ønskede JDK først i stien, og eventuelle sekundære værktøjer som Ant eller Maven kan bruge variablen JAVA\_HOME.


Stien er vigtig, fordi de fleste offentlige JRE-installationer sætter en koblet eksekverbar på c:WINDOWSSystem32java.exe, som normalt overstyrer de fleste andre indstillinger.

Andre referencer 1


Jeg har patchet opførslen af ​​min eclipse startup genvej i egenskabsdialogen


fra


"E:Program Fileseclipseeclipse.exe"


til


"E:Program Fileseclipseeclipse.exe" -vm "E:Program FilesJavajdk1.6.0\_30in"


som beskrevet i Eclipse-dokumentationen [40]


Det er kun en patch, da det afhænger af genvejen for at ordne ting ...


Alternativet er at indstille parameteren permanent i eklipse initialiseringsfilen.

Andre referencer 2


Jeg havde netop det problem (Java 1.8 vs Java 9 på Windows 7), og mine resultater er:


kort version


Standard synes at være (på grund af Path entry)


c:ProgramDataOracleJavajavapathjava -version


vælg den ønskede version (test, brug fanebladet i cmd, ikke sikker på hvad disse tal repræsenterer), jeg havde 2 muligheder, se længere version for detaljer


c:ProgramDataOracleJavajavapath\_target\_[tab]


fjern kryds/link og link til din version (den ender med 181743567 i mit tilfælde til Java 8)


rmdir javapath
mklink /D javapath javapath\_target\_181743567


længere version:


Geninstaller Java 1.8, efter at Java 9 ikke fungerede. Installationssekvensen var jdk1.8.0\_74, jdk-9.0.4 og forsøgte at gøre Java 8 standard med jdk1.8.0\_162 ...


Efter installationen af ​​jdk1.8.0\_162 har jeg stadig


java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)


Det jeg ser i stien er


Path=...;C:ProgramDataOracleJavajavapath;...


Så jeg kontrollerede hvad der er det, og jeg fandt det er et kryds (link)


c:ProgramDataOracleJava>dir
 Volume in drive C is OSDisk
 Volume Serial Number is DA2F-C2CC

 Directory of c:ProgramDataOracleJava

2018-02-07  17:06    <DIR>          .
2018-02-07  17:06    <DIR>          ..
2018-02-08  17:08    <DIR>          .oracle\_jre\_usage
2017-08-22  11:04    <DIR>          installcache
2018-02-08  17:08    <DIR>          installcache\_x64
2018-02-07  17:06    <JUNCTION>     javapath [C:ProgramDataOracleJavajavapath\_target\_185258831]
2018-02-07  17:06    <DIR>          javapath\_target\_181743567
2018-02-07  17:06    <DIR>          javapath\_target\_185258831


Disse hash ringe ikke en klokke, men da jeg kontrollerede


c:ProgramDataOracleJavajavapath\_target\_181743567>.java -version
java version "1.8.0\_162"
Java(TM) SE Runtime Environment (build 1.8.0\_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)

c:ProgramDataOracleJavajavapath\_target\_185258831>.java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)


så for at gøre Java 8 standard igen, måtte jeg slette linket som beskrevet her [41]


rmdir javapath


og genskab med Java, jeg ønskede


mklink /D javapath javapath\_target\_181743567


testet:


c:ProgramDataOracleJava>java -version
java version "1.8.0\_162"
Java(TM) SE Runtime Environment (build 1.8.0\_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)


** opdatering (Java 10) **


Med Java 10 er det ens, kun javapath er i c: \ Program Files (x86) \ Common Files \ Oracle \ Java \ hvilket er mærkeligt, da jeg installerede 64-bit IMHO


.java -version
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)

Andre referencer 3


Jeg installerer simpelthen alle versioner af JDK, jeg har brug for, og det seneste installeret bliver standard, så jeg geninstallerer det, jeg vil standardisere, hvis det er nødvendigt.

Andre referencer 4


Efter mange forsøg fandt jeg krydsetilgangen mere praktisk. Dette ligner meget på, hvordan dette problem er løst i Linux.


Dybest set består det af at have en link mellem c: oolsjavadefault og den aktuelle version af java, du vil bruge som standard i dit system.





Sådan indstilles det:




  1. Download kryds og sørg for at sætte det i din PATH
    miljøvariabel

  2. Indstil dit miljø på denne måde:
        - PATH peger på KUN til denne jre c: oolsjavadefaultin
        - JAVA\_HOME peger på `c: \ tools \ java \ default

  3. Gem alle dine jre'er i en mappe som (hvis du gør det i mappen Programfiler kan du støde på nogle


    • C: oolsJavaJRE\_1.6

    • C: oolsJavaJRE\_1.7

    • C: oolsJavaJRE\_1.8


  4. Åbn en kommandoprompt og cd til C: oolsJava

  5. Udfør junction default JRE\_1.6



Dette vil skabe et kryds (som er mere eller mindre som et symbolsk link i Linux) mellem C: oolsjavadefault og C: oolsjavaJRE\_1.6 [42] [43]


På denne måde vil du altid have din standard java i c: oolsjavadefault.


Hvis du derefter skal ændre din standard java til 1.8 versionen, skal du bare udføre


junction -d default
junction default JRE\_1.8 


Derefter kan du få batch-filer til at gøre det uden kommandoprompt som
set\_jdk8.bat
set\_jdk7.bat


Som foreslået fra @ Сӏаџ ԁ Маятіи


EDIT: Fra Windows Vista kan du bruge mklink /J default JRE\_1.8


Andre referencer 5


Jeg har flere JDK (1.4, 1.5, 1.6) installeret i C:Java med deres JRE'er. Så lader jeg Sun opdatere det offentlige JRE i C:Program FilesJava.

I sidste øjeblik er der en forbedring, der installeres i jre6. Tidligere var der en anden mappe pr. Ny version (1.5.0\_4, 1.5.0\_5 osv.), Som tog meget plads