Hoe kan ik een .jar bestand uitvoeren vanaf de terminal

Ik weet dat om een bestand uit te voeren, ik het . commando gebruik, dan de bestandsnaam met een spatie ertussen. Maar ik probeer een .jar bestand uit te voeren met de . en het werkt niet. Ik ging naar de eigenschappen en markeerde het als uitvoerbaar en liet het lopen met Java.

Is er een manier om een bestand uit te voeren met Java in de Bash Terminal? Ik probeer een Minecraft.jar bestand uit te voeren]1

Ik probeer het Minecraft.jar bestand uit te voeren.

Oplossing

De . syntaxis kan alleen worden gebruikt om (door "sourcing") shell scripts te draaien.

Je moet het java commando gebruiken om een .jar bestand te draaien:

java -jar Minecraft.jar

Als je geen java geïnstalleerd hebt, kun je dat oplossen door het default-jre¹ pakket te installeren. Je kunt zien of je java al geïnstalleerd hebt door het in een terminal uit te voeren:

java -version 

[1]: Dit zal de standaard openjdk Java runtime installeren. U kunt openjdk-8-jre, of openjdk-7-jre, of openjdk-6-jre in plaats daarvan gebruiken, als u dat verkiest - welke ook beschikbaar is op uw versie van Ubuntu.

Commentaren (1)

Linux is perfect in staat om een vreemde binary, zoals een JAR-bestand, te draaien. Dit is bijvoorbeeld hoe Wine werkt. Om JAR bestanden als uitvoerbaar bestand te draaien doe je het volgende in een console

sudo apt-get install binfmt-support

Cd naar je JAR bestand en verander het in uitvoerbaar (je kunt dit ook doen via bestandseigenschappen in Nautilus)

chmod a+rx myjar.jar

Voer je jar-bestand uit alsof het een ander binair uitvoerbaar bestand of shell script was

./myjar.jar

Opmerking: Zorg ervoor dat u binfmt_misc linux kernel module geladen hebt. Als u uw eigen gecompileerde kernel gebruikt zonder deze module, zal binfmt-support'niet werken.

Commentaren (2)

Als het een uitvoerbaar potje is, dan

java -jar Minecraft.jar 

Niet alle jar-Archives bevatten een uitvoerbare klasse, die in het Manifest-bestand wordt gedeclareerd om te worden gestart, maar als die er is, zal dit werken.

Btw.: De meeste programma's start je niet vanuit de shell met de punt. De punt is een snelkoppeling voor source, en het werkt alleen in de bash en sommige andere shells, om een script op te nemen in de scope van de huidige sessie.

Een gecompileerd binair xybin wordt gewoon gestart met zijn naam als het in het pad staat:

xybin 

of, met zijn absolute pad:

/home/foo/proj/test/xybin

of met het relatieve pad:

proj/test/xybin

of als je toevallig in de directory van het bestand bent, met dit relatieve pad:

./xybin

Het bestand moet gemarkeerd zijn als uitvoerbaar voor jou (zie: chmod). Al het bovenstaande geldt ook voor shellscripts, maar die hebben vaak een extensie .sh, en je kunt een shellscript starten door de interpreter aan te roepen, en dan hoeft het niet als uitvoerbaar gemarkeerd te worden:

 bash xy.sh

Als je geen nieuwe bash wilt starten, kun je source gebruiken, en dat doe je, om functiedefinities, aliassen en variabele instellingen te consumeren.

Commentaren (0)