Java-Projekt auf Kommandozeile kompilieren und ausführen


#1

Ja, passt nicht so ganz zum Forum, aber ich versuche seit über einer Stunde, eine Java-Projekt mit multiplen Source-Files und einer Bibliothek zum Laufen zu bringen, ohne Erfolg.

Meine Struktur sieht wie folgt aus:

dmanstrator/
	src/
		project/
			commands/
				Foo.java
				Bar.java
			Foobar.java
			MainFile.java
	lib/
		external-jar.jar

Auch der Classpath sollte passen:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
	<classpathentry kind="src" path="src"/>
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
	<classpathentry kind="lib" path="lib/external-jar.jar"/>
	<classpathentry kind="output" path="bin"/>
</classpath>

Kompiliert habe ich mit diesem Befehl:

 javac -d bin -cp ".:lib/external-jar.jar" src/dmanstrator/project/commands/*.java src/dmanstrator/project/*.java src/dmanstrator/project/MainFile.java

Kam auch keine Fehler-Meldungen zurück, musste aber hier noch einmal den Classpath setzen, obwohl es bereits so in der .classpath-Datei stand. Und einfach nur die MainFile zu kompilieren hat für Fehler gesorgt.

Zum Ausführen hätte ich jetzt gedacht:

 java -cp ".:lib/external-jar.jar" bin.dmanstrator.project.MainFile

, bekomme jedoch als Fehler-Meldung

Fehler: Hauptklasse bin.dmanstrator.project.MainFile konnte nicht gefunden oder geladen werden

zurück.

Habe bisher immer nur sehr kleine Projekt über Kommando-Zeile kompiliert und ausgeführt, alles größere automatisiert über Eclipse.

Wäre für einen Rat dankbar.

LG, DMan


#2

Ich bin leider kein Java Programmierer und kann dir deswegen selbst nicht weiterhelfen. Habe aber mal einen Freund drüber schauen lassen, und er hat mir einen Link gegeben und die folgenden Informationen gegeben:

er will die erneut kompilieren
und nicht ausführen
-cp is wrong

Grüße
Balmung


#3

Hey Balmung,

Danke dass du deinen Kumpel gefragt hast, nur kann ich sein Feedback nicht nachvollziehen.
javac compiliert, java führt aus. Und bei der Kommandozeile muss man zwangsläufig einen classpath (cp) setzen, damit das Programm weiß, wo es nach Source-Files suchen darf.

Auch möchte ich kein .jar-Archiv erstellen, da es beispielsweise beim Umgang mit Dateien Probleme gibt, muss muss die Datei als ObjectStream einlesen, (getObjectAsStream), was natürlich abgefangen und behandelt werden kann, aber genauso muss ein Projekt auch über die Kommandozeile gestartet werden können.

Hab’s aber lösen können. Das Kompilieren ging jetzt auch mit

javac -classpath ./src:external-jar.jar ./src/dmanstrator/project/MainFile.java

und auch das Ausführen hat mit

java -classpath ./src:external-jar.jar dmanstrator.project.MainFile

funktioniert.

Trotzdem Danke für den Einsatz. :smiley:

LG, DMan