Mehrere .java Dateien /.jar Datei kompilieren?
Ich habe eine jar Datei mit der jdk exe gemacht. Anstatt class Dateien habe ich ihm Java Dateien gegeben, in der Hoffnung, dass er sie zu class Dateien kompiliert. Allerdings habe ich erst später gemerkt, dass er sie gar nicht kompiliert hat! Es sind viele java Dateien, so dass es sehr mühsam wäre, alles einzeln zu kompilieren. Meine Frage ist, ob ich alle Java Dateien in einem Ordner und dessen unterordnern und dessen unterordnern... oder alle Java Dateien in der jar Datei mit einem Befehl zu kompilieren oder gibt es dafür andere Compiler?
2 Antworten
Du brauchst dem Compiler nur die Klassendatei übergeben, die die main-Methode enthält. Alle notwendigen Referenzen werden automatisch kompiliert.
Um mehrere Ordner einzubinden, musst du Packages nutzen und jeweils richtig importieren.
Generell so: https://docs.oracle.com/javase/tutorial/java/package/packages.html, allerdings hatte ich mit meiner letzten Aussage Unrecht. Es werden nur die Klassen innerhalb des Ordners kompiliert.
Nutze ein Tool wie Ant oder Maven.
Du könntest evtl. "Apache Ant" benutzen, ist in etwa wie "make" für C++ (Ja, okay, nicht ganz... "make" kann auch für C, Pascal, Whatever-Basic, uvm. benutzt werden.)...
Dazu benötigst du dann noch ein "Build-File" namens "build.xml" (Kannst auch nen anderen Namen benutzen, musst den dann aber extra angeben...).
Dazu hier ein einfaches Beispiel:
<project name="MyProject" default="build" basedir=".">
<description>
lorem ipsum dolor sit amet.
</description>
<property name="src" location="src"/>
<property name="class" location="class"/>
<target name="init">
<tstamp/>
<mkdir dir="${class}"/>
</target>
<target name="build" depends="init" description="compile the source">
<javac srcdir="${src}" destdir="${class}"/>
<jar jarfile="MyProject-${DSTAMP}.jar" basedir="${class}">
<manifest>
<attribute name="Main-Class" value="MyProject.Main"/>
</manifest>
</jar>
</target>
<target name="clean" description="clean up">
<delete dir="${class}"/>
<delete file="MyProject-${DSTAMP}.jar"/>
</target>
</project>
Dann zum Kompilieren entweder "ant build" oder einfach nur "ant".
Wenn du jetzt z.B. vorhast, ein "Source-Archiv" zu machen, kannst du mit "ant clean" alles zuvor kompilierte entfernen, ohne dabei auch nur im geringsten am Sourcecode rumzupfuschen...
P.S.: Siehe auch: https://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html https://ant.apache.org/manual/using.html und http://ant.apache.org/
Wie nutze ich packages?