0

Mac OS X Mountain Lion システムで通常の ant 駆動の Jenkins ビルドでソナーを実行しようとしていますが、次の例外で失敗します。

.../main/custom_rules.xml:149: java.lang.InternalError: ウィンドウ サーバーに接続できません - 十分な権限がありません。
    java.lang.ClassLoader$NativeLibrary.load(ネイティブ メソッド) で
    java.lang.ClassLoader.loadLibrary0 (ClassLoader.java:1827) で
    java.lang.ClassLoader.loadLibrary (ClassLoader.java:1724) で
    java.lang.Runtime.loadLibrary0 (Runtime.java:823) で
    java.lang.System.loadLibrary (System.java:1045) で
    sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50) で
    java.security.AccessController.doPrivileged(ネイティブメソッド)で
    java.awt.Toolkit.loadLibraries (Toolkit.java:1605) で
    java.awt.Toolkit (Toolkit.java:1627) で
    sun.awt.AppContext$2.run(AppContext.java:240) で
    sun.awt.AppContext$2.run(AppContext.java:226) で
    java.security.AccessController.doPrivileged(ネイティブメソッド)で
    sun.awt.AppContext.initMainAppContext(AppContext.java:226) で
    sun.awt.AppContext.access$200 (AppContext.java:112) で
    sun.awt.AppContext$3.run(AppContext.java:306) で
    java.security.AccessController.doPrivileged(ネイティブメソッド)で
    sun.awt.AppContext.getAppContext(AppContext.java:287) で
    com.sun.jmx.trace.Trace.out (Trace.java:180) で
    com.sun.jmx.trace.Trace.isSelected(Trace.java:88) で
    com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.isTraceOn(DefaultMBeanServerInterceptor.java:1830) で
    com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:929) で
    com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:916) で
    com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:312) で
    com.sun.jmx.mbeanserver.JmxMBeanServer$2.run(JmxMBeanServer.java:1195) で
    java.security.AccessController.doPrivileged(ネイティブメソッド)で
    com.sun.jmx.mbeanserver.JmxMBeanServer.initialize(JmxMBeanServer.java:1193)
    com.sun.jmx.mbeanserver.JmxMBeanServer.(JmxMBeanServer.java:225) で
    com.sun.jmx.mbeanserver.JmxMBeanServer.(JmxMBeanServer.java:170) で
    com.sun.jmx.mbeanserver.JmxMBeanServer.newMBeanServer(JmxMBeanServer.java:1401)
    javax.management.MBeanServerBuilder.newMBeanServer(MBeanServerBuilder.java:93) で
    javax.management.MBeanServerFactory.newMBeanServer(MBeanServerFactory.java:311) で
    javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:214) で
    javax.management.MBeanServerFactory.createMBeanServer(MBeanServerFactory.java:175) で
    sun.management.ManagementFactory.createPlatformMBeanServer(ManagementFactory.java:302) で
    java.lang.management.ManagementFactory.getPlatformMBeanServer (ManagementFactory.java:504) で
    com.persistit.Persistit.registerMBean (Persistit.java:758) で
    com.persistit.Persistit.registerMXBeans (Persistit.java:735) で
    com.persistit.Persistit.initializeManagement (Persistit.java:654) で
    com.persistit.Persistit.initialize (Persistit.java:434) で
    org.sonar.batch.index.Caches.initPersistit (Caches.java:70) で
    org.sonar.batch.index.Caches.(Caches.java:53) で
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(ネイティブメソッド)
    sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:39) で
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) で
    java.lang.reflect.Constructor.newInstance (Constructor.java:513) で
    org.picocontainer.injectors.AbstractInjector.newInstance (AbstractInjector.java:145) で
    org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:342) で
    org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe (AbstractInjector.java:270) で
    org.picocontainer.injectors.ConstructorInjector.getComponentInstance (ConstructorInjector.java:364) で
    org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance (AbstractInjectionFactory.java:56) で
    org.picocontainer.behaviors.AbstractBehavior.getComponentInstance (AbstractBehavior.java:64) で
    org.picocontainer.behaviors.Stored.getComponentInstance (Stored.java:91) で
    org.picocontainer.DefaultPicoContainer.getInstance (DefaultPicoContainer.java:698) で
    org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:646) で
    org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:631) で
    org.picocontainer.parameters.BasicComponentParameter$1.resolveInstance(BasicComponentParameter.java:118) で
    org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:136) で
    org.picocontainer.injectors.SingleMemberInjector.getParameter (SingleMemberInjector.java:78) で
    org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments (ConstructorInjector.java:309) で
    org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335) で
    org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe (AbstractInjector.java:270) で
    org.picocontainer.injectors.ConstructorInjector.getComponentInstance (ConstructorInjector.java:364) で
    org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance (AbstractInjectionFactory.java:56) で
    org.picocontainer.behaviors.AbstractBehavior.getComponentInstance (AbstractBehavior.java:64) で
    org.picocontainer.behaviors.Stored.getComponentInstance (Stored.java:91) で
    org.picocontainer.DefaultPicoContainer.getInstance (DefaultPicoContainer.java:698) で
    org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:646) で
    org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:631) で
    org.picocontainer.parameters.BasicComponentParameter$1.resolveInstance(BasicComponentParameter.java:118) で
    org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:136) で
    org.picocontainer.injectors.SingleMemberInjector.getParameter (SingleMemberInjector.java:78) で
    org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments (ConstructorInjector.java:309) で
    org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335) で
    org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe (AbstractInjector.java:270) で
    org.picocontainer.injectors.ConstructorInjector.getComponentInstance (ConstructorInjector.java:364) で
    org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance (AbstractInjectionFactory.java:56) で
    org.picocontainer.behaviors.AbstractBehavior.getComponentInstance (AbstractBehavior.java:64) で
    org.picocontainer.behaviors.Stored.getComponentInstance (Stored.java:91) で
    org.picocontainer.DefaultPicoContainer.getInstance (DefaultPicoContainer.java:698) で
    org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:646) で
    org.picocontainer.DefaultPicoContainer.getComponent(DefaultPicoContainer.java:631) で
    org.picocontainer.parameters.BasicComponentParameter$1.resolveInstance(BasicComponentParameter.java:118) で
    org.picocontainer.parameters.ComponentParameter$1.resolveInstance(ComponentParameter.java:136) で
    org.picocontainer.injectors.SingleMemberInjector.getParameter (SingleMemberInjector.java:78) で
    org.picocontainer.injectors.ConstructorInjector$CtorAndAdapters.getParameterArguments (ConstructorInjector.java:309) で
    org.picocontainer.injectors.ConstructorInjector$1.run(ConstructorInjector.java:335) で
    org.picocontainer.injectors.AbstractInjector$ThreadLocalCyclicDependencyGuard.observe (AbstractInjector.java:270) で
    org.picocontainer.injectors.ConstructorInjector.getComponentInstance (ConstructorInjector.java:364) で
    org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.getComponentInstance (AbstractInjectionFactory.java:56) で
    org.picocontainer.behaviors.AbstractBehavior.getComponentInstance (AbstractBehavior.java:64) で
    org.picocontainer.behaviors.Stored.getComponentInstance (Stored.java:91) で
    org.picocontainer.DefaultPicoContainer.instantiateComponentAsIsStartable (DefaultPicoContainer.java:1033) で
    org.picocontainer.DefaultPicoContainer.addAdapterIfStartable(DefaultPicoContainer.java:1025) で
    org.picocontainer.DefaultPicoContainer.startAdapters (DefaultPicoContainer.java:1002) で
    org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:766) で
    org.sonar.api.platform.ComponentContainer.startComponents (ComponentContainer.java:87) で
    org.sonar.api.platform.ComponentContainer.execute (ComponentContainer.java:73) で
    org.sonar.batch.scan.ScanTask.scan (ScanTask.java:57) で
    org.sonar.batch.scan.ScanTask.execute (ScanTask.java:45) で
    org.sonar.batch.bootstrap.TaskContainer.doAfterStart (TaskContainer.java:80) で
    org.sonar.api.platform.ComponentContainer.startComponents (ComponentContainer.java:88) で
    org.sonar.api.platform.ComponentContainer.execute (ComponentContainer.java:73) で
    org.sonar.batch.bootstrap.BootstrapContainer.executeTask (BootstrapContainer.java:156) で
    org.sonar.batch.bootstrap.BootstrapContainer.doAfterStart (BootstrapContainer.java:144) で
    org.sonar.api.platform.ComponentContainer.startComponents (ComponentContainer.java:88) で
    org.sonar.api.platform.ComponentContainer.execute (ComponentContainer.java:73) で
    org.sonar.batch.bootstrapper.Batch.startBatch (Batch.java:86) で
    org.sonar.batch.bootstrapper.Batch.execute (Batch.java:68) で
    org.sonar.batch.Batch.execute (Batch.java:103) で
    org.sonar.ant.Launcher.execute (Launcher.java:78) で
    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.sonar.ant.SonarTask.delegateExecution (SonarTask.java:244) で
    org.sonar.ant.SonarTask.execute (SonarTask.java:193) で
    org.apache.tools.ant.UnknownElement.execute (UnknownElement.java:291) で
    sun.reflect.GeneratedMethodAccessor4.invoke (不明なソース) で
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) で
    java.lang.reflect.Method.invoke(Method.java:597) で
    org.apache.tools.ant.dispatch.DispatchUtils.execute (DispatchUtils.java:106) で
    org.apache.tools.ant.Task.perform (Task.java:348) で
    org.apache.tools.ant.Target.execute (Target.java:392) で
    org.apache.tools.ant.Target.performTasks (Target.java:413) で
    org.apache.tools.ant.Project.executeSortedTargets (Project.java:1399) で
    org.apache.tools.ant.Project.executeTarget (Project.java:1368) で
    org.apache.tools.ant.helper.DefaultExecutor.executeTargets (DefaultExecutor.java:41) で
    org.apache.tools.ant.Project.executeTargets (Project.java:1251) で
    org.apache.tools.ant.Main.runBuild (Main.java:811) で
    org.apache.tools.ant.Main.startAnt (Main.java:217) で
    org.apache.tools.ant.launch.Launcher.run (Launcher.java:280) で
    org.apache.tools.ant.launch.Launcher.main (Launcher.java:109) で

