Reputation: 4216
I have an RCP application which looks like this.
MANIFEST.MF
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: EditorApp
Bundle-SymbolicName: EditorApp;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: EditorApp.Activator
Bundle-Vendor: APP
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
com.ibm.icu,
org.eclipse.jface.databinding,
org.eclipse.core.databinding.property,
org.eclipse.core.databinding.observable,
org.eclipse.core.databinding.beans,
org.eclipse.core.databinding,
org.eclipse.core.resources;bundle-version="3.9.1"
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: /Lib/mariadb-java-client-1.2.3.jar .
Export-Package: com.app.editor;
uses:="org.osgi.framework,
org.eclipse.ui,
org.eclipse.jface.action,
org.eclipse.equinox.app,
org.eclipse.jface.resource,
org.eclipse.ui.application,
org.eclipse.ui.plugin",
com.app.editor.actions;uses:="org.eclipse.jface.action",
com.app.editor.beans,
com.app.editor.functionalities;
uses:="org.eclipse.swt.graphics,
org.eclipse.swt.widgets,
org.eclipse.jface.dialogs,
javax.swing.tree",
com.app.editor.handlers;uses:="org.eclipse.core.commands",
com.app.editor.perspectives;uses:="org.eclipse.ui",
com.app.editor.views;
uses:="com.app.editor.beans,
org.eclipse.swt.widgets,
org.eclipse.swt.custom,
com.app.editor.functionalities,
org.eclipse.core.databinding,
org.eclipse.jface.viewers,
org.eclipse.ui.part"
Plugin.xml
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
id="application"
point="org.eclipse.core.runtime.applications">
<application>
<run
class="com.app.application.Application">
</run>
</application>
</extension>
<extension
point="org.eclipse.ui.perspectives">
<perspective
name="RCP Perspective"
class="com.app.editor.perspectives.Perspective"
id="com.app.Editor.perspective">
</perspective>
<perspective
class="com.app.editor.perspectives.NewFilePerspective"
id="com.app.Editor.newFileperspective"
name="New File Prespective">
</perspective>
<perspective
class="com.app.editor.perspectives.OpenFilePerspective"
id="com.app.Editor.openFileperspective"
name="Open File Perspective">
</perspective>
<perspective
class="com.app.editor.perspectives.CloseViewPerspective"
id="com.app.Editor.closeViewperspective"
name="Close View Prespective">
</perspective>
</extension>
<extension
point="org.eclipse.ui.commands">
<command
defaultHandler="com.app.editor.handlers.NewFileHandler"
id="com.app.Editor.New"
name="New">
</command>
<command
defaultHandler="com.app.editor.handlers.OpenHandler"
id="com.app.Editor.Open"
name="Open">
</command>
<command
defaultHandler="com.app.editor.handlers.ExitHandler"
id="com.app.Editor.commands.Exit"
name="Exit">
</command>
<command
defaultHandler="com.app.editor.handlers.CloseHandler"
id="com.app.Editor.close"
name="Close">
</command>
<command
defaultHandler="com.app.editor.handlers.AboutHandler"
description="About"
id="com.app.Editor.about"
name="About">
</command>
<command
defaultHandler="com.app.editor.handlers.SaveHandler"
id="com.app.Editor.Save"
name="Save">
</command>
<command
defaultHandler="com.app.editor.handlers.SaveAsHandler"
id="com.app.Editor.SaveAs"
name="Save As..">
</command>
</extension>
<extension
point="org.eclipse.ui.menus">
<menuContribution
allPopups="false"
locationURI="menu:org.eclipse.ui.main.menu">
<menu
id="fileMenu"
label="File">
<command
commandId="com.app.Editor.New"
label="New"
style="push">
</command>
<command
commandId="com.app.Editor.Open"
label="Open"
style="push">
</command>
<command
commandId="com.app.Editor.Save"
label="Save"
style="push">
</command>
<command
commandId="com.app.Editor.SaveAs"
label="Save As.."
style="push">
</command>
<command
commandId="com.app.Editor.close"
label="Close"
style="push">
</command>
<command
commandId="com.app.Editor.commands.Exit"
label="Exit"
style="push">
</command>
</menu>
<menu
id="helpMenu"
label="Help">
<command
commandId="com.app.Editor.about"
label="About"
style="push">
</command>
</menu>
</menuContribution>
</extension>
<extension
point="org.eclipse.ui.views">
<view
class="com.app.editor.views.OpenView"
id="com.app.Editor.openView"
name="OpenView"
restorable="true">
</view>
<view
class="com.app.editor.views.CloseView"
id="com.app.Editor.closeView"
name="CloseView"
restorable="true">
</view>
<view
allowMultiple="false"
class="com.app.editor.views.NewView"
id="com.app.Editor.newView"
name="NewView"
restorable="true">
</view>
<view
class="com.app.editor.views.TreeView"
id="com.app.Editor.treeView"
name="TreeView"
restorable="true">
</view>
</extension>
<extension
point="org.eclipse.ui.bindings">
</extension>
</plugin>
Build.properties
output.. = bin/
bin.includes = plugin.xml,\
META-INF/,\
library/,\
library/mariadb-java-client-1.2.3.jar
Extension point.
<extension
id="application"
point="org.eclipse.core.runtime.applications">
<application>
<run
class="com.app.application.Application">
</run>
</application>
</extension>
But, when I am trying to run this code, this gives an error -
!SESSION 2016-01-05 15:57:41.080 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.8.0_45
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US
Framework arguments: -application EditorApp.application
Command-line arguments: -application EditorApp.application -data C:\Srijani\Personal Workspace\RCP/../runtime-EditorApp.application -dev file:C:/Srijani/Personal Workspace/RCP/.metadata/.plugins/org.eclipse.pde.core/EditorApp.application/dev.properties -debug C:\Srijani\Personal Workspace\RCP\.metadata\.plugins\org.eclipse.pde.core\EditorApp.application/.options -os win32 -ws win32 -arch x86 -consoleLog
!ENTRY org.eclipse.osgi 2 0 2016-01-05 15:57:42.378
!MESSAGE com.app.application.Application cannot be found by EditorApp_1.0.0.qualifier
!STACK 0
java.lang.ClassNotFoundException: com.app.application.Application cannot be found by EditorApp_1.0.0.qualifier
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:432)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:568)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
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:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
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:648)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
!ENTRY org.eclipse.osgi 4 0 2016-01-05 15:57:42.378
!MESSAGE Application error
!STACK 1
org.eclipse.core.runtime.CoreException: Plug-in EditorApp was unable to load class com.app.application.Application.
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.throwException(RegistryStrategyOSGI.java:194)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:176)
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:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
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:648)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Caused by: java.lang.ClassNotFoundException: com.app.application.Application cannot be found by EditorApp_1.0.0.qualifier
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:432)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.eclipse.osgi.internal.framework.EquinoxBundle.loadClass(EquinoxBundle.java:568)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:174)
... 16 more
As you can already see that, class com.app.application.Application is the entry level class for this app EditorApp and it does exist. But, somehow , the application is not able to find it while running.
Is there any possible reasons for this one? Is it possible that the class is not getting loaded before it is getting called? If so, how I can Handle it?
I am using, Jdk 64 bit and Eclipse Luna.
Note: Updated MANIFEST
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: EditorApp
Bundle-SymbolicName: EditorApp;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Vendor: APP
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
com.ibm.icu,
org.eclipse.jface.databinding,
org.eclipse.core.databinding.property,
org.eclipse.core.databinding.observable,
org.eclipse.core.databinding.beans,
org.eclipse.core.databinding,
org.eclipse.core.resources;bundle-version="3.9.1"
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .,
library/mariadb-java-client-1.2.3.jar
Export-Package: com.app.editor;
uses:="org.osgi.framework,
org.eclipse.ui,
org.eclipse.jface.action,
org.eclipse.equinox.app,
org.eclipse.jface.resource,
org.eclipse.ui.application,
org.eclipse.ui.plugin",
com.app.editor.actions;uses:="org.eclipse.jface.action",
com.app.editor.beans,
com.app.editor.functionalities;
uses:="org.eclipse.swt.graphics,
org.eclipse.swt.widgets,
org.eclipse.jface.dialogs,
javax.swing.tree",
com.app.editor.handlers;uses:="org.eclipse.core.commands",
com.app.editor.perspectives;uses:="org.eclipse.ui",
com.app.editor.views;
uses:="com.app.editor.beans,
org.eclipse.swt.widgets,
org.eclipse.swt.custom,
com.app.editor.functionalities,
org.eclipse.core.databinding,
org.eclipse.jface.viewers,
org.eclipse.ui.part"
Upvotes: 2
Views: 2513
Reputation: 111216
The Bundle-Classpath
entry in the MANIFEST.MF looks wrong. Entries should be separated by commas. It should look something like:
Bundle-ClassPath: .,
lib/jogg-0.0.7.jar,
lib/jorbis-0.0.15.jar,
lib/vorbisspi1.0.2.jar
Use the 'Classpath' section on the 'Runtime' tab of the MANIFEST.MF editor to set this.
Your build.properties
should list the Lib/mariadb-java-client-1.2.3.jar
in the includes list, without this the jar will not be included in the plugin.
Is your plugin activator actually called EditorApp.Activator
? If this does not exist fix the activator package (or don't specify an activator).
Upvotes: 4