2016-12-31 2 views
-2

einen Blick auf das folgende Bild aufnehmen: Kann nicht symbolischer Link auf Java-Datei anderen Namen als Namen der Java-Datei

ich einen symbolischen Link auf Java-Class-Datei zu machen. Und es funktioniert, ich kann die ursprüngliche Datei über einen symbolischen Link an den Java-Interpreter übergeben und das Programm normal ausführen. Aber wenn ich einen anderen als den ursprünglichen Dateinamen leite, funktioniert es nicht.

Es frustriert mich, dass ich es wie ursprünglichen Dateinamen zu nennen haben.

Nicht sicher habe ich dies auf Unix/Linux-Stack geschrieben.

+0

in Java die Datei hat eine Klasse enthält, die den gleichen Namen wie die Klasse haben. Aber man konnte ein lauffähiges Jar aus Ihrer Klasse (Dateien) erstellen und einen beliebigen Namen haben, die Sie mögen. –

+0

Eine Java-Klasse muss mit .class enden und wird ihren Namen haben verwendet werden, um den Klassennamen zu erhalten –

+0

Well-Klasse wird nach der Datei aufgerufen, in der es sich befindet. Sowohl die Datei als auch die Klasse heißen App. Actualy Klasse ist App, Dateien sind App.java und App.class – Scarass

Antwort

1

Es ist eine Anforderung, weil das ist, wie Java findet die Klassendatei. Wenn Sie java App sagen, ist App kein Dateiname, sondern ein vollständig qualifizierter Klassenname.

Java hat einige Regeln, wie von einem Klassennamen zu einem Dateinamen zu erhalten. Dies ist im Standardklassenlader implementiert. Wenn die Klasse in einer .class-Datei (und nicht in einer JAR-Datei) gespeichert wird, fügt sie automatisch die Erweiterung .class an den Klassennamen an. Bevor es das tut, übersetzt es das Pakettrennzeichen (das wie ein Punkt im Java-Quellcode aussieht) in das Pfadtrennzeichen Ihres Betriebssystems (unter Linux / (Schrägstrich) und unter Windows \ (umgekehrter Schrägstrich).

Wenn Sie geben der Klassendatei einen anderen Namen, ob Sie mit einem echten Umbenennungs oder mit einem Symlink tun, Java ist einfach nicht in der Lage, es zu finden, weil sie nicht an den Java-Regeln, wie von einem bekommen Klassenname auf einen Dateinamen ein.

Verwandte Themen