简体   繁体   中英

com.app.application.Application cannot be found by EditorApp_1.0.0.qualifier in Eclipse RCP

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"

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).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM