Ich erstelle ein VoIP-Client-Server-Paar in Java mit der Netbeans-IDE. 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.Erstellen von Gläsern mit mehreren Hauptklassen in Netbeans
Antwort
Ich glaube, dass der Zweck einer 'Hauptklasse' bedeutet, dass die eventuelle JAR 'Manifestdatei eine Klasse als die' Klasse zum Ausführen 'bezeichnet: damit der Endbenutzer sie einfach * oder doppelklicken kann führe eine vereinfachte Kommandozeilen wie:
java -jar <jar>
anstatt die gesamten Paket/Klassennamen angeben:
java -cp <jar> com.yourcom.package.classname
Wenn ich Recht habe, dann sehe ich nicht, wie es wäre Sinn machen, mehr als eine Hauptklasse zu haben? Vielleicht habe ich Ihre Frage falsch verstanden - 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 solange sie die Standard-Hauptmethode sig haben, zum Beispiel:
sollte es einfach funktionieren.
* (unter Windows zumindest, und ob das funktioniert, hängt auch von dem JRE sie haben und wahrscheinlich noch andere Dinge)
Ich weiß nicht, wie Netbeans Arbeit, aber es sollte kein Problem setzen mehr als eine sein Hauptklasse in einem JAR. 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 jede Klasse zu starten, müssen Sie nicht die Option -jar verwenden, sondern den vollständigen Klassennamen angeben.
Zum Beispiel, wenn Sie einen Client und eine Server-Klasse im JAR haben, wird der Kunde durch
java -cp file.jar Client
und den Server von
java -cp file.jar Server
gestartet.
Eine Option besteht darin, eine dritte Starter-Klasse zu erstellen, mit der entweder der Server oder der Client basierend auf einem Befehlszeilenargument (oder einem GUI-Fenster) gestartet wird.
Die JAR File Specification erlaubt nur ein Main-Class
Attribut pro JAR, aber die JAR kann eine beliebige Anzahl von Klassen haben, die eine main()
Methode deklarieren. Eine solche Klasse wird in die Eigenschaft Build
Packaging
des Projekts aufgenommen, sofern nicht ausdrücklich ausgeschlossen.
Als konkretes Beispiel enthält H2 Database 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 meine Junk-Schublade Projekt gewartet werden muss.
$ find scratch/src -name \*java | xargs -J % egrep 'main[ \t]*\(Str' % | wc -l 109
+1 genaueste Antwort – stacker
- 1. Ausführen eine JAR-Datei mit mehreren Hauptklassen, die Befehlszeile
- 2. So erstellen Sie eine .jar aus mehreren Gläsern mit Maven-Plugin
- 3. NoClassDefFoundError mit externen Gläsern
- 4. Javas Classloader im Vergleich zu Gläsern innerhalb von Gläsern
- 5. Netbeans manifest
- 6. Verknüpfung zum Erstellen von Schnittstellenimplementierungen in NetBeans
- 7. wie ein Glas konvertieren das Glas je nach mehreren Gläsern
- 8. Erstellen von UML-Klassendiagrammen in NetBeans 7.1.1
- 9. Classpath für Gläser in Gläsern
- 10. Erstellen von mehreren Eingabefeldern
- 11. Ist es möglich, mehrere Hauptklassen mit dem 'plugin' Plugin '
- 12. Upload von verschiedenen Gläsern in Artifactory mit Gradle
- 13. Erstellen mit mehreren Maschinen
- 14. Erstellen Sie das Navigationsmenü dynamisch basierend auf den bereitgestellten Gläsern
- 15. Erstellen von Formularen mit mehreren Eingabefeldern
- 16. Erstellen von mehreren Abschnitten mit benutzerdefinierten Zellen
- 17. Erstellen Desktop-Glas von Netbeans/Maven-Projekt
- 18. mit rmic in Netbeans
- 19. Oracle Weblogic Hinzufügen von Gläsern zum Klassenpfad?
- 20. Wie importieren Sie Hauptklassen in Testklassen in Maven?
- 21. Erstellen einer neuen Ruby-Plattform in Netbeans
- 22. Einbeziehung von transitiver Abhängigkeit Gläsern mit copy-Abhängigkeiten
- 23. Textausgabe von mehreren Arrays in JavaScript erstellen
- 24. Gibt es ein Tool zu entdecken, ob die gleiche Klasse in mehreren Gläsern im Klassenpfad existiert?
- 25. Erstellen von mehreren Knoten in Neo4j mit Cypher
- 26. Erstellen von Websites mit mehreren Bildschirmauflösungen in Asp.NET (vb)?
- 27. Fehler beim Erstellen von javax.microedition.rms.RecordStore in NetBeans 6.0
- 28. So erstellen Sie die Eigenschaftendatei in Netbeans
- 29. Erstellen Sie Javascript-Projekt in Netbeans?
- 30. Hinzufügen von benutzerdefinierten Gläsern in jupyter Notebook pyspark
Der Grund für 2 Hauptklassen ist wegen des Servers und des Klienten.Ich möchte eine Jar-Datei für jede Hauptklasse erstellt, während in einem Projekt enthalten. Vielleicht hat das meine Frage geklärt. – Zach
Sie wollen also ein Projekt und zwei Jars, denke ich: also denke ich, dass Sie in diesem Fall wahrscheinlich ein "Freiform-Projekt" wählen müssen: Sie können also die Build- (Ameisen-) Skripte anpassen, um dies zu tun. Ich arbeite normalerweise nur an zwei Projekten in diesem Szenario: es sei denn, Sie müssen wirklich viel Code zwischen den zwei Projekten teilen: dann erwägen Sie, ein drittes 'Bibliothek' Projekt zu erstellen - Sie können das dann als abhängige Bibliothek hinzufügen zwei. [Ich hoffe, das ergibt Sinn!] – monojohnny
Ok, ich glaube, ich verstehe jetzt. – Zach