【问题标题】:Can not run Jenkins on Mac无法在 Mac 上运行 Jenkins
【发布时间】:2012-01-08 17:43:32
【问题描述】:

我已经从 Jenkins web site 下载了 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

我在/Applications/Jenkins 中找到了jenkins.war,并尝试使用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$6 onAttained
INFO: Started initialization
Nov 29, 2011 12:03:16 PM hudson.WebAppMain$2 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$2.run(WebAppMain.java:217)

由于错误消息显示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$6 onAttained
INFO: Started initialization
Nov 29, 2011 12:11:27 PM hudson.WebAppMain$2 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$2.run(WebAppMain.java:217)

但我收到Address already in use 错误消息,我尝试哪个端口都没有关系。

我已停止防火墙,以防万一(系统偏好设置 > 安全 > 防火墙 > 停止)。它没有帮助。

我已将jenkins.war 复制到/Users/zeljko/Jenkins 并尝试使用java -jar jenkins.war 和java -jar jenkins.war --httpPort=8081 运行它。相同的错误消息。

我已经从网站上下载了Latest and greatest (1.441) jenkins.war,将其移至/Users/zeljko/Jenkins,并尝试了java -jar jenkins.war 和java -jar jenkins.war --httpPort=8081。相同的错误消息。

环境:

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)

我正在浏览 Jenkins web site、wiki、book,四处寻找,但我只是不知道我必须做什么才能让它工作。

【问题讨论】:

  • 由于这不再相关(在当前版本中已修复,对吗?),您会考虑关闭此问题。就个人而言,我通过“brew install jenkins”让 Jenkins 轻松上手。
  • @akauppi:如何“关闭”堆栈溢出问题?
  • @akauppi:请随意移动您对某个答案的评论,如果它获得的票数超过当前接受的答案,我会将您的答案标记为已接受。

标签: macos continuous-integration hudson jenkins


【解决方案1】:

看起来错误是安装了 Mac OS X 原生包。我试过在我刚刚下载了jenkins.war 的机器上运行java -jar jenkins.war,它运行良好。现在来看看如何让原生包运行或卸载...

【讨论】:

【解决方案2】:

这解决了问题:

sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist

之后我可以在/Users/zeljko/Jenkins 运行java -jar jenkins.war。

来源:https://stackoverflow.com/a/8008901/17469

【讨论】:

    【解决方案3】:

    该问题似乎已添加到 Jenkins 的 Jira 中,希望很快得到解决:https://issues.jenkins-ci.org/browse/JENKINS-11714?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

    在我的 10.7.2 安装中,我通过创建缺少的主文件夹并更改 Jenkins 的所有者来使其工作。

    安装 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
    

    【讨论】:

    • 谢谢,我环顾四周时没有找到 Jira 票。
    • BTW ... 或 FWIT ... 最新的 Mac 安装程序会创建目录并创建一个名为 Jenkins 的隐藏用户,因此您无需执行此操作。但是...当目录不存在时,您仍然会收到相同的错误(即,如果您删除 /Users/Shared/Jenkins/Home )
    【解决方案4】:

    ajp 尝试在 8009 上监听。看起来您正在运行 tomcat(因此 8080 和 8009 已被占用)。启动 Jenkins 时关闭 ajp。

    开始于:

    java -jar jenkins.war --httpPort=8081 --ajp13Port=-1
    

    【讨论】:

      【解决方案5】:

      这主要是由于8080端口被其他进程使用(大多数情况下是tomcat java进程)。 所以首先,你应该执行:

      lsof -i:8080
      

      然后杀死正在使用8080端口的进程。

      之后,再次执行您的命令。

      java -jar jenkins.war --httpPort=8081
      

      【讨论】:

        猜你喜欢
        • 2019-03-27
        • 2015-10-09
        • 2020-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-17
        相关资源
        最近更新 更多