我有一个不运行的RCP产品.然后我新安装了Eclipse,当我打开Eclipse.exe时它没有打开Eclipse IDE.我收到错误:NoClassDefFoundError:com/mercury/javashared/agentloader/AgentBootstrap(请参阅下面的完整描述).
系统安装了最新的jdk,jre.这个错误的原因是什么?(PS:当在另一台机器上解压缩时,同样的eclipse可以正常工作).我可以在那里运行eclipse和我的eclipse rcp产品)
!ENTRY org.eclipse.osgi 4 0 2009-06-25 10:40:19.468 !MESSAGE Application error !STACK 1 java.lang.NoClassDefFoundError: com/mercury/javashared/agentloader/AgentBootstrap at org.eclipse.swt.widgets.Display.(Display.java:393) at org.eclipse.ui.internal.Workbench.createDisplay(Workbench.java:448) at org.eclipse.ui.PlatformUI.createDisplay(PlatformUI.java:161) at org.eclipse.ui.internal.ide.IDEApplication.createDisplay(IDEApplication.java:122) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:75) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:78) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:400) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:177) 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.core.launcher.Main.invokeFramework(Main.java:336) at org.eclipse.core.launcher.Main.basicRun(Main.java:280) at org.eclipse.core.launcher.Main.run(Main.java:977) at org.eclipse.core.launcher.Main.main(Main.java:952) Caused by: java.lang.ClassNotFoundException: com.mercury.javashared.agentloader.AgentBootstrap at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:402) at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:347) at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:83) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) ... 17 more
更新: 我在机器上安装了QTP(Quick Test Pro).当我卸载QTP时,我能够同时使用RCP产品和Eclipse.exe.
现在,QTP和Eclipse之间的关系是什么?我希望两者共存.
然后我新安装了Eclipse,当我打开Eclipse.exe时它没有打开Eclipse IDE
在另一台机器上解压缩时,相同的eclipse存档工作正常
这应该意味着一个工作空间问题:eclipse尝试重新创建一个缺少jar的视图.
尝试用'-clean'选项启动你的eclipse,并确保它引用一个全新的工作区(带有-data
选项,如eclipse.ini中所示)
这个问题说明了一个干净的开始
eclipse.exe -clean --launcher.ini path\to\my_eclipse.ini
关于QTP,请查看IBM的这篇文章,其中描述了类似的情况.
在此方案中,安装了HP Mercury Quick Test Pro Professional v9.3,并且存在以下Microsoft Windows XP用户和系统环境变量:
IBM_JAVA_OPTION and _JAVA_OPTION
每个都设置为:
-Xrunjvmhook -Xbootclasspath/a:C:\PROGRA~1\HP\QUICKT~1\bin\JAVA_S~1\classes;C:\PROGRA~1\HP\QUICKT~1\bin\JAVA_S~1\classes\jasmine.jar
或更明确地:
-Xrunjvmhook -Xbootclasspath/a:C:\PROGRA~1\HP\QuickTest Professional\bin\java_shared\classes;C:\PROGRA~1\HP\QuickTest Professional\bin\java_shared\classes\jasmine.jar
注意:HP Mercury Diagnostic Tool是另一种过去使用这些环境变量的产品.如果需要对其产品进行最新信息和支持,请与HP支持部门联系.
然而,重要的是要强调重点是这些环境变量被任何供应商产品或任何软件或用户危险地使用,通常直接设置它们
解决问题
删除或清除IBM_JAVA_OPTION
和_JAVA_OPTION
变量的值.删除/清除环境变量后,应该可以启动Rational Application Developer或其他基于IBM SDK for Java(== JDK)的产品.
注意:删除或清除这些变量可能会阻止其他产品(例如上述HP产品)工作.
警告:如果需要这些设置,则删除或清除或更改
IBM_JAVA_OPTION
或_JAVA_OPTION
应谨慎操作.这些环境变量有合法且安全的用途来设置JVM选项.
如果情况确实如此,这让我想起了我对这个问题的回答:
" 为什么Java SDK安装程序没有设置JAVA_HOME? "
;)
如果你想让eclipse和QTP共存,你需要确保你可能拥有的任何运行配置(在eclipse之内或之外)需要运行"with"QTP是设置这些额外变量的脚本(_JAVA_HOME或其他).
如果这些变量是全局设置的(通过QTP安装过程本身)......可能会发生不好的事情.