4

Hudson/Jenkinsを介してRCPアプリケーションのEclipsePDEビルドを実行しようとしています。これまでのところ、Windowsマシン(Windows Server 2003で実行されているHudson)でこれを正常に実行していました。CIシステムをUNIXマシンに移行することを決定しました。UNIXマシンで同じビルドを実行すると、ビルドが失敗し、次のエラーが発生します。

!セッション2011-04-12 01:00:49.497 -------------------------------------- ---------
eclipse.buildId = unknown
java.version = 1.6.0_23
java.vendor =SunMicrosystemsInc。
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 main -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 main -data /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(ネイティブメソッド)で
    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

新しいインフラストラクチャに移行した後、私はすでにいくつかのことを試しましたが、役に立ちませんでした。

  • プロパティを使用したPDEビルドには、別のrt.jar(Windows JREからのもの)を使用しbootclasspathます。
  • コマンド-osライン引数を次のように変更します。solaris

UnixマシンでWindowsアプリケーションのRCPビルドを実行することは可能ですか?はいの場合、PDEビルドを起動するときにパラメーターを変更する必要がありますか?

注:PDEビルドのセットアップにはpluginbuilderを使用しています。

4

3 に答える 3

2

PDEビルドの実行に使用しているEclipse(つまり、org.eclipse.ant.core.antRunnerアプリケーション)は、ビルドサーバー環境で実行可能である必要があります。Unixマシンでビルドを実行しているとのことですが、wsパラメーターとosパラメーターはwin32に設定されています。したがって、UnixビルドサーバーでWindowsバージョンのEclipseを使用しているようです。Unix固有のフラグメントは通常、そこでは利用できないため、これは機能しません(たとえば、SWTに必要なため、クラスSWTErrorが見つかりません)。

ビルドサーバー(OS、ウィンドウシステム、プロセッサアーキテクチャ)の環境に固有のEclipseをeclipse.orgからダウンロードし、それを使用してPDEビルドを実行する必要があります。

于 2011-04-12T12:58:27.340 に答える
1

Eclipseデルタパックをダウンロードし、PDEビルドを開始する前にターゲットのEclipseに解凍します。

于 2011-04-12T12:47:24.880 に答える
0

ビルドを実行するために使用している日食を、ビルドと一緒に作成している日食のインストールから分離する必要があります。最初のものは、ビルドOSに対して正しい必要があります。PDEビルドの呼び出しを見てください。Eclipseのインストールとターゲットプラットフォームには別々のパラメーターがあります。

于 2011-04-12T13:25:12.210 に答える