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

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

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

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

1回答

7825閲覧

TomcatでJavaプログラムを作成すると、「パッケージjavax.servletは存在しません」のエラーが発生しました

Osat.Kaso

総合スコア17

Java

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2022/02/08 13:08

次の環境でテストをしています。
OS : Ubuntu20.04.3
Tomcat: 10.0.16
Java : 17.0.1

次の処理をしました。

1.「$HOME/apache-tomcat-10.0.16」のパスに、HP「https://tomcat.apache.org/」より、
Tomcat10.0.6のアプリをインストールしました。

2.「$HOME/apache-tomcat-10.0.16/webapps」のパス下に、「sample/WEB-INF/classes」パスを作成し、
下図のファイル「HelloTomcat.java」を作成しました。

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloTomcat extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { PrintWriter out = response.getWriter(); out.println("<html>"); out.println("HelloTomcat"); out.println("</html>"); out.close(); } }

3.Javaファイルのパスで、次のコマンドでコンパイルをしました。
javac -classpath $HOME/apache-tomcat-10.0.16/lib/servlet-api.jar HelloTomcat.java
すると、次のエラーが発生しました。

HelloTomcat.java:5: エラー: シンボルを見つけられません public class HelloTomcat extends HttpServlet { ^ シンボル: クラス HttpServlet HelloTomcat.java:6: エラー: シンボルを見つけられません public void doGet(HttpServletRequest request, ^ シンボル: クラス HttpServletRequest 場所: クラス HelloTomcat HelloTomcat.java:7: エラー: シンボルを見つけられません HttpServletResponse response) ^ シンボル: クラス HttpServletResponse 場所: クラス HelloTomcat HelloTomcat.java:8: エラー: シンボルを見つけられません throws IOException, ServletException { ^ シンボル: クラス ServletException 場所: クラス HelloTomcat HelloTomcat.java:2: エラー: パッケージjavax.servletは存在しません import javax.servlet.*; ^ HelloTomcat.java:3: エラー: パッケージjavax.servlet.httpは存在しません import javax.servlet.http.*; ^ エラー6個

尚、「$HOME/apache-tomcat-10.0.16/lib/servlet-api.jar」は存在していることは確認できています。

どうしてこうなるのか?
皆さんにご教授お願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

尚、「$HOME/apache-tomcat-10.0.16/lib/servlet-api.jar」は存在していることは確認できています。

問題は、中身でしょう。

$ jar tvf apache-tomcat-10.0.16/lib/servlet-api.jar | grep HttpServlet.class 9778 Fri Feb 01 00:00:00 JST 1980 jakarta/servlet/http/HttpServlet.class

パッケージ名が変更になったのではないでしょうか。

diff

1- import javax.servlet.*; 2- import javax.servlet.http.*; 3+ import jakarta.servlet.*; 4+ import jakarta.servlet.http.*;

.

書いてありますね。 https://tomcat.apache.org/download-10.cgi

Users of Tomcat 10 onwards should be aware that, as a result of the move from Java EE to Jakarta EE as part of the transfer of Java EE to the Eclipse Foundation, the primary package for all implemented APIs has changed from javax.* to jakarta.*. This will almost certainly require code changes to enable applications to migrate from Tomcat 9 and earlier to Tomcat 10 and later. A migration tool has been developed to aid this process.

投稿2022/02/08 14:15

編集2022/02/08 14:19
shiketa

総合スコア3971

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

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

Osat.Kaso

2022/02/10 11:37

shiketaさん。 あなたの指摘された修正を実行すると、エラーが解消しました。 ご教授、ありがとうございました。 ベストアンサーとさせてもらいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問