2013-07-12 59 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. 運行構建

這樣做了以後,我的構建成功運行沒有「無法連接到窗口服務器 - 沒有足夠的權限錯誤。 「