Spark plugin problem

I am trying to learn a simple plugin which is going to add new menu item,

++++++++++++++++++

package org.jivesoftware.sparkimpl.plugin.locgroups;

public void initialize() {

JMenu locPluginMenu = new JMenu(“New Menu”);

SparkManager.getMainWindow().getJMenuBar().add(locPluginMenu);

//final JMenu actionsMenu = SparkManager.getMainWindow().getMenuByName(“Spark”);

JMenuItem locGroupsMenu = new JMenuItem(“My Profile”, SparkRes.getImageIcon(SparkRes.MEGAPHONE_16x16));

ResourceUtils.resButton(locGroupsMenu , “&My Profile”);

locPluginMenu.add(locGroupsMenu );

}

++++++++++++++++++

My src file is under

Spark\target\sparkplugs\builder\src\org\jivesoftware\sparkimpl\plugin\locroups

My plugin.xml is,

++++++++++++++++++

++++++++++++++++++

Then I tried to use spark to build the plugin, it is compiled. If I run the .\Spark\target\sparkplugs\spark\bin\startup I will get the ClassNotFound error when loading my plugin class.

Aug 27, 2006 2:36:03 AM org.jivesoftware.spark.util.log.Log error

SEVERE: Unable to load plugin org.jivesoftware.sparkimpl.plugin.locgroups.

java.lang.ClassNotFoundException: org.jivesoftware.sparkimpl.plugin.locgroups

at java.net.URLClassLoader$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at org.jivesoftware.spark.PluginManager.loadPublicPlugin(PluginManager.java:241)

at org.jivesoftware.spark.PluginManager.loadPlugins(PluginManager.java:171)

at org.jivesoftware.spark.Workspace$4.finished(Workspace.java:258)

at org.jivesoftware.spark.util.SwingWorker$2$1.run(SwingWorker.java:139)

at java.awt.event.InvocationEvent.dispatch(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

If I use the build file ANT run I got the following,

Exception in thread “Thread-2” java.lang.UnsatisfiedLinkError: no tray in java.library.path

at java.lang.ClassLoader.loadLibrary(Unknown Source)

at java.lang.Runtime.loadLibrary0(Unknown Source)

at java.lang.System.loadLibrary(Unknown Source)

at org.jdesktop.jdic.tray.internal.impl.GnomeSystemTrayService.(Unknown Source)

at org.jdesktop.jdic.tray.internal.impl.ServiceManagerStub.getService(Unknown Source)

at org.jdesktop.jdic.tray.internal.ServiceManager.getService(Unknown Source)

at org.jdesktop.jdic.tray.SystemTray.(Unknown Source)

at org.jivesoftware.spark.component.Notifications.(Notifications.java:86)

at org.jivesoftware.spark.SparkManager.getNotificationsEngine(SparkManager.java:20 6)

at org.jivesoftware.spark.Workspace.buildLayout(Workspace.java:191)

at org.jivesoftware.LoginDialog.startSpark(LoginDialog.java:711)

at org.jivesoftware.LoginDialog.access$600(LoginDialog.java:72)

at org.jivesoftware.LoginDialog$LoginPanel$1.construct(LoginDialog.java:490)

at org.jivesoftware.spark.util.SwingWorker$2.run(SwingWorker.java:132)

at java.lang.Thread.run(Unknown Source)

Please help,

Thanks,

— Your plugin.xml must define de class name of the plugin, not only the package.

org.jivesoftware.sparkimpl.plugin.locgroups**.LocClass**

Your plugin class must implement every Plugin Interface methods.

Your plugin fileName must match with the class Name thas it contains.

  • If not works show us your full class implementations.

it works well, thanks a lot,:slight_smile:

Hi,

Actually I am new to this forum, I did not know I should check the button.:slight_smile: I am glad to do it. Actually I appreciate the anwer very much. You are really helpful.

Thanks again,

Sorry I am really new to this forum and I got the following error when I tried to mark the answer as correct. Just FYI.

500 Servlet Exception

java.lang.IllegalStateException: Correct answer already set to message:

127679

at com.jivesoftware.forum.database.DbQuestion.setCorrectAnswer(DbQuestion.java:229 )

at com.jivesoftware.forum.proxy.QuestionProxy.setCorrectAnswer(QuestionProxy.java: 132)

at com.jivesoftware.forum.action.RateMessageAction.execute(RateMessageAction.java: 113)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.ja va:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvoca tion.java:364)