明らかに、Jenkins インスタンスをヘッドレスで実行して set を実行したいのですが-Djava.awt.headless=true、これは Jenkins が表示するシステム情報にも反映されています。それでも、動作を拒否し、例外はかなり不明確です。

他の誰かがこの問題に遭遇しましたか?

前もってありがとう、トーマス。

4

3 に答える 3

3

これは、Mac 上の Java 6 の一部のバージョンのバグです (明らかに 1.6.0_51 を使用)。詳細は次のとおりです。

回避策は、Java 7 にアップグレードすることです。

よろしく

于 2013-07-31T07:55:19.690 に答える
1

私は最近この問題に遭遇し、この質問に出くわしました。他の誰かがこれに遭遇した場合に備えて、おそらく詳しく説明すると思いました。私が使用した解決策は、Java 7 を適用することでした。「アップグレード」と言うのは少しあいまいです。やりたいことは、Jenkins に 7 を追加することです。次の手順に従って、プロジェクトを正常にビルドできました。

  1. Oracle Java ページに移動し、Mac 用の1.7_51 jdkをダウンロードします。
  2. dmg を開き、実行可能ファイルを実行しました。
  3. Mac では、JDK が /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/ にインストールされます。
  4. Jenkins で、[Manage Jenkins] > [Configure System] に移動します。
  5. JDK の見出しの下で、JDK のインストールというボタンをクリックします。
  6. 名前の下に「JDK 1.7.0_51」と入力します
  7. JAVA_HOME タイプ '/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/' の場合
  8. 保存を選択
  9. プロジェクトに移動し、[構成] を選択します。
  10. ページの上部近くに JDK ドロップダウンが表示されます。
  11. 「Jenkins の管理」で設定した JDK を選択します。
  12. ビルドを実行する

これを行った後、ビルドは「ウィンドウ サーバーに接続できません - 十分な権限がありません」エラーなしで正常に実行されました。

于 2014-03-18T04:31:10.177 に答える
0

-Djava.awt.headless=trueまた、JDK 6 を使用している場合 (および JDK 7 へのアップグレードがオプションではない場合) の回避策は、実行時に JVM オプションを追加することsonar-runnerです。

私は、この回避策をビルドステップを持つ Jenkins ビルドサーバーなどにうまく使用していsonar-runnerます。

于 2013-09-01T11:26:51.193 に答える