ClassNotFoundException in plugin development Follow
I got started a idea development with Gradle as it says
I created the plugin with following dependencies
compile group: 'com.github.spullara.mustache.java', name: 'compiler', version: '0.9.3'
compile group: 'io.github.swagger2markup', name: 'swagger2markup', version: '1.3.1'
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.44'
The plugin worked well while compiling,but ClassNotFoundException happened during debugging.
Here is the error stack:
org.apache.commons.configuration2.ex.ConfigurationRuntimeException: java.lang.ClassNotFoundException: org.apache.commons.configuration2.PropertiesConfiguration
at org.apache.commons.configuration2.beanutils.BeanHelper.fetchBeanClass(BeanHelper.java:549)
at org.apache.commons.configuration2.beanutils.BeanHelper.createBeanCreationContext(BeanHelper.java:616)
at org.apache.commons.configuration2.beanutils.BeanHelper.createBean(BeanHelper.java:456)
at org.apache.commons.configuration2.beanutils.BeanHelper.createBean(BeanHelper.java:479)
at org.apache.commons.configuration2.beanutils.BeanHelper.createBean(BeanHelper.java:492)
at org.apache.commons.configuration2.builder.BasicConfigurationBuilder.createResultInstance(BasicConfigurationBuilder.java:447)
at org.apache.commons.configuration2.builder.BasicConfigurationBuilder.createResult(BasicConfigurationBuilder.java:417)
at org.apache.commons.configuration2.builder.BasicConfigurationBuilder.getConfiguration(BasicConfigurationBuilder.java:285)
at org.apache.commons.configuration2.builder.fluent.Configurations.properties(Configurations.java:318)
at io.github.swagger2markup.builder.Swagger2MarkupConfigBuilder.getDefaultConfiguration(Swagger2MarkupConfigBuilder.java:135)
at io.github.swagger2markup.builder.Swagger2MarkupConfigBuilder.<init>(Swagger2MarkupConfigBuilder.java:74)
at io.github.swagger2markup.builder.Swagger2MarkupConfigBuilder.<init>(Swagger2MarkupConfigBuilder.java:59)
at io.terminus.common.util.pdoc.core.builder.SwaggerDocBuilder.build(SwaggerDocBuilder.java:42)
at io.terminus.common.util.pdoc.core.builder.BaseMarkDownDocBuilder.write(BaseMarkDownDocBuilder.java:20)
at io.terminus.common.util.pdoc.core.builder.BaseMarkDownDocBuilder.lambda$write$0(BaseMarkDownDocBuilder.java:24)
at java.util.ArrayList.forEach(ArrayList.java:1251)
at io.terminus.common.util.pdoc.core.builder.BaseMarkDownDocBuilder.write(BaseMarkDownDocBuilder.java:23)
at io.terminus.common.util.pdoc.core.SummaryWriter.lambda$accept$0(SummaryWriter.java:88)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1376)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
at io.terminus.common.util.pdoc.core.SummaryWriter.accept(SummaryWriter.java:88)
at io.terminus.common.util.pdoc.action.OutPutContentUI.doOKAction(OutPutContentUI.java:151)
at io.terminus.common.util.pdoc.action.PDocAction.lambda$actionPerformed$0(PDocAction.java:43)
at io.terminus.common.util.pdoc.action.MyDialogWrapper.doOKAction(MyDialogWrapper.java:40)
at com.intellij.openapi.ui.DialogWrapper$OkAction.doAction(DialogWrapper.java:1880)
at com.intellij.openapi.ui.DialogWrapper$DialogWrapperAction.actionPerformed(DialogWrapper.java:1840)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6548)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3325)
at java.awt.Component.processEvent(Component.java:6313)
at java.awt.Container.processEvent(Container.java:2237)
at java.awt.Component.dispatchEventImpl(Component.java:4903)
at java.awt.Container.dispatchEventImpl(Container.java:2295)
at java.awt.Component.dispatchEvent(Component.java:4725)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
at java.awt.Container.dispatchEventImpl(Container.java:2281)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4725)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
at java.awt.EventQueue.access$500(EventQueue.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:715)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:737)
at java.awt.EventQueue$4.run(EventQueue.java:735)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:781)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:718)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
at java.awt.Dialog.show(Dialog.java:1077)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:698)
at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:430)
at com.intellij.openapi.ui.DialogWrapper.invokeShow(DialogWrapper.java:1690)
at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1639)
at io.terminus.common.util.pdoc.action.PDocAction.actionPerformed(PDocAction.java:52)
at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:220)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:237)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher$1.performAction(IdeKeyEventDispatcher.java:620)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.lambda$processAction$2(IdeKeyEventDispatcher.java:669)
at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:195)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processAction(IdeKeyEventDispatcher.java:668)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.processActionOrWaitSecondStroke(IdeKeyEventDispatcher.java:520)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.inInitState(IdeKeyEventDispatcher.java:475)
at com.intellij.openapi.keymap.impl.IdeKeyEventDispatcher.dispatchKeyEvent(IdeKeyEventDispatcher.java:212)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:697)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:382)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.configuration2.PropertiesConfiguration
at com.intellij.util.lang.UrlClassLoader.findClass(UrlClassLoader.java:224)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.commons.lang3.ClassUtils.getClass(ClassUtils.java:909)
at org.apache.commons.lang3.ClassUtils.getClass(ClassUtils.java:975)
at org.apache.commons.lang3.ClassUtils.getClass(ClassUtils.java:958)
at org.apache.commons.configuration2.beanutils.BeanHelper.loadClass(BeanHelper.java:507)
at org.apache.commons.configuration2.beanutils.BeanHelper.fetchBeanClass(BeanHelper.java:545)
... 94 more
It seem like the IDEA loading the class org.apache.commons.configuration2.PropertiesConfiguration by its own classLoader , but there is no class like that in the IDEA PLUGIN SDK ?
I have tried many times to solve this problem, but I failed.
AS it says , I added my dependencies into IDEA PLUGIN SDK(not using gradle) .And it worked.
But once I installed the plugin on other Idea,it failed again!
The program works well without plugin project, and did not lack dependencies.
So what is the problem with my plugin , and how can I fix it?
thx
Please sign in to leave a comment.
Hi,
> I got started a idea development with Gradle as it says
What's your build.gradle?
> java.lang.ClassNotFoundException: org.apache.commons.configuration2.PropertiesConfiguration
The exception tells nothing. Where org.apache.commons.configuration2.PropertiesConfiguration comes from? From what dependencies, from what jar. Why do you think it should be available in the IDE?
What the version of the IDE you're building against? What's the version of IDE you're running the plugin in?
> But once I installed the plugin on other Idea,it failed again!
How did you build the plugin? How did you install it?
1. my build.gradle
2.1. PropertiesConfiguration comes from a jar(group:org.apache.commons name:commons-configuration2 version:2.1) which is the dependency of swagger2markup.
2.2. So I think it might be in my project and indeed it is in the External Liraries
2.3. The version when building and running is always '2018.2' ultimate
3.1. When I build this with gradle ,I use script 'gradle buildPlugin'
When I build this with DevKit , I press a button 'Build | Prepare Plugin Module <module name> for Deployment ' as the document says.
3.2. I install it by press a button 'install plugin from disk'
> 2.2. So I think it might be in my project and indeed it is in the External Liraries
When you built a plugin, does it contain commons-configuration.jar in it?
> 3.2. I install it by press a button 'install plugin from disk'
What file do you choose while installing plugin from disk?
No , building result is just one jar, and all I need is all in it because I add
in the build.gradle file
That jar.
I write a simple demo to show this problem
https://github.com/h2562961224/plugin-demo
And I meet another problem with the plugin
https://intellij-support.jetbrains.com/hc/en-us/community/posts/360001228419-How-to-run-shell-script-in-the-plugin
My dear Alexander,could you please help me to solve that problem by the way ?
Thank you very very very much!
> No , building result is just one jar, and all I need is all in it because I add
The result of `buildPlugin` is never jar, it is a zip with all dependencies. Likely, you just use the wrong plugin archive.
> And I meet another problem with the plugin
Have you tried to debug it using Remote run configuration?
emmm......what do you mean about "Remote run configuration". Is there any demo .....You know, I am just a beginner...Thanks a lot
Here are the instructions: https://stackoverflow.com/questions/21114066/attach-intellij-idea-debugger-to-a-running-java-process
You can set needed jvm args in `Help | Edit custom vm options` of IDE you want to debug, restart it and debug your plugin.
hello,what do you do to resolve this question?