【问题标题】:Jenkins build failed on OSXJenkins 在 OSX 上构建失败
【发布时间】:2013-07-12 16:41:57
【问题描述】:

我正在尝试使用 Jenkins 构建我的项目以将工件部署到连接。我在我的 macOSX 上有一个 Jenkins 设置。 以下是错误,我得到了:

解析 POM

[maventest] $ /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -Xmx512m -XX:MaxPermSize=128m -Dfile.encoding=UTF-8 -cp /Users/Shared/Jenkins/Home/plugins/maven-plugin/WEB-INF/lib/maven3-agent-1.3.jar:/usr/共享/maven/boot/plexus-classworlds-2.4.jar org.jvnet.hudson.maven3.agent.Maven3Main /usr/share/maven /Users/Shared/Jenkins/Home/war/WEB-INF/lib/remoting-2.26.jar /Users/Shared/Jenkins/Home/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-1.3.jar 59985

频道已启动

频道已停止

错误:无法解析 POM java.io.IOException:远程调用 通往 Maven 的频道 [/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java, -Xmx512m, -XX:MaxPermSize=128m, -Dfile.encoding=UTF-8, -cp, /Users/Shared/Jenkins/Home/plugins/maven-plugin/WEB-INF/lib/maven3-agent-1.3.jar :/usr/share/maven/boot/plexus-classworlds-2.4.jar, org.jvnet.hudson.maven3.agent.Maven3Main, /usr/share/maven, /Users/Shared/Jenkins/Home/war/WEB-INF/lib/remoting-2.26.jar, /Users/Shared/Jenkins/Home/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-1.3.jar, 59985] 在 hudson.remoting.Channel.call(Channel.java:727) 失败 hudson.maven.ProcessCache$MavenProcess.call(ProcessCache.java:156) 在 hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:770) 在 hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:586) 在 hudson.model.Run.execute(Run.java:1593) 在 hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:491) 在 hudson.model.ResourceController.execute(ResourceController.java:88) 在 hudson.model.Executor.run(Executor.java:247) 引起: java.lang.InternalError:无法连接到窗口服务器 - 还不够 权限。在 java.lang.ClassLoader$NativeLibrary.load(Native 方法)在 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(Native Method) 在 java.awt.Toolkit.loadLibraries(Toolkit.java:1605) 在 java.awt.Toolkit.(Toolkit.java:1627) 在 java.awt.Color.(Color.java:263) 在 hudson.util.ColorPalette.(ColorPalette.java:39) 在 hudson.model.BallColor.(BallColor.java:56) 在 hudson.model.Result.(Result.java:51) 在 java.lang.Class.forName0(本机方法)在 java.lang.Class.forName(Class.java:171) 在 com.sun.proxy.$Proxy8.(Unknown Source) at sun.reflect.GeneratedSerializationConstructorAccessor41.newInstance(未知 来源)在 java.lang.reflect.Constructor.newInstance(Constructor.java:513) 在 java.io.ObjectStreamClass.newInstance(ObjectStreamClass.java:929) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1759) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1327) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1969) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1775) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1327) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:349) 在 java.util.HashMap.readObject(HashMap.java:1030) 在 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) 在 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:979) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1775) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1327) 在 java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1969) 在 java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1775) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1327) 在 java.io.ObjectInputStream.readObject(ObjectInputStream.java:349) 在 hudson.remoting.UserRequest.deserialize(UserRequest.java:182) 在 hudson.remoting.UserRequest.perform(UserRequest.java:98) 在 hudson.remoting.UserRequest.perform(UserRequest.java:48) 在 hudson.remoting.Request$2.run(Request.java:326) 在 hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) 在 java.lang.Thread.run(Thread.java:680) 完成:失败

我已经尝试了以下解决方案,但没有奏效: http://jenkins-ci.361315.n4.nabble.com/JIRA-Created-HUDSON-5584-java-io-IOException-Remote-call-on-Channel-to-Maven-td1475049.html

我的配置:

MAVEN_OPTS:-Xmx1024m -XX:MaxPermSize=128m -Dfile.encoding=UTF-8 -Djava.awt.headless=true

ps -ef 的输出 | grep java:/usr/bin/java -Djava.awt.headless=true -jar /Applications/Jenkins/jenkins.war

构建命令:clean deploy -DaltDeploymentRepository=central::default::http://<user>:<pwd>@<host>:<port>/nexus/content/groups/public/

【问题讨论】:

    标签: maven-2 jenkins


    【解决方案1】:

    我使用的解决方案是应用 Java 7。您要做的是将 1.7 添加到 Jenkins。按照这些步骤,我能够成功构建我的项目:

    1. 转到 Oracle Java 页面并下载适用于 Mac 的 1.7_51 jdk。
    2. 打开 dmg 并运行可执行文件。
    3. 在 Mac 上,这会将 JDK 安装到 /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/
    4. 在 Jenkins 中,转到“管理 Jenkins”>“配置系统”
    5. 在 JDK 标题下,单击 JDK Installations 按钮
    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. 运行构建

    执行此操作后,我的构建成功运行,没有“无法连接到窗口服务器 - 权限不足错误”。

    【讨论】:

      【解决方案2】:

      这行看起来很奇怪:

      hudson.model.Executor.run(Executor.java:247) Caused by: java.lang.InternalError:
      Can't connect to window server - not enough permissions. at java.lang.ClassLoader
      $NativeLibrary.load(Native Method) 
      

      我会从一个更简单的项目开始,然后从那一点开始增加复杂性,因为只是进行测试以确保您的基本假设是正确的。

      您可能需要设置 JVM 属性:-Djava.awt.headless=true。通过这样做,您将禁用(很可能是不必要的)试图加载的 gui 库。

      【讨论】:

      • 谢谢,关于它的任何其他想法......有人之前遇到过这个错误吗???
      • 啊。我想我可能知道这是什么。我更新了我的答案。
      • 谢谢!我还在等待答案:-)
      • 谢谢!正如我在第一篇文章中提到的,我已经尝试过 -Djava.awt.headless=true。但它仍然给我同样的错误。
      猜你喜欢
      • 1970-01-01
      • 2017-03-18
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 2014-04-16
      相关资源
      最近更新 更多