Eclipse 插件之间互相依赖, 导出Jar包安装, 报错“java.lang.NoClassDefFoundError”

在开发 插件A 与 插件 B 过程中, Plugin A 需要使用到 Plugin B 的某一个类 ClassB, 假设ClassB 位于 Plugin B  的PackageB 中,

那么需要在Plugin B 的manifest.mf 文件中添加:

Export-Package:  PackageB

并在Plugin B 的manifest.mf 文件中添加:

Import-Package:  PackageB

以此声明依赖关系。

分别导出两个插件的Jar包后,拷贝到Eclipse的/plugin 目录下后, 运行Eclipse, 发现两个插件能独立正常运转,但是当PlugA 调用ClassB时,系统报错:

 1 java.lang.NoClassDefFoundError: org/jboss/tools/vpe/browsersim/eclipse/launcher/BrowserSimLauncher
 2     at org.ayound.js.debug.launch.JsLaunchConfigurationDelegate.launch(JsLaunchConfigurationDelegate.java:101)
 3     at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:858)
 4     at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:707)
 5     at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1018)
 6     at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1222)
 7     at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
 8 Caused by: java.lang.ClassNotFoundException: org.jboss.tools.vpe.browsersim.eclipse.launcher.BrowserSimLauncher cannot be found by org.ayound.js.debug.core_2.2.0
 9     at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
10     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
11     at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
12     at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
13     at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
14     ... 6 more

PluginA(此例中是org.ayound.js.debug.core_2.2.0)找不到PluginB(此例中是org.jboss.tools.vpe.browsersim.eclipse)的ClassB(BrowserSimLauncher.class)!!

折腾了很久,找到了解决方法:启动eclipse 的时候加“-clean”选项

可以修改eclipse.ini文件 或者 命令行启动, 在windows平台下, 可以找到eclipse.exe, 右键创建快捷方式,再针对所创建的快捷方式图标点击右键 -> 属性 ->目标  一栏"...eclipse.exe" 后面加上"-clean", 双击快捷方式运行eclipse 即可。

为什么要以"-clean"的选项方式启动?

因为这样指明eclipse启动时所有关于插件的依赖关系都要重建而不是使用之前的缓存内容

请参考stackoverflow

时间: 2024-07-30 07:26:04

Eclipse 插件之间互相依赖, 导出Jar包安装, 报错“java.lang.NoClassDefFoundError”的相关文章

eclipse下执行wordcount报错 java.lang.ClassNotFoundException 解决办法

eclipse下执行wordcount报错 java.lang.ClassNotFoundException 17/08/29 07:52:54 INFO Configuration.deprecation: fs.default.name is deprecated. Instead, use fs.defaultFS 17/08/29 07:52:54 WARN util.NativeCodeLoader: Unable to load native-hadoop library for y

从无到有构建大型电商微服务架构(一),eclipse构建springcloud消费者方引起的问题(Caused by: java.lang.NoClassDefFoundError: feign/Feign$Builder)

1 2018-12-31 14:28:38.180 INFO 37860 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]a9cd3b1: startup date [Mon Dec 31 14:28:38 CST 2018]; root of context hierarchy 2 2018-12-31 14:28:38.519 INFO 37860 ---

Maven中日志jar包冲突报错:Class path contains multiple SLF4J bindings

错误表现: SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/D:/learn/Java/maven/repository_taotao/org/slf4j/slf4j-log4j12/1.6.4/slf4j-log4j12-1.6.4.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: Found binding in [

Tomcat JAR包冲突报错

查看Tomcat下有两个PDF加密的jar包如图: 删除这个bcprov-jdk14-138.jar包,然后重启Tomcat就好了. 注:问题不是我解决的,我只是记录一下 参考: http://blog.csdn.net/zhongweijian/article/details/46468589 http://bbs.csdn.net/topics/390659381 原文地址:https://www.cnblogs.com/lighthouse/p/8336301.html

MAVEN项目,Eclipse启动报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

由于是maven项目,tomcat在发布项目的时候没有同时发布maven依赖所添加的jar包,所以报此错误: 解决办法: 项目右键 —> 属性 -> Deployment Assembly -> Add -> Java Build Path Entries -> 选择Maven Dependencies -> Finish -> OK 把对应的Maven依赖包也发布到tomcat,调试时会自动把那些jar发布到指定目录下,tomcat也能找到那些jar

eclipse运行maven项目报错java.lang.ClassNotFoundException: xxxxxx

在eclipse中运行maven项目,出现异常--java.lang.ClassNotFoundException: org.apache.shiro.web.env.EnvironmentLoaderListener.如果确认shiro相关的依赖jar无误,那么可以试着如下操作: 右键项目--build path--configure build path...--deployment assembly--add--java build path entries--maven dependen

rpm包安装报错: Header V3 RSASHA256 Signature, key ID fd431d51 NOKEY

报错信息:Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY 一.问题场景 RHEL 6.5 安装MySQL-5.5.44 首先,卸载rpm -e mysql-libs dependencies:(会卸载下面五个包) cronie-1.4.4-12.el6.i686.rpm cronie-anacron-1.4.4-12.el6.i686.rpm crontabs-1.10-33.el6.noarch.rpm postfix-2.6.6-

Eclipse中启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法

首先需要双击tomcat server,如下图所示: 双击上图后会出现,tomcat配置的界面: 然后再点击上图的,红色矩形框的链接,会弹出tomcat参数配置的节面,要选择Arguments参数框: 如上图在VM arguments文本框内设置 -XX:MaxPermSize=256m的值即可, 当然此处还可以添加其他jvm参数,比如最大内存,最小内存等.

【转】Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)

原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添加进工作的build path.3.(关键的一步)将lib设为源文件夹.如果不设置,则程序编译可以通过,但运行的时候,会报: java.lang.NoClassDefFoundError # re: Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundErro