Wie erstelle ich einen Alias ​​für den Java-Standardausführungsbefehl?

2

Ich möchte einen Alias ​​für das Ausführen der Java-Projekte auf der Befehlszeile erstellen, anstatt jedes Mal "Java-Klassenname" einzugeben. Ich möchte einen Alias ​​für diesen "Java" -Befehl erstellen. Zum Beispiel "run classname". Gibt es eine Möglichkeit, den Standardbefehl zur Ausführung von Java-Projekten durch unseren eigenen zu ersetzen? Dankeschön.

Anfänger
quelle
Cross-posted on StackOverflow: stackoverflow.com/questions/32775019/…
John1024
Versuchen Sie, eine Java-Klasse ohne Angabe von "java" auszuführen, wie dies beim Laden myclass.classin die Java-Laufzeit nur durch Eingabe der Fall ist ./myclass? Ich kenne keinen Weg, das zu tun. Wenn Sie dem javaBefehl einfach nur Parameter hinzufügen (oder einen alternativen Namen dafür vergeben) möchten, können Sie ihn aliaswie jeden anderen Befehl verwenden.
CBHacking

Antworten:

2

Wenn Sie einen Alias ​​für die Ausführung einer bestimmten Klasse (mit bestimmten Parametern) möchten, fügen Sie Folgendes zu Ihrer Bash-Profildatei hinzu (z. B. .bash oder .profile in Ihrem Ausgangsverzeichnis):

alias aliasname="java classname param1 param2"

Dies würde die durch classname angegebene Klasse mit den angegebenen Parametern ausführen, wenn Sie aliasname in Ihre Befehlszeile eingeben.

Wenn Sie jedoch einen Alias ​​möchten, der eine beliebige Klasse (und einen beliebigen Parameter) annehmen kann, fügen Sie Folgendes zu Ihrem Bash-Profil hinzu:

function functionname() { java $@ }

Das ist wie das Umbenennen des Java-Befehls in Funktionsname ohne zusätzliche Vorteile.

Beachten Sie, dass Sie den folgenden Befehl ausführen müssten:

source "filepath_to_your_profile_path"

oder starten Sie Ihr Terminal neu, damit dies wirksam wird.

deeeeeeekun
quelle
Java macht dies schwierig, weil die JRE zu dumm ist, .classum den Dateinamen zu entfernen. Sie schlägt fehl, wenn Sie nur einen Dateinamen übergeben. Sie müssten eine Funktion oder ein einfaches Skript schreiben, das die Erweiterung entfernt.
CBHacking
Nach dem, was ich aus der Frage erhalten habe, übergibt der Benutzer den Klassennamen und nicht den Dateinamen. Oder verstehe ich die Frage falsch?
Deeeeeeekun
3

Wenn Sie dem javaBefehl nur Parameter hinzufügen möchten , ist das ganz einfach:

alias java="java -Xmx2g"

Auf diese Weise können Sie java <classname>die Klasse in einer JRE-Instanz starten, die bis zu 2 GB RAM verwenden darf. Wenn Sie eine alternative Version des javaBefehls erstellen möchten , die mit verschiedenen Parametern ausgeführt wird, ist dies auch ganz einfach:

alias runjar="java -jar"

runjar <jarfilename.jar>Dann können Sie eine JAR-Datei ausführen. Da er javaintern aufruft , erweitert er auch den obigen Alias ​​(wenn beide definiert sind), sodass der vollständige resultierende Befehl angezeigt wird java -Xmx2g -jar <jarfilename.jar>.

In beiden Fällen möchten Sie diese Zeilen zu Ihren .profileund / oder .bashrc(oder einer Entsprechung für Ihre bevorzugte Shell) Skripten hinzufügen , damit sie automatisch geladen werden, wenn Sie eine Shell öffnen.

CBHacking
quelle