9

32ビットJavaを搭載したWindows 7 64ビットにWindowsサービスとしてJenkins-1.464を初めてインストールしようとしています。ただし、実行すると例外がスローされます。

C:\Jenkins>java -jar jenkins.war --httpPort=8082
Running from: C:\Jenkins\jenkins.war
webroot: $user.home/.jenkins
May 16, 2012 4:48:04 PM winstone.Logger logInternal
INFO: Beginning extraction from war file
Jenkins home directory: C:\Users\Andrey\.jenkins found at: $user.home/.jenkins
May 16, 2012 4:48:04 PM winstone.Logger logInternal
INFO: HTTP Listener started: port=8082
May 16, 2012 4:48:04 PM winstone.Logger logInternal
INFO: Winstone shutdown successfully
May 16, 2012 4:48:04 PM winstone.Logger logInternal
SEVERE: Container startup failed
java.io.IOException: Failed to start a listener: winstone.ajp13.Ajp13Listener
        at winstone.Launcher.spawnListener(Launcher.java:229)
        at winstone.Launcher.<init>(Launcher.java:182)
        at winstone.Launcher.main(Launcher.java:384)
        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:273)
        at Main.main(Main.java:98)
Caused by: java.io.IOException: Failed to listen on port 8009
        at winstone.ajp13.Ajp13Listener.start(Ajp13Listener.java:89)
        at winstone.Launcher.spawnListener(Launcher.java:220)
        ... 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(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:84)
        ... 9 more
May 16, 2012 4:48:04 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.InitReactorRunner.run(InitReactorRunner.java:43)
        at jenkins.model.Jenkins.executeReactor(Jenkins.java:849)
        at jenkins.model.Jenkins.<init>(Jenkins.java:761)
        at hudson.model.Hudson.<init>(Hudson.java:81)
        at hudson.model.Hudson.<init>(Hudson.java:77)
        at hudson.WebAppMain$2.run(WebAppMain.java:217)
Exception in thread "pool-2-thread-2" java.lang.NullPointerException
        at org.jvnet.hudson.reactor.Reactor$1.run(Reactor.java:153)
        at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
Exception in thread "pool-2-thread-1" java.lang.NullPointerException
        at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:191)
        at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:94)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)

私はすでに試しました:

  • --httpPort コマンドラインオプションによる HTTP ポートの変更
  • jenkins.xml の --httpPort 引数を使用して HTTP ポートを変更する
  • Windows ファイアウォールをオフにする

しかし、それは問題を解決しません。

どうすれば修正できますか?

4

3 に答える 3

33

でジェンキンスを実行することで問題は解決し--ajp13Port=-1ます。Apache JServ Protocol v1.3 のリスナーを無効にします。ポートを未使用のものに変更することもできます。

実行後、java -jar jenkins.war --ajp13Port=-1 --httpPort=8082Jenkins は正常に起動し、次の方法でアクセスできますhttp://localhost:8082/

于 2012-05-16T21:38:29.630 に答える
2

最も有用なメッセージは次のとおりであることがわかりました。

Caused by: java.io.IOException: Failed to listen on port 8009

ご存じのとおり、これは典型的な Apache JServ Protocol AJP コネクタ ポートです。

実行netstat -ano中、Jenkins ではなく別のプロセスがこのポートでリッスンしていることがわかりました。私の場合、同僚が YouTrack をインストールしており、そのサービスは Jenkins の前に開始されていました。これはジェンキンスを不幸にしました。

YouTrack サービスを停止し、Jenkins を開始してから YouTrack を再起動したところ、全員が満足しました。

于 2012-05-18T16:22:18.357 に答える
2

jenkins.xml を更新して

<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war"  --ajp13Port=-1 --httpPort=8082</arguments>
于 2013-03-14T09:14:10.103 に答える