我正在使用Jenkins,从昨天起它就停止了工作。我查看了Windows服务,它已被停止(不知何故)。我重新启动它,但它立即停止。
我查看了运行服务的目录(C:\ Program Files \ Jenkins)并打开了名为jenkins.out.log的日志文件。这就是它所说的
Running from: C:\Program Files\Jenkins\jenkins.war
webroot: EnvVars.masterEnvVars.get("JENKINS_HOME")
[Winstone 2012/05/17 10:14:42] - Beginning extraction from war file
Jenkins home directory: C:\Program Files\Jenkins found at: EnvVars.masterEnvVars.get("JENKINS_HOME")
[Winstone 2012/05/17 10:14:44] - Winstone shutdown successfully
[Winstone 2012/05/17 10:14:44] - 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(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
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: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at winstone.HttpListener.getServerSocket(HttpListener.java:112)
... 10 more
答案 0 :(得分:28)
已修复 - 对于将来可能遇到此问题的其他人。我使用了这个Techrepublic article,归结为
netstat -a -n -o | grep "8080"
找出如何找出哪个进程正在使用端口8080,然后在任务管理器中将其杀死,然后重新启动Jenkins,一切顺利(到目前为止!)。
答案 1 :(得分:17)
要在WinStone容器上启动Jenkins(与Jenkins war捆绑在一起的默认容器),请使用以下命令:
java -jar jenkins.war --ajp13Port=-1 --httpPort=9090
此外,要检查Windows中的任何应用程序是否正在使用某个端口:
netstat -ano | find "9090"
最好在Tomcat上运行Jenkins。
答案 2 :(得分:4)
与错误堆栈跟踪一样,提到端口8080已在使用中,检查端口8080的使用位置,或者将Jenkins.xml中的Jenkins端口更改为其他可用端口。
答案 3 :(得分:1)
java -jar jenkins.war --ajp13Port=-1 --httpPort=9090
这非常有用,我在安装 Jenkins 时遇到了不同的例外情况。
答案 4 :(得分:1)
请在此处输入以防万一-遇到同样的初始问题-端口8080被阻止。
如果您可以相信--windows存储在端口8080上运行并阻塞了我的Jenkins端口。 rr!
补救措施:
1)使用上面的@HenryHey答案来找到PID:netstat -a -n -o | grep“ 8080”
2)使用sysinternals proc资源管理器来查找将哪些程序注册到PID。
3)使用以下命令(@ Joy-Qiao找到的文章-谢谢)删除Windows store应用(使用powershell):Get-AppxPackage windowsstore | Remove-AppxPackage
注意:这是清除8080端口的一种相当激进的方法-更好的选择是将Jenkins移至另一个端口,但我感觉有些龙了。
答案 5 :(得分:0)
我遇到了类似的问题,尝试升级Jenkins,但是后来Windows服务无法启动,其他东西在端口8080上运行。原来是java.exe
的实例我在任务管理器中杀死它后的过程都开始很好地工作了。
答案 6 :(得分:-1)
java -jar jenkins.war --ajp13Port = -1 --httpPort = 9090
解决了我的问题