Frage Erstellen von Gläsern mit mehreren Hauptklassen in Netbeans


Ich bin ein VoIP-Client-Server-Paar in Java mit der Netbeans-IDE erstellen. Ich würde gerne nur ein Projekt verwenden, aber ich bin nicht vertraut damit, wie Netbeans die Jar-Datei erstellen würde. Ich brauche ein, wenn das möglich ist und wenn ja, wie man es einrichtet.


5
2018-02-06 01:18


Ursprung


Antworten:


Ich glaube, der Zweck einer "Hauptklasse" bedeutet, dass die spätere JAR-Manifestdatei eine Klasse als die "Klasse zum Ausführen" bezeichnet: Der Endbenutzer kann einfach darauf doppelklicken * oder eine vereinfachte Befehlszeile ausführen mögen:

java -jar <jar> 

anstatt den gesamten Paket- / Klassennamen wie folgt anzugeben:

java -cp <jar> com.yourcom.package.classname

Wenn ich recht habe, dann sehe ich nicht, wie es sinnvoll wäre, mehr als eine Hauptklasse zu haben? Vielleicht überspringe ich deine Frage - oder gibt es einen anderen Zweck für die 'Hauptklasse'?

Wenn Sie zwei Klassen haben, die eine "Haupt" -Methode haben, dann ist das in Ordnung - der Endbenutzer kann jede der Klassen mit Namen starten - und zwar so lange, wie sie die Standard-Hauptmethode sig haben, zum Beispiel:

public static void main(String[] args)

es sollte einfach funktionieren.

* (zumindest unter Windows, und ob das auch funktioniert, hängt davon ab, welche JRE sie haben und wahrscheinlich auch andere Dinge)


3
2018-02-06 01:30



Das JAR-Dateispezifikation erlaubt nur einen Main-Class Attribut pro JAR, aber die JAR kann eine beliebige Anzahl von Klassen haben, die a deklarieren main() Methode. Jede solche Klasse wird in das Projekt einbezogen Build  Packaging Eigentum, sofern nicht ausdrücklich ausgeschlossen.

Als konkretes Beispiel H2-Datenbank enthält diese Klassen mit main():

org.h2.jdbcx.JdbcConnectionPool
org.h2.tools.Backup
org.h2.tools.ChangeFileEncryption
org.h2.tools.Console
org.h2.tools.ConvertTraceFile
org.h2.tools.ConvertTraceFile
org.h2.tools.CreateCluster
org.h2.tools.DeleteDbFiles
org.h2.tools.Recover
org.h2.tools.Restore
org.h2.tools.RunScript
org.h2.tools.Script
org.h2.tools.Server
org.h2.tools.Shell

Nachtrag: Anscheinend braucht mein Müllabfuhrprojekt Wartung.

$ find scratch / src -name \ * java | xargs -J% egrep 'main [\ t] * \ (Str'% | wc -l
     109

8
2018-02-06 04:01



Ich weiß nicht, wie Netbeans funktioniert, aber es sollte kein Problem sein, mehr als eine Hauptklasse in ein JAR zu schreiben. Tatsächlich ist eine Hauptklasse nur eine Klasse mit einer Hauptmethode und eine JAR ist eine Sammlung von Klassendateien.
Die einzige Einschränkung ist, dass es nur eine Klasse geben kann, die mit einem Doppelklick auf die JAR gestartet wird.

Um die einzelnen Klassen zu starten, müssen Sie nicht die Option -jar verwenden, sondern den vollständigen Klassennamen angeben.
Wenn Sie beispielsweise in Ihrem JAR eine Client- und eine Server-Klasse haben, wird der Client von gestartet
java -cp file.jar Client
und der Server von
java -cp file.jar Server.

Eine Option besteht darin, eine dritte zu erstellen Anlasser Klasse, die basierend auf einem Befehlszeilenargument (oder einem GUI-Fenster) zum Starten des Servers oder des Clients verwendet wird.


4
2018-02-06 02:05



Wenn Sie in Netbeans die JAR-Datei Ihres Projekts mit Ihrer ausgewählten Hauptklasse erstellen möchten, 1. Rechtsklick auf dein Projekt (Wenn Sie Ihr Projekt nicht finden konnten, dann gehen Sie zu Fenster -> Projekt von netbeans menubar) 2. Gehe zu Konfiguration -> Anpassen.  3. Wählen Sie aus den Kategorien aus. Schreiben Sie in der Hauptklasse Ihren Paketnamen.classname  (dh Sie haben die Datei xyz in mypackage erstellt und dann mypackage.xyz geschrieben) 4. OK klicken.
5. Klicken Sie erneut mit der rechten Maustaste auf Projektname, wählen Sie clean und build. 6. Ihre JAR-Datei wird am Speicherort Ihres Projektnamens erstellt -> dist -> Projektname.jar


0
2018-03-22 03:48