Ich kann mit diesem Befehl zwischen den beiden wechseln:
# alternatives --config java There are 2 programs which provide 'java'. Selection Command ----------------------------------------------- * 1 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64/jre/bin/java + 2 /usr/java/jdk1.8.0_91/jre/bin/java Enter to keep the current selection[+], or type selection number:
Und sehen Sie die Version mit:
# java -version java version "1.8.0_91" Java(TM) SE Runtime Environment (build 1.8.0_91-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode) # javac -version javac 1.8.0_91
Nun zu meinem Problem bitte -
Ich erstelle eine einfache Java-Datei mit dem Namen TheClassName.java:
package thepackagename; public class TheClassName { public static final void main(String[] args) { System.out.println("Hello World!"); } }
Nach dem erfolgreichen Kompilieren mit javac TheClassName.java(das die TheClassName.classDatei im selben Verzeichnis erzeugt) kann ich es leider nicht ausführen:
# java -cp . thepackagename.TheClassName Error: Could not find or load main class thepackagename.TheClassName
Hier noch ein Versuch:
# export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64/jre # $JAVA_HOME/bin/java -cp . thepackagename.TheClassName Error: Could not find or load main class thepackagename.TheClassName
Das Festlegen einer anderen Umgebungsvariablen hilft auch nicht:
# export CLASSPATH=.
Ein ähnlicher Befehl unter Windows 7 funktioniert gut und ich habe versucht, die TheClassName.classDatei von dort auch nach Linux zu kopieren .
Bitte helfen Sie und schlagen Sie nicht vor, diese Frage als doppelt zu kennzeichnen, da ich, wie Sie oben sehen, die meisten Vorschläge bereits ausprobiert hat.
Der SELINUX ist aus ( SELINUX=disabled) und der Server wurde vor einigen Wochen installiert und dient als LAMP mit MySQL / PostgreSQL / Apache / WordPress.
AKTUALISIEREN:
Ja, ich musste die Klassendatei unter thepackagenamedir verschieben und dann funktioniert es:
package thepackagename; public class TheClassName { public static final void main(String[] args) { System.out.println("Hello World!"); } }
Ein Aufruf aus dem falschen Verzeichnis führt dann zu:
Error: Could not find or load main class thepackagename.TheClassName
Es muss mit seinem vollständig qualifizierten Namen aufgerufen werden:
java -classpath . thepackagename.TheClassName
Dieser Befehl muss aus dem gleichen Verzeichnis aufgerufen werden, in dem das thepackagenameVerzeichnis vorhanden ist. Dies bedeutet, dass Sie ein neues Verzeichnis erstellen thepackagenameund TheClassName.classin dieses thepackagenameVerzeichnis verschieben müssen. Führen Sie dann den obigen Befehl aus dem übergeordneten Verzeichnis des Verzeichnisses aus.
Oh, Sie haben 100% Recht und das Verschieben der Datei in `thepackagename / TheClassName.class` hilft (und macht wahrscheinlich meine Frage zu einem Duplikat) ... Allerdings [mein eigentliches Programm] (https://github.com/afarber/ Jetty-Newbie / Tree / Master / WebsocketHandler), bestehend aus wenigen JAR-Dateien, wird immer noch nicht ausgeführt. Ich muss mehr nachforschen und werde eine separate Frage stellen.
Alexander Farber vor 8 Jahren
0
Um Java-Dateien mit einem externen jar auszuführen, führen Sie `java -cp.: / Path / to / jar / file MyCompiledFile` aus, wobei Sie` / path / to / jar / file` durch den vollständigen Pfad zu Ihrer externen .jar-Datei ersetzen.
karel vor 8 Jahren
1