Apache Tomcat 9がWindows 10で起動できない問題
Webサイトにアクセスして自動でボタンをポチポチするものを作ろうとしているけれど、Web系舐めていた。全然わからない。今までサーバー立ててApache入れるくらいでHTML少しいじって表示変わるの見てWeb系簡単だと思っていたのに動的なサイト作ろうと思ったらすごく難しかった。
やりたいことのためにApache Tomcatをインストールする必要がありそうだとわかったのでWindows 10にインストールしたらlocalhostにアクセスしても表示されない。exeでインストールするだけでできるものじゃなかった。
環境と使ったもの
Windows 10
apache-tomcat-9.0.20.exe
tomcat-native-1.2.21-openssl-1.1.1a-win32-bin
TCPView
問題
Tomcat 9をインストールしてブラウザからlocalhost:8080にアクセスしてもつながらない
やったこと
- jdk-11.0.3_windows-x64_bin.exeのインストール
- Tomcat 9のインストール
- 環境変数のユーザー変数に追加
JAVA_HOME
C:\Program Files\Java\jdk-11.0.3 - 環境変数のシステム変数に追加
Path
C:\Program Files\Java\jdk-11.0.3\bin
出たエラー
tomcatをインストールしたフォルダのlogsフォルダでcatalina.[日付].logを確認する。
NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED 10-Jun-2019 22:20:25.800 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/9.0.20 10-Jun-2019 22:20:25.803 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: May 3 2019 22:26:00 UTC 10-Jun-2019 22:20:25.803 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.20.0 10-Jun-2019 22:20:25.804 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Windows 10 10-Jun-2019 22:20:25.804 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 10.0 10-Jun-2019 22:20:25.804 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64 10-Jun-2019 22:20:25.804 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: C:\Program Files\Java\jdk-11.0.3 10-Jun-2019 22:20:25.804 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 11.0.3+12-LTS 10-Jun-2019 22:20:25.805 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Oracle Corporation 10-Jun-2019 22:20:25.805 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: C:\tomcat9 10-Jun-2019 22:20:25.805 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: C:\tomcat9 10-Jun-2019 22:20:25.814 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED 10-Jun-2019 22:20:25.814 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED 10-Jun-2019 22:20:25.815 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED 10-Jun-2019 22:20:25.815 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=C:\tomcat9\conf\logging.properties 10-Jun-2019 22:20:25.815 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 10-Jun-2019 22:20:25.816 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048 10-Jun-2019 22:20:25.817 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources 10-Jun-2019 22:20:25.818 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs= 10-Jun-2019 22:20:25.819 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=C:\tomcat9 10-Jun-2019 22:20:25.820 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=C:\tomcat9 10-Jun-2019 22:20:25.820 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=C:\tomcat9\temp 10-Jun-2019 22:20:25.822 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jdk-11.0.3\bin;C:\Windows\Sun\Java\bin;C:\Program Files\Java\jdk-11.0.3\bin;(一部省略)] 10-Jun-2019 22:20:26.064 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"] 10-Jun-2019 22:20:26.150 SEVERE [main] org.apache.catalina.util.LifecycleBase.handleSubClassException Failed to initialize component [Connector[HTTP/1.1-8080]] org.apache.catalina.LifecycleException: Protocol handler initialization failed at org.apache.catalina.connector.Connector.initInternal(Connector.java:983) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.core.StandardService.initInternal(StandardService.java:533) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:1059) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136) at org.apache.catalina.startup.Catalina.load(Catalina.java:584) at org.apache.catalina.startup.Catalina.load(Catalina.java:607) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:304) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:474) Caused by: java.net.BindException: Address already in use: bind at java.base/sun.nio.ch.Net.bind0(Native Method) at java.base/sun.nio.ch.Net.bind(Net.java:461) at java.base/sun.nio.ch.Net.bind(Net.java:453) at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:227) at java.base/sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:80) at org.apache.tomcat.util.net.NioEndpoint.initServerSocket(NioEndpoint.java:248) at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:222) at org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1119) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:1132) at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:557) at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:74) at org.apache.catalina.connector.Connector.initInternal(Connector.java:980) ... 13 more
エラー1
The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path
これはTomcat Native Connectorのtcnative-1.dllがないせいらしい。Tomcatの公式ページへ行き、Apache Tomcat® - Tomcat Native Downloads
から「Native 1.2.21 Windows Binaries zip (recommended) 」をダウンロードする。
解凍してtomcat-native-1.2.21-openssl-1.1.1a-win32-bin\bin\x64の中のtcnative-1.dllをTomcatをインストールしたbinフォルダに入れる。
なくても問題ないけれど、Tomcat9w.exeを起動してJavaタブのJava Optionsの一番下に追加する。
-Djava.library.path=c:\tomcat9\bin
エラー2
Caused by: java.net.BindException: Address already in use: bind
アドレス(localhost、127.0.0.1)が使われていると出る。Portの8080が使われているようなのでTCPViewというMicrosoftのツールで調べるとFirefoxのプロセスが8080でたくさんあったのでサーバーの設定を変更する。
Tomcatをインストールしたフォルダの中のconfフォルダにあるserver.xmlをテキストエディタで開き、Connector portを他とかぶらない適当な80などの値にする。
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
これでブラウザからlocalhostにアクセスするとTomcatのページが表示される。
参考
・Tomcat Native Connector - 1.2
Apache Tomcat® - Tomcat Native Downloads
・TCPView v3.05
TCPView for Windows - Windows Sysinternals | Microsoft Docs