at com.opensymphony.xwork.DefaultActionInvocation.invokeActionOnly(DefaultActionIn vocation.java:216)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:190)

at com.jivesoftware.base.action.interceptor.FlashInterceptor.intercept(FlashInterc eptor.java:40)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.doIntercept(Defau ltWorkflowInterceptor.java:168)

at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilt erInterceptor.java:86)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.opensymphony.xwork.validator.ValidationInterceptor.doIntercept(ValidationIn terceptor.java:115)

at com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilt erInterceptor.java:86)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundIntercepto r.java:31)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.jivesoftware.base.action.interceptor.JiveObjectLoaderInterceptor.intercept( JiveObjectLoaderInterceptor.java:55)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundIntercepto r.java:31)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundIntercepto r.java:31)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.opensymphony.webwork.interceptor.FileUploadInterceptor.intercept(FileUpload Interceptor.java:171)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.jivesoftware.base.action.interceptor.JiveLoginInterceptor.intercept(JiveLog inInterceptor.java:41)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundIntercepto r.java:31)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundIntercepto r.java:31)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.opensymphony.xwork.interceptor.I18nInterceptor.intercept(I18nInterceptor.ja va:151)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundIntercepto r.java:31)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.jivesoftware.forum.action.ForumsInterceptor.intercept(ForumsInterceptor.jav a:183)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.jivesoftware.base.action.interceptor.AuthInterceptor.intercept(AuthIntercep tor.java:44)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.jivesoftware.forum.action.LocaleInterceptor.intercept(LocaleInterceptor.jav a:94)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundIntercepto r.java:31)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundIntercepto r.java:31)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.intercept(Except ionMappingInterceptor.java:186)

at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.j ava:188)

at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:113)

at com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUti ls.java:233)

at com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(FilterDispatcher. java:200)

at com.jivesoftware.base.action.util.JiveFilterDispatcher.doFilter(JiveFilterDispa tcher.java:54)

at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70 )

at com.jivesoftware.util.SetResponseCharacterEncodingFilter.doFilter(SetResponseCh aracterEncodingFilter.java:56)

at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70 )

at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:11 8)

at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52)

at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70 )

at com.jivesoftware.base.util.webwork.JiveActionContextCleanUp.doFilter(JiveAction ContextCleanUp.java:63)

at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70 )

at com.jivesoftware.util.SetRequestCharacterEncodingFilter.doFilter(SetRequestChar acterEncodingFilter.java:72)

at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70 )

at com.jivesoftware.base.util.MaintenanceFilter.doFilter(MaintenanceFilter.java:83 )

at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70 )

at com.jivesoftware.forum.upgrade.UpgradeFilter.doFilter(UpgradeFilter.java:46)

at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70 )

at com.jivesoftware.base.util.ApplicationInitializedFilter.doFilter(ApplicationIni tializedFilter.java:66)

at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:70 )

at com.caucho.server.cache.CacheFilterChain.doFilter(CacheFilterChain.java:188)

at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:163)

at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:208 )

at com.caucho.server.hmux.HmuxRequest.handleRequest(HmuxRequest.java:396)

at com.caucho.server.port.TcpConnection.run(TcpConnection.java:363)

at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:490)

at com.caucho.util.ThreadPool.run(ThreadPool.java:423)

at java.lang.Thread.run(Thread.java:595)