That main method will end up calling System.exit unless you define a system property "osgi.noShutdown". You should instead call org.eclipse.equinox.launcher.Main#run(String[]). (ie new Main().run(args) ).
-Andrew Tom Hsu <tom....@oracle.com> Sent by: equinox-dev-boun...@eclipse.org 01/09/2009 01:34 PM Please respond to Equinox development mailing list <equinox-dev@eclipse.org> To Equinox development mailing list <equinox-dev@eclipse.org> cc Subject Re: [equinox-dev] Integrating plugin bundles in normal Java Hi experts, I have successfully my app A from another main POJO class like the following: public static void main(String[] args) { String[] launcherArgs = { "-configuration", "C:\\pathTto\\configuration", "-install", "C:\\pathToIntall", "-DJavaAgentLogConfigFile=C:\\pathToLogConfig\\log4j-commandline.xml", "-application", "org.my.Application", }; org.eclipse.core.launcher.Main.main(launcherArgs); } The above requires the use of startup.jar's org.eclipse.core.launcher.Main.main. However, I notice I do not have control once I called Main.main. I do not have a way for my App A to return the control to the calling main java file. I tried throwing an Exception in my app A to see if it will bubble up to the POJO main method, but it does not. I cannot use System.exit(0) since it terminates the whole JVM. snippet: try { org.eclipse.core.launcher.Main.main(launcherArgs); } catch (Exception ex) { System.out.println("I am done with app A"); } in app A's terminate method: terminate() { System.out.println(); //System.exit(); throw new RuntimeException("I am done. get me out of here"); } What is a better way to achieve this? Bascially I want to run App A which through eclipse and use osgi from another program. Once App A is done, it needs to terminate and return control to the my POJO. Regards, Tom Thomas Watson wrote: I would recommend that you launch app A in a way that is consistent with the normal launch of eclipse. By that I mean use a configuration folder with a config.ini that is the same as if you are launching your application with the eclipse.exe. The config.ini configures a set of bundles into the framework for your application. You should be able to do something like this String[] equinoxArgs = { "-console", "-noExit", "-configuration" "/path/to/configuration", "-application", "myApp.Application"}; BundleContext context = EclipseStarter.startup(equinoxArgs, null); Object appResult = EclipseStarter.run(null); Tom Tom Hsu ---10/29/2008 01:41:44 PM---Hi experts, From: Tom Hsu <tom....@oracle.com> To: equinox-dev@eclipse.org Date: 10/29/2008 01:41 PM Subject: [equinox-dev] Integrating plugin bundles in normal Java Hi experts, I am new to equinox so please excuse me for some obvious/stupid questions. However, I am still trying to wrap my head around this module system. I am tasked with integrating an existing application A that is build using bundles and equinox osgi in eclipse into another standalone Java program B that will be traditional jar based program. I would like to invoke the Equinox OSGi system to load these bundles/packages in the standalone Java program through code and execute the main method of the app A through program B. My setup is as follows: /plugins/ all the bundles that app A requires are here. also app A has a main bundle here I can use Eclipse Application run option to launch it or comandline "java -cp startup.jar org.eclipse.core.launcher.Main - application myApp.Application ..." However, I am exploring the option to launch app A with another existing java program B. As a prototype, I am writing a plain POJO with main method: public static void main(String[] args) throws Exception { String[] equinoxArgs = { "-console", "-noExit" }; BundleContext context = EclipseStarter.startup(equinoxArgs, null); String pluginDir = "file:C:\\work\\"; String commonJarName = "org.eclipse.equinox.common_3.2.0.v20060603.jar"; String configJarName = "org.eclipse.update.configurator_3.2.2.R32x_v20070111.jar"; Bundle commonBundle = context.installBundle(pluginDir + commonJarName); Bundle configBundle = context.installBundle(pluginDir + configJarName); configBundle.start(); String jarName = "fetchlets.jar"; String directoryPath = "file:C:\\work\\plugins\\"; String locationStr = directoryPath + jarName; Bundle bundle = context.installBundle(locationStr); bundle.start(); } However, my bundle fetchlets.jar cannot be started because, the configurator bundle does not auto-discover all the required bundles in the plugins directory. Can someone help me figure out if I can tell the EclipseStarter to auto-load all bundles at a specific locations? Or is there another approach I can use that is very similar to the run options in Eclipse where setting the platform will suffice to load all the plugins automatically? I have been looking at: http://www.eclipse.org/equinox/documents/quickstart.php http://www.eclipsezone.com/eclipse/forums/t93976.rhtml Regards, Tom _______________________________________________ equinox-dev mailing list equinox-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/equinox-dev _______________________________________________ equinox-dev mailing list equinox-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/equinox-dev _______________________________________________ equinox-dev mailing list equinox-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/equinox-dev
<<image/gif>>
<<image/gif>>
<<image/gif>>
<<image/gif>>
<<image/gif>>
<<image/gif>>
<<image/gif>>
<<image/gif>>
<<image/gif>>
_______________________________________________ equinox-dev mailing list equinox-dev@eclipse.org https://dev.eclipse.org/mailman/listinfo/equinox-dev