!ENTRY org.eclipse.e4.ui.workbench 4 0 2013-04-24 12:41:13.872 !MESSAGE Internal Error !STACK 0 org.eclipse.e4.core.di.InjectionException: java.lang.NullPointerException at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:63) at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:231) at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:212) at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:131) at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:171) at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:831) at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.handleWidgetSelection(HandledContributionItem.java:724) at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.access$7(HandledContributionItem.java:708) at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem$4.handleEvent(HandledContributionItem.java:647) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4169) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3758) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86) at org.eclipse.e4.ui.internal.workbench.swt.E4Application.start(E4Application.java:150) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584) at org.eclipse.equinox.launcher.Main.run(Main.java:1438) at org.eclipse.equinox.launcher.Main.main(Main.java:1414) Caused by: java.lang.NullPointerException at net.restartets.handlers.QuitHandler.execute(QuitHandler.java:31) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56) ... 30 more
package net.restartets.handlers; import net.restartets.MyE4Application; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.workbench.IWorkbench; public class QuitHandler { @Execute public void execute(IWorkbench workbench) { MyE4Application.getInstance().setRestart(); workbench.close(); } }
@Execute public void execute(IWorkbench workbench) { MyE4Application.getInstance().setRestart(); MyE4Application.getInstance().stop(); }
package net.restartets; import org.eclipse.e4.ui.internal.workbench.swt.E4Application; import org.eclipse.equinox.app.IApplication; import org.eclipse.equinox.app.IApplicationContext; public abstract class MyE4Application implements IApplication { private static MyE4Application instance; public static MyE4Application getInstance() { return instance; } private Integer exitRet = IApplication.EXIT_OK; private E4Application e4app; public void setRestart() { exitRet = IApplication.EXIT_RESTART; } @Override public Object start(IApplicationContext context) throws Exception { instance = this; e4app = new E4Application(); e4app.start(context); return exitRet; } @Override public void stop() { e4app.stop(); } }
package net.restartets.handlers; import net.restartets.MyE4Application; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.workbench.IWorkbench; public class QuitHandler { @Execute public void execute(IWorkbench workbench) { MyE4Application.getInstance().setRestart(); MyE4Application.getInstance().stop(); // workbench.close(); } }
<?xml version="1.0" encoding="UTF-8"?> <plugin> <extension id="product" point="org.eclipse.core.runtime.products"> <product name="net.restartets" application="org.eclipse.e4.ui.workbench.swt.E4Application"> <property name="appName" value="net.restartets"> </property> <property name="applicationXMI" value="net.restartets/Application.e4xmi"> </property> <property name="applicationCSS" value="platform:/plugin/net.restartets/css/default.css"> </property> </product> </extension> </plugin>
<extension id="MyApplication" point="org.eclipse.core.runtime.applications"> <application> <run class="net.restartets.MyE4Application"> </run> </application> </extension>
<?xml version="1.0" encoding="UTF-8"?> <plugin> <extension id="MyApplication" point="org.eclipse.core.runtime.applications"> <application> <run class="net.restartets.MyE4Application"> </run> </application> </extension> <extension id="product" point="org.eclipse.core.runtime.products"> <product name="net.restartets" application="org.eclipse.e4.ui.workbench.swt.E4Application"> <property name="appName" value="net.restartets"> </property> <property name="applicationXMI" value="net.restartets/Application.e4xmi"> </property> <property name="applicationCSS" value="platform:/plugin/net.restartets/css/default.css"> </property> </product> </extension> </plugin>
<extension id="product" point="org.eclipse.core.runtime.products"> <product name="net.restartets" application="org.eclipse.e4.ui.workbench.swt.E4Application">
<extension id="product" point="org.eclipse.core.runtime.products"> <product name="net.restartets" application="net.restartets.MyE4Application">
how did you register it to your plugin.xml? Did you copy it to your plugin.xml or where you able to add through the Extensions-tab in the Manifest-editor? Maybe it is just a typo?!
Otherwise I don't know what's causing the NullPointerException. Now, MyE4Application.getInstance() returns null?
<?xml version="1.0" encoding="UTF-8"?> <plugin> <extension id="product" point="org.eclipse.core.runtime.products"> <product application="org.eclipse.e4.ui.workbench.swt.E4Application" name="net.restartets"> <property name="appName" value="net.restartets"> </property> <property name="applicationXMI" value="net.restartets/Application.e4xmi"> </property> <property name="applicationCSS" value="platform:/plugin/net.restartets/css/default.css"> </property> </product> </extension> <extension id="id1" point="org.eclipse.core.runtime.applications"> <application cardinality="singleton-global" thread="main" visible="true"> <run class="net.restartets.MyE4Application"> </run> </application> </extension> </plugin>
I think this part of your plugin.xml
should be something like<extension id="product" point="org.eclipse.core.runtime.products"> <product name="net.restartets" application="org.eclipse.e4.ui.workbench.swt.E4Application">
<extension id="product" point="org.eclipse.core.runtime.products"> <product name="net.restartets" application="net.restartets.MyE4Application">
!ENTRY org.eclipse.osgi 4 0 2013-04-25 11:27:56.359 !MESSAGE Application error !STACK 1 java.lang.RuntimeException: Application "net.restartets.MyE4Application" could not be found in the registry. The applications available are: org.eclipse.equinox.app.error, org.eclipse.e4.ui.workbench.swt.E4Application, org.eclipse.e4.ui.workbench.swt.GenTopic, org.eclipse.ant.core.antRunner, net.restartets.id1. at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:248) at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584) at org.eclipse.equinox.launcher.Main.run(Main.java:1438) at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
Put a breakpoint in MyE4Application.start(...) an see if that realy gets called!
!ENTRY org.eclipse.osgi 4 0 2013-04-25 14:55:20.400 !MESSAGE Application error !STACK 1 org.eclipse.core.runtime.CoreException: Plug-in "restart" was unable to instantiate class "restart.MyE4Application". at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.throwException(RegistryStrategyOSGI.java:194) at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:186) at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905) at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243) at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:191) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584) at org.eclipse.equinox.launcher.Main.run(Main.java:1438) at org.eclipse.equinox.launcher.Main.main(Main.java:1414) Caused by: java.lang.InstantiationException at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:184) ... 16 more
<?xml version="1.0" encoding="UTF-8"?> <plugin> <extension id="product" point="org.eclipse.core.runtime.products"> <product name="restart" application="restart.id1"> <property name="appName" value="restart"> </property> <property name="applicationXMI" value="restart/Application.e4xmi"> </property> </product> </extension> <extension id="id1" point="org.eclipse.core.runtime.applications"> <application cardinality="singleton-global" thread="main" visible="true"> <run class="restart.MyE4Application"> </run> </application> </extension> </plugin>
import org.eclipse.e4.ui.internal.workbench.swt.E4Application;