2012-03-09 70 views
5

So che è possibile esportare la mia applicazione rcp, creare un file .exe ed eseguirlo con il comando "Runtime.getRuntime(). Exec()" ma, vorrei lanciare la mia applicazione rcp dal metodo principale di una classe java senza creare e chiamare l'exe. È possibile?Avvia applicazione RCP da main()

risposta

5

io non sono sicuro che sia davvero utile a voi, dipende perché è necessario avviare un altro IApplication, ma comunque ...

vorrei leggere la pagina wiki su Equinox Application Model Demo che dimostra come l'OSGi Application Admin il servizio può essere utilizzato per controllare l'applicazione. Puoi ottenere il codice dal CVS come descritto qui. È inoltre possibile controllare il codice nella classe org.eclipse.equinox.internal.app.AppCommands, ovvero nel metodo _startApp(), che avvia anche un'applicazione già definita ed è l'implementazione del comando "startApp" nella console OSGi.

Nota che potrebbe essere necessario regolare il modo in cui si avvia l'istanza Eclipse da cui si desidera avviare l'altra applicazione (ad esempio l'opzione di runtime eclipse.application.registerDescriptors see the help page).

Spero che questo aiuti!

2

Supponendo che OSGi sia già in esecuzione, la risposta di @Urbi è corretta. Se hai anche bisogno di avviare OSGi, fai attenzione a farlo dal tuo thread principale - cioè il thread iniziale della tua applicazione - altrimenti SWT non funzionerà correttamente su tutte le piattaforme.

Dai un'occhiata a org.eclipse.core.runtime.adaptor.EclipseStarter per il modo di avviare OSGi e la tua applicazione.

2

È sufficiente creare un fork del fascio org.eclipse.equinox.launcher ha una classe principale con la funzione principale statico (aka il punto di ingresso) che delega al run-funzioni. È possibile creare una sottoclasse per sovrascrivere la funzione run e fare ciò che si vuole fare.