我们正在尝试通过 Hudson/Jenkins 为 RCP 应用程序构建 Eclipse PDE。到目前为止,我们在 Windows 机器(Hudson 在 Windows Server 2003 上运行)上成功地做到了这一点。我们决定将我们的 CI 系统转移到一台 unix 机器上。在 unix 机器上执行相同的构建时,我们的构建失败并出现以下错误:
!会话 2011-04-12 01:00:49.497 -------------------------------------------------- ---------
eclipse.buildId=未知
java.version=1.6.0_23
java.vendor=Sun Microsystems Inc.
BootLoader 常量:OS=win32、ARCH=sparc、WS=win32、NL=en_US
框架参数:-application org.eclipse.ant.core.antRunner -buildfile /appl/midw/jenkins/jobs/AP_NAPF/workspace/TP/plugins/org.eclipse.pde.build_3.4.1.R34x_v20081217/scripts/build.xml主要 -Ddummy=true
命令行参数:-ws win32 -os win32 -application org.eclipse.ant.core.antRunner -buildfile /appl/midw/jenkins/jobs/AP_NAPF/workspace/TP/plugins/org.eclipse.pde.build_3.4.1 .R34x_v20081217/scripts/build.xml 主数据 /appl/midw/jenkins/jobs/AP_NAPF/workspace/ap_build/workspace -Ddummy=true
!ENTRY org.eclipse.osgi 4 0 2011-04-12 01:00:58.961
!MESSAGE 自动激活捆绑包 org.eclipse.ui.workbench 时发生错误 (687)。
!堆栈 0
org.osgi.framework.BundleException:用于捆绑包 org.eclipse.ui.workbench 的激活器 org.eclipse.ui.internal.WorkbenchPlugin 无效
在 org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:146)
在 org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:980)
在 org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)
在 org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:265)
在 org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:400)
在 org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:111)
在 org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:427)
在 org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:193)
在 org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:370)
在 org.eclipse.osgi.framework.internal.core.SingleSourcePackage.loadClass(SingleSourcePackage.java:33)
在 org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:443)
在 org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:399)
在 org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:387)
在 org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
在 java.lang.ClassLoader.defineClass1(本机方法)
在 java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
在 java.lang.ClassLoader.defineClass(ClassLoader.java:616)
在 org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:165)
在 org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:554)
在 org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:524)
在 org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:455)
在 org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:443)
在 org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:423)
在 org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:193)
在 org.eclipse.osgi.framework.internal.core.BundleLoader.findLocalClass(BundleLoader.java:370)
在 org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:446)
在 org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:399)
在 org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:387)
在 org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
在 org.eclipse.osgi.framework.internal.core.BundleLoader.loadClass(BundleLoader.java:315)
在 org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:227)
在 org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:139)
在 org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:980)
在 org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:346)
在 org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:265)
在 org.eclipse.osgi.framework.util.SecureAction.start(SecureAction.java:400)
在 org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:234)
在 org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1274)
在 org.eclipse.ant.core.AntCorePreferences$WrappedClassLoader.findClass(AntCorePreferences.java:115)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:307)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
在 org.eclipse.ant.internal.core.AntClassLoader.loadClassPlugins(AntClassLoader.java:69)
在 org.eclipse.ant.internal.core.AntClassLoader.findClass(AntClassLoader.java:47)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:307)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
在 org.eclipse.ant.core.AntRunner.run(AntRunner.java:510)
在 org.eclipse.ant.core.AntRunner.start(AntRunner.java:600)
在 org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
在 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
在 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
在 org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
在 org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
在 java.lang.reflect.Method.invoke(Method.java:597)
在 org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
在 org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
在 org.eclipse.equinox.launcher.Main.run(Main.java:1236)
在 org.eclipse.equinox.launcher.Main.main(Main.java:1212)
引起:java.lang.NoClassDefFoundError: org/eclipse/swt/SWTError
在 java.lang.Class.getDeclaredConstructors0(本机方法)
在 java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
在 java.lang.Class.getConstructor0(Class.java:2699)
在 java.lang.Class.newInstance0(Class.java:326)
在 java.lang.Class.newInstance(Class.java:308)
在 org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:141)
... 61 更多
引起:java.lang.ClassNotFoundException:org.eclipse.swt.SWTError
在 org.eclipse.osgi.framework.internal.core.BundleLoader.findClassInternal(BundleLoader.java:483)
在 org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:399)
在 org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:387)
在 org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:87)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)
... 67 更多
根异常:
java.lang.NoClassDefFoundError: org/eclipse/swt/SWTError
迁移到新的基础设施后,我已经尝试了几件事,但无济于事:
bootclasspath使用该属性为 PDE 构建使用不同的 rt.jar(来自 Windows JRE) 。- 将
-os命令行参数更改为:solaris
是否有可能在 Unix 机器上为 Windows 应用程序进行 RCP 构建?如果是,在启动 PDE 构建时是否需要更改任何参数?
注意:我们使用pluginbuilder来设置 PDE 构建。