2009-08-12 4 views
3

Wie richte ich mehrere Einstiegspunkte in einem Anwendungs-Client jar ein?Mehrfacher Einstiegspunkt (Hauptklasse) für den Anwendungs-Client jar

Ich benutze Glassfish Anwendungsserver. Ich kann den Client greifen mit

asadmin get-client-stubs --appname APPLICATION_NAME . 

Ich kann zur Zeit die Standard-Mainclass ausführen, die ich in der MANIFEST.MF angegeben haben. Ich möchte jedoch eine andere Hauptklasse zur Laufzeit angeben können.

dh

appclient -client MYJAR.jar -mainclass com.mystuff.Main1 
and 
appclient -client MYJAR.jar -mainclass com.mystuff.Main2 

Beide Main1 und Main2 haben "public static void main" Einstiegspunkte.

Wenn ich ein Mainclass angeben, die nicht in MANIFEST.MF ist, erhalte ich die folgende Ausnahme:

Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: Could not locate an embedded app client matching the main class name 

Muss ich Änderungen vornehmen müssen, um die appclient Referenz andere mainclasses haben?

Antwort

1

http://forums.java.net/jive/thread.jspa?threadID=65549&tstart=0 < - ich die gleiche Frage hier Dritten zugänglich gemacht und jemand gab die Antwort ...

Hallo. Der GlassFish-Anwendungsclientcontainer verwendet die Option -mainclass, um zwischen mehreren Clients zu unterscheiden, die in dasselbe EAR verpackt sind. Der Benutzer kann also zum Zeitpunkt des Starts auswählen, welche der mehreren Clients zum Starten zusammengelegt wurden. Wie Sie festgestellt haben, kann der Benutzer die Absicht des Entwicklers nicht überschreiben, wie die Hauptklasse innerhalb eines bestimmten Clients ausgeführt werden soll.

Sie können tun, was wollen Sie da die alternative appclient Syntax in v3:

http://docs.sun.com/app/docs/doc/820-7701/appclient-1m?a=view

Für v2 Sie sicherlich Ihre einzige Hauptklasse schreiben könnte ein Argument zu akzeptieren, dass eine Klasse ausgeführt werden spezifiziert und Laden Sie dann diese Klasse dynamisch und rufen Sie ihre Hauptmethode auf.

-Tim

Verwandte Themen