Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.
3.5 MazeSolver
Das mit dem Einbinden des jar-Archives auf der Kommandozeile hat bei mir unter Win7 nicht funktioniert.
Hab ein bischen Schreibweisen rumprobiert (mit/ohne Doppelpunkt, mit/ohne slash usw.),
mit
javac -cp ./Mazes.jar MazeSolver.java
funktioniert das kompilieren,
aber das entsprechende
java -cp./Mazes.jar MazeSolver
findet dann nicht einmal die MazeSolver-Klassendatei.
Mein workaround ist das jar-Archiv einfach als zip-Archiv auszupacken und die MazeSolver.java mit in das Unterverzeichnis
reinzulegen, also entpackte Klassen und MazeSolver.java im gleichen Verzeichnis.
Dann klappt kompilieren und ausführen direkt ohne weitere Parameter an javac bzw. java.
Bevor ich noch ewig rumprobiere:
Kann mir jemand sagen, wie der Aufruf für java mit jar-Archiv einbinden funktioniert hätte?
P.S. Ich weiß, ich weiß, ich sollte mich mal mit eclipse beschäftigen…
Danke für den Hinweis.
Mit [m]-cp[/m] gibt man den Classpath an, also Pfade, an denen der Compiler bzw. die JVM die Klassen sucht, die man verwendet. Möchte man mehrere Pfade angeben, hier zum Beispiel das aktuelle Verzeichnis ([m].[/m]) und die jar-Datei, so trennt man die Pfade mit einem speziellen Zeichen (Javasprech “path separator”) ab. Was ich auch nicht bedacht habe ist, dass der sich zwischen Windows und Linux/Mac unterscheidet. Welchen Separator die aktuelle JVM gerne möchte, kann man mit [m]System.getProperty(“path.separator”)[/m] herausfinden. Unter Linux und Mac ist das wie auf dem Blatt angebeben [m]:[/m], unter Windows aber [m];[/m]
tl;dr:
Windows:
javac -cp .;Mazes.jar MazeSolver.java
java -cp .;Mazes.jar MazeSolver
Linux/Mac:
javac -cp .:Mazes.jar MazeSolver.java
java -cp .:Mazes.jar MazeSolver
Ich krieg iwie nur die iterative Lösung mit der .jar file zum Laufen.
Bei der rekursiven findet er den Inhalt nicht.