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.
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.
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.
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.