2013-07-12 82 views
1

我正在尝试使用Jenkins构建我的项目,将工件部署到连接点。我的macOSX上有一个Jenkins安装程序。下面 被错误,我得到:Jenkins在OSX上编译失败

解析的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/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

< === [JENKINS远程处理容量] ===>信道开始

信道停止

ERROR: Failed to parse POMs java.io.IOException: Remote call on Channel to 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] failed at hudson.remoting.Channel.call(Channel.java:727) at hudson.maven.ProcessCache$MavenProcess.call(ProcessCache.java:156) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:770) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:586) at hudson.model.Run.execute(Run.java:1593) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:491) at hudson.model.ResourceController.execute(ResourceController.java:88) at 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) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1827) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1724) at java.lang.Runtime.loadLibrary0(Runtime.java:823) at java.lang.System.loadLibrary(System.java:1045) at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Toolkit.loadLibraries(Toolkit.java:1605) at java.awt.Toolkit.(Toolkit.java:1627) at java.awt.Color.(Color.java:263) at hudson.util.ColorPalette.(ColorPalette.java:39) at hudson.model.BallColor.(BallColor.java:56) at hudson.model.Result.(Result.java:51) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:171) at com.sun.proxy.$Proxy8.(Unknown Source) at sun.reflect.GeneratedSerializationConstructorAccessor41.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.io.ObjectStreamClass.newInstance(ObjectStreamClass.java:929) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1759) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1327) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1969) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1775) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1327) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349) at java.util.HashMap.readObject(HashMap.java:1030) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:979) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1775) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1327) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1969) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1775) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1327) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:349) at hudson.remoting.UserRequest.deserialize(UserRequest.java:182) at hudson.remoting.UserRequest.perform(UserRequest.java:98) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:326) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) at java.lang.Thread.run(Thread.java:680) Finished: FAILURE

我已经尝试了下面的解决方案,但它没有工作: 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/

回答

0

这行看起来好奇:

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库。

+0

谢谢,任何其他的想法...是否有人经历过这个错误? –

+0

啊。我想我可能知道这是什么。我更新了我的答案。 – djangofan

+0

谢谢!我仍在等待答案:-) –

2

我使用的解决方案是应用Java 7.您想要做的是将Jenkins添加到1.7。遵循以下步骤,我能够成功构建我的项目:

  1. 转到Oracle Java页面并下载适用于Mac的1.7_51 jdk。
  2. 打开dmg并运行可执行文件。
  3. 在Mac上,该安装JDK到/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/
  4. 在詹金斯,转到“管理詹金斯”>“系统配置”
  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. 选择刚下配置的JDK“管理詹金斯”
  12. 运行构建

这样做了以后,我的构建成功运行没有“无法连接到窗口服务器 - 没有足够的权限错误。 “