質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

0回答

1939閲覧

NetBeans12.1とTomcat9でServletが実行できない

kamekameusagi

総合スコア1

NetBeans

NetBeansは Java、HTML5、PHP、C/C++のアプリケーションのフレームワーク、もしくは統合開発環境(NetBeans IDE)の両方を指します

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2020/12/20 00:23

概要

Windows 10にインストールしたNetBeans 12.1とTomcat 9.0.34でServletを実行できません。
NetBeansで[Java Web]-[Web Application」プロジェクトを作成し、そのまま編集せずに実行するとindex.htmlは正常に表示できますが(http://localhost:8080/WebApplication1/)、Sevletクラスを追加して、そのまま編集せずに実行してServletにアクセスする(http://localhost:8080/WebApplication1/NewServlet)とエラーとなります。
自動生成されたアノテーションは @WebServlet(name = "NewServlet", urlPatterns = {"/NewServlet"})となっています。
上記プロジェクトのデフォルト設定では、CATALINA_HOMEであるC:\apache-tomcat-9.0.34\webappsにデプロイされず、C:\apache-tomcat-9.0.34\conf\Catalina\localhostに自動生成されるWebApplication1.xmlファイルに記述されている場所が使用されます。

<?xml version="1.0" encoding="UTF-8"?> <Context docBase="C:\Users\kamekameusagi\Documents\NetBeansProjects\WebApplication1\build\web" path="/WebApplication1"/>

エラーメッセージ

20-Dec-2020 08:28:53.199 情報 [http-nio-8080-exec-131] org.apache.catalina.core.ApplicationContext.log サーブレット [NewServlet] を利用不可能にマークします 20-Dec-2020 08:28:53.200 重大 [http-nio-8080-exec-131] org.apache.catalina.core.StandardWrapperValve.invoke サーブレット [NewServlet] に例外を割り当てます java.lang.RuntimeException: at controller.NewServlet.<init>(NewServlet.java:1) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:151) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1042) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:761) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:373) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)

試したこと

作成されたwarファイルをCATALINA_HOMEであるC:\apache-tomcat-9.0.34\webappsにマニュアルでコピーすると正常に動作することから、CATALINA_HOME以外にあるクラスを正常に読み込めていない様子です。
生成されたNewServlet.classをNetBeansで確認したところ(右クリックしてproperties)、Runtime ClasspathにC:\Users\kamekameusagi\Documents\NetBeansProjects\WebApplication1\build\web\WEB-INF\classesが登録されていました。
ちなみに、プロジェクトに追加したJSPファイルには正常にアクセスすることができます。
色々調べたのですが、CATALINA_HOME以外の場所を使用するときには「ContextのdocBaseとpathに設定すること」としか記述がなく、正常に行われているようで、行き詰っています。
また、YouTubeで見つけたデモでは、DeployするときにDeploy先を聞くダイアログが表示されますが、私の環境では表示されません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問