macos 无法在 Mac 上运行 Jenkins
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/8309844/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Can not run Jenkins on Mac
提问by ?eljko Filipin
I have downloaded Mac OS X native package from Jenkins web site, installed it, opened my browser at http://localhost:8080/and got error page with this text:
我已经从 Jenkins网站下载了 Mac OS X 本机包,安装了它,在http://localhost:8080/ 上打开我的浏览器并得到带有以下文本的错误页面:
Status Code: 404
Exception: Request URL / not found.<br><br>
Stacktrace:
Generated by Winstone Servlet Engine v0.9.10 at Tue Nov 29 12:00:52 CET 2011
I have found jenkins.war
in /Applications/Jenkins
and tried running it with java -jar jenkins.war
:
我发现jenkins.war
在/Applications/Jenkins
,并试图运行它java -jar jenkins.war
:
$ pwd
/Applications/Jenkins
$ ls
jenkins.war
$ java -jar jenkins.war
Running from: /Applications/Jenkins/jenkins.war
webroot: $user.home/.jenkins
[Winstone 2011/11/29 12:03:12] - Beginning extraction from war file
Jenkins home directory: /Users/zeljko/.jenkins found at: $user.home/.jenkins
[Winstone 2011/11/29 12:03:16] - Winstone shutdown successfully
[Winstone 2011/11/29 12:03:16] - Container startup failed
java.io.IOException: Failed to start a listener: winstone.HttpListener
at winstone.Launcher.spawnListener(Launcher.java:250)
at winstone.Launcher.<init>(Launcher.java:202)
at winstone.Launcher.main(Launcher.java:398)
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 Main._main(Main.java:268)
at Main.main(Main.java:96)
Caused by: java.io.IOException: Failed to listen on port 8080
at winstone.HttpListener.getServerSocket(HttpListener.java:117)
at winstone.HttpListener.start(HttpListener.java:70)
at winstone.Launcher.spawnListener(Launcher.java:241)
... 8 more
Caused by: java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)
at java.net.ServerSocket.bind(ServerSocket.java:328)
at java.net.ServerSocket.<init>(ServerSocket.java:194)
at java.net.ServerSocket.<init>(ServerSocket.java:150)
at winstone.HttpListener.getServerSocket(HttpListener.java:112)
... 10 more
Nov 29, 2011 12:03:16 PM jenkins.model.Jenkins onAttained
INFO: Started initialization
Nov 29, 2011 12:03:16 PM hudson.WebAppMain run
SEVERE: Failed to initialize Jenkins
java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:244)
at jenkins.model.Jenkins.executeReactor(Jenkins.java:816)
at jenkins.model.Jenkins.<init>(Jenkins.java:730)
at hudson.model.Hudson.<init>(Hudson.java:81)
at hudson.model.Hudson.<init>(Hudson.java:77)
at hudson.WebAppMain.run(WebAppMain.java:217)
Since the error message says Address already in use
I have tried running it on another port:
由于错误消息说Address already in use
我尝试在另一个端口上运行它:
$ java -jar jenkins.war --httpPort=8081
Running from: /Applications/Jenkins/jenkins.war
webroot: $user.home/.jenkins
[Winstone 2011/11/29 12:11:26] - Beginning extraction from war file
Jenkins home directory: /Users/zeljko/.jenkins found at: $user.home/.jenkins
[Winstone 2011/11/29 12:11:27] - HTTP Listener started: port=8081
[Winstone 2011/11/29 12:11:27] - Winstone shutdown successfully
[Winstone 2011/11/29 12:11:27] - Container startup failed
java.io.IOException: Failed to start a listener: winstone.ajp13.Ajp13Listener
at winstone.Launcher.spawnListener(Launcher.java:250)
at winstone.Launcher.<init>(Launcher.java:203)
at winstone.Launcher.main(Launcher.java:398)
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 Main._main(Main.java:268)
at Main.main(Main.java:96)
Caused by: java.io.IOException: Failed to listen on port 8009
at winstone.ajp13.Ajp13Listener.start(Ajp13Listener.java:92)
at winstone.Launcher.spawnListener(Launcher.java:241)
... 8 more
Caused by: java.net.BindException: Address already in use
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:383)
at java.net.ServerSocket.bind(ServerSocket.java:328)
at java.net.ServerSocket.<init>(ServerSocket.java:194)
at java.net.ServerSocket.<init>(ServerSocket.java:150)
at winstone.ajp13.Ajp13Listener.start(Ajp13Listener.java:87)
... 9 more
Nov 29, 2011 12:11:27 PM jenkins.model.Jenkins onAttained
INFO: Started initialization
Nov 29, 2011 12:11:27 PM hudson.WebAppMain run
SEVERE: Failed to initialize Jenkins
java.lang.InterruptedException
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:485)
at org.jvnet.hudson.reactor.Reactor.execute(Reactor.java:244)
at jenkins.model.Jenkins.executeReactor(Jenkins.java:816)
at jenkins.model.Jenkins.<init>(Jenkins.java:730)
at hudson.model.Hudson.<init>(Hudson.java:81)
at hudson.model.Hudson.<init>(Hudson.java:77)
at hudson.WebAppMain.run(WebAppMain.java:217)
But I get Address already in use
error message, it does not matter which port I try.
但是我收到Address already in use
错误消息,我尝试哪个端口都没有关系。
I have stopped Firewall, just in case (System Preferences > Security > Firewall > Stop). It did not help.
我已经停止了防火墙,以防万一(系统偏好设置 > 安全 > 防火墙 > 停止)。它没有帮助。
I have copied jenkins.war
to /Users/zeljko/Jenkins
and tried running it with java -jar jenkins.war
and java -jar jenkins.war --httpPort=8081
. The same error messages.
我已经复制jenkins.war
到/Users/zeljko/Jenkins
并尝试使用java -jar jenkins.war
and运行它java -jar jenkins.war --httpPort=8081
。同样的错误信息。
I have downloaded Latest and greatest (1.441) jenkins.warfrom the web site, moved it to /Users/zeljko/Jenkins
, and tried java -jar jenkins.war
and java -jar jenkins.war --httpPort=8081
. The same error messages.
我已经下载了最新和最伟大的(1.441)jenkins.war从网站,移动它/Users/zeljko/Jenkins
,并试图 java -jar jenkins.war
和java -jar jenkins.war --httpPort=8081
。同样的错误信息。
Environment:
环境:
Mac OS X 10.6.8
Mac OS X 10.6.8
$ java -version
java version "1.6.0_29"
Java(TM) SE Runtime Environment (build 1.6.0_29-b11-402-10M3527)
Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)
I am browsing Jenkins web site, wiki, book, searching around, but I just do not get what I have to do to get it working.
采纳答案by awulf
The issue appears to have been added to Jenkins' Jira, and hopefully will be fixed soon: https://issues.jenkins-ci.org/browse/JENKINS-11714?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
该问题似乎已添加到 Jenkins 的 Jira 中,希望很快得到修复:https://issues.jenkins-ci.org/browse/JENKINS-11714?page =com.atlassian.jira.plugin.system.issuetabpanels :all-tabpanel
On my 10.7.2 installation I've made it work by creating the missing Home folder and changing the owner of the Jenkins.
在我的 10.7.2 安装中,我通过创建缺少的 Home 文件夹并更改 Jenkins 的所有者使其工作。
After installing Jenkins, run the following commands:
安装 Jenkins 后,运行以下命令:
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
sudo mkdir -p /Users/Shared/Jenkins/Home
sudo chown -R daemon /Users/Shared/Jenkins
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
回答by ?eljko Filipin
This fixed the problem:
这解决了问题:
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
After that I could run java -jar jenkins.war
at /Users/zeljko/Jenkins
.
之后我可以java -jar jenkins.war
在/Users/zeljko/Jenkins
.
回答by zai
ajp tries to listen on 8009. It looks like you got tomcat running (hence 8080 and 8009 are already occupied). Turn ajp off when starting Jenkins.
ajp 尝试侦听 8009。看起来您正在运行 tomcat(因此 8080 和 8009 已被占用)。启动Jenkins时关闭ajp。
Start with:
从...开始:
java -jar jenkins.war --httpPort=8081 --ajp13Port=-1
回答by mainframer
This is mostly caused by the 8080 port is used by other process(in most case it's a tomcat java process). So at first, you should execute:
这主要是由于 8080 端口被其他进程使用(大多数情况下它是一个 tomcat java 进程)引起的。所以首先,你应该执行:
lsof -i:8080
Then kill the process who is using port 8080.
然后杀死使用端口 8080 的进程。
After that, execute your command again.
之后,再次执行您的命令。
java -jar jenkins.war --httpPort=8081
回答by ?eljko Filipin
Looks like the mistake was to install Mac OS X native package. I have tried running java -jar jenkins.war
on a machine where I just downloaded jenkins.war
, and it works fine. Now to see how to get the native package running or uninstalled...
看起来错误是安装了 Mac OS X 本机包。我试过java -jar jenkins.war
在我刚下载的机器上运行jenkins.war
,它工作正常。现在看看如何运行或卸载本机包...