前提・実現したいこと
現在vpsのubuntu 22.04でwebアプリを開発したいと考えています。
最終的な目的はwebアプリを開発して公開までの流れを知ることです。
そこで、サーブレットをコンパイルするとするとエラーが起きます。
フォルダ構成は以下のようになっています。
/opt/apache-tomcat-10.0.23/webapps/myapps/
WEB-INF/classes/myapps/bmicalc/BmiServlet.java
色々と試している中で、コード自体に問題があるのではなく実行環境に問題があるのではないかと考えています。
どのようにすればコンパイルがうまくいくか教えていただけると幸いです。
発生している問題・エラーメッセージ
/opt/apache-tomcat-10.0.23/webapps/myapps/WEB-INF/classes/myapps/bmicalc$ javac BmiServlet.java BmiServlet.java:4: error: package jakarta.servlet does not exist import jakarta.servlet.ServletException; ^ BmiServlet.java:5: error: package jakarta.servlet.annotation does not exist import jakarta.servlet.annotation.WebServlet; ^ BmiServlet.java:9: error: cannot find symbol public class BmiServlet extends HttpServlet { ^ symbol: class HttpServlet BmiServlet.java:11: error: cannot find symbol protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ ^ symbol: class HttpServletRequest location: class BmiServlet BmiServlet.java:11: error: cannot find symbol protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ ^ symbol: class HttpServletResponse location: class BmiServlet BmiServlet.java:11: error: cannot find symbol protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ ^ symbol: class ServletException location: class BmiServlet BmiServlet.java:6: error: package jakarta.servlet.http does not exist import jakarta.servlet.http.*; ^ BmiServlet.java:10: error: method does not override or implement a method from a supertype @Override ^ BmiServlet.java:26: error: cannot find symbol this.getServletContext().getRequestDispatcher("/bmicalc/bmi_result.jsp").forward(request,response); ^ symbol: method getServletContext() 9 errors
ソースコード
BmiServlet.java
1package myapps.bmicalc; 2 3import java.io.IOException; 4import jakarta.servlet.ServletException; 5import jakarta.servlet.annotation.WebServlet; 6import jakarta.servlet.http.*; 7 8//@WebServlet("/chap06/BmiServlet") urlはweb.xmlの方で定義してあります。 9public class BmiServlet extends HttpServlet { 10@Override 11protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ 12double hcm=Double.parseDouble(request.getParameter("height"));//height label 13double w=Double.parseDouble(request.getParameter("weight"));//weight label 14 15double hm=hcm/100; 16double bmi=w/(hm*hm); 17request.setAttribute("bmi",bmi); 18if(bmi<18.5){ 19 request.setAttribute("rank","痩せ気味"); 20 }else if(bmi<25){ 21 request.setAttribute("rank","標準"); 22 }else{ 23 request.setAttribute("rank","肥満気味"); 24 } 25 26 this.getServletContext().getRequestDispatcher("/bmicalc/bmi_result.jsp").forward(request,response); 27} 28} 29
試したこと
・ubuntu、tomcatの再起動
・クラスパスの設定
printenvコマンドにより、設定した後CLASSPATHを確認しましたが特に問題ないように感じています。(色々いじっているうちに無駄に追加してしまったものもあります。)
CLASSPATH=/opt/apache-tomcat-10.0.23/lib/servlet-api.jar:/opt/apache-tomcat-10.0.23/lib/jsp-api.jar:.:/opt/apache-tomcat-10.0.23/webapps/myapps/WEB-INF/classes/myapps/bmicalc:/opt/apache-tomcat-10.0.23/webapps/myapps/WEB-INF/classes/myapps:/opt/apache-tomcat-10.0.23/webapps/myapps/WEB-INF/classes
また、windows、tomcat10.0.20の環境ではコンパイルでき、実行できることまで確認しています。(windowsからzipでフォルダごと転送したため間違いありません。)
クラスファイル(.class)もその際に入れてあったのですが、うまく動作しなかったためコンパイルし直したところエラーが起きました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー