Wie kann man den Java Compiler für ein gesamtes Projektverzeichnis benutzen?

regex9  01.06.2022, 12:37

Wieso verwendest du keine IDE (IntelliJ/Eclipse/NetBeans/...)?

Valentin1720653 
Fragesteller
 01.06.2022, 12:38

Ich verwende VSCode zum editieren, mache das ganze compiling-Zeugs aber über das Terminal.

Also ich verwende Linux

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich würde dazu raten, mit einer IDE zu arbeiten. IntelliJ IDEA gibt es bspw. auch in einer Community Edition.

Wenn du bei VS Code bleiben möchtest - auch dort kannst du Maven / Gradle / o.ä. integrieren.

Für eine Lösung über die Konsole würde ich dem Compiler ein Zielverzeichnis (-d) übergeben und dass dann via Bash jedesmals erst löschen.

PWolff  01.06.2022, 13:34
via Bash

Ein Script will der Fragesteller aber ausdrücklich nicht. Warum auch immer.

0
regex9  01.06.2022, 14:42
@PWolff

Ich vermute, weil er dafür erst schauen müsste, wie man die Dateien allesamt richtig löscht. Standardmäßig wirft der Compiler die class-Dateien in dasselbe Verzeichnis, in dem auch die java-Dateien liegen. Beim Löschen ist daher eine Filterung vonnöten.

Ich kann ja einmal die dazu notwendigen Befehle teilen. Ob man sie nutzt oder nicht, sei dem Leser überlassen.

Mit

rm -rfv *.class

würde man ausgehend vom aktuellen Verzeichnis alle Dateien und Ordner mit der Namensendung .class entfernen.

Bei Nutzung eines extra Ausgabeverzeichnis kann man so den Ordner leeren:

rm -rfv nameDesAusgabeVerzeichnis/*

Erklärt wird der rm-Befehl auf dieser Seite.

0
PWolff  01.06.2022, 19:01
@regex9

Wenn der Schalter -f in einem solchen Fall nötig ist, würde ich mich fragen, was da nicht stimmt.

0
regex9  01.06.2022, 19:12
@PWolff

Nun, die Löschabsicht ist klar und ändert sich über die Durchläufe hinweg nicht. Daher sehe ich kein Problem darin, Rückfragen direkt zu unterdrücken.

0
PWolff  01.06.2022, 19:18
@regex9

Das könnte eine Stilfrage sein.

Mir ist es lieber, zu erfahren, wenn irgendwo irgendwas klemmt. Wenn "eigentlich" nichts schiefgehen kann, steckt hinter einem Fehler, der trotzdem auftritt, manchmal ein ziemlich übles, dickes Problem.

0

Wie genau verwendest du denn den Compiler?

Denn es klingt fast so, als scheitert es schon da. Machst du es auch so wie folgt?

"Du musst dem compiler jede Datei angeben, die du kompiliert haben möchtest, immer nur die main neu zu kompilieren reicht nicht. Auch deine Datei Huhu.java musst du angeben.

Du kannst aber wenigstens wildcards nutzen:

javac *.java dir1/*.java dir2/*.java dir1/dir3/*.java etc

So musst du nicht die Dateinamen selbst angeben, aber immernoch die Struktur der Ordner.

Das ist mühselig bei größeren Projekten. Aber einmal eingetippt, kannst du ja mit Pfeiltasten den Befehl wieder schnell aufrufen oder du nutzt deine IDE auch fürs compilen."

Wenn nicht, dann ist es ein anderes Problem.

Woher ich das weiß:Studium / Ausbildung – Informatik-Studium / Mathematik-Studium / ITK-Ausbildung
Valentin1720653 
Fragesteller
 01.06.2022, 12:55

im Terminal javac Main.java...

Ich hab aber schon rausgelesen dass der Java compiler das nicht kann.

Ich hab mir deswegen jetzt ein kleines bash-script zusammengebaut, das macht das ganze auch und ich muss mir jetzt nicht direkt make für ein Projekt mit 3 Paketen verwenden.

0
SirNik  01.06.2022, 13:01
@Valentin1720653

Und was kommt da bei "..."?

Und was macht dein Shell-Skript nun anders als javac mit allen *.java Dateien aufzurufen?

0
Valentin1720653 
Fragesteller
 01.06.2022, 13:17
@SirNik

Dass ich jedes Mal diesen ewig langen command aufrufen muss...

0

Tja , wird dann wohl nix . Schaff Dir eine IDE an und lass es die Intelligent lösen .

Falls Dir die Antwort nicht gefallen sollte, dann kannst Du sie ja gerne Melden . Löst dein Problem aber nicht.

Das ist ziemlich nervig und ich bin mir sicher dass das auch anders gehen sollte

z.b. mit einer IDE entsprechende intelligente PlugIns . Ansonsten viel Spaß bei der Suche, wenn Du dir da so sicher bist.

p.s. übrigends , genau das machen IDEs sie bauen ein makefile im hintergrund .

Valentin1720653 
Fragesteller
 01.06.2022, 12:53

Hmm, ich finde es zwar ein wenig "seltsam" dass eine Sprache in der man dazu forciert wird in Klassen / Paketen zu schreiben, dazu nicht ohne weiteres in der Lage ist, aber okay, ist dann halt so...

Ich hab mir jetzt einfach ein kleines .sh Skript gebastelt, dann klappt es auch mit einem einzigen Kommand.

Ich finds nur irgendwie lustig, da man Leute die zb Vim verwenden wollen damit eigentlich komplett aussperrt.

0