実現したいこと
①コンパイルできるようにする方法を知りたいです。
②startup.batを起動する方法を知りたいです。
発生している問題・分からないこと
コンパイルを試みましたが、上手くいきません。またstartup.batファイルが動作しません。
スペック
プロセッサ AMD Ryzen 7 3700X 8-Core Processor 3.59 GHz
実装 RAM 16.0 GB
システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
試したこと・調べたこと
ecllipseのtomcatで挙動を確認後、apacheで変化があるのかを確認しようと試みました。apacheのtomcatを導入し、同様にフォルダ・ファイル、パスを設定し、startup.batの起動を試みました。
エラーメッセージ
eclipseのtomcatの場合
error
1C:\pleiades\2023-12\tomcat\9\webapps\javaweb\WEB-INF\classes>javac *.java 2FirstServlet.java:1: エラー: この文字(0xEF)は、エンコーディングwindows-31jにマップできません 3// ?シ斐▽縺ョ繝代ャ繧ア繝シ繧ク繧偵う繝ウ繝昴?シ繝? 4 ^ 5FirstServlet.java:1: エラー: この文字(0x83)は、エンコーディングwindows-31jにマップできません 6// ?シ斐▽縺ョ繝代ャ繧ア繝シ繧ク繧偵う繝ウ繝昴?シ繝? 7 ^ 8FirstServlet.java:1: エラー: この文字(0x88)は、エンコーディングwindows-31jにマップできません 9// ?シ斐▽縺ョ繝代ャ繧ア繝シ繧ク繧偵う繝ウ繝昴?シ繝? 10 ^ 11エラー3個
apacheのtomcatの場合
error
1C:\apache-tomcat-9.0.89\webapps\javaweb\WEB-INF\classes>java *.java 2エラー: メイン・クラス*.javaを検出およびロードできませんでした 3原因: java.lang.ClassNotFoundException: *.java
該当のソースコード
ソースコード一行目にて下記の忠告がありました。
FirstServlet.java is not on the classpath of project javaweb_eb30060e, only syntax errors are reported
Java
1// 4つのパッケージをインポート 2import java.io.*; 3import javax.servlet.*; 4import javax.servlet.http.*; 5import javax.servlet.annotation.*; 6 7@WebServlet("/first") 8public class FirstServlet extends HttpServlet { 9 public void doGet(HttpServletRequest req, HttpServletResponse res) 10 throws IOException, ServletException { 11 res.setContentType("text/html;charset=utf-8"); 12 PrintWriter out = res.getWriter(); 13 } 14}
補足
startup.batが作動しないため、CLASSPATHとCATALINA_PATHを確認したところ、パスの最初に小さい文字でLREと表記されていました。
echo %CLASSPATH% LRE.;C:\pleiades\2023-12\tomcat\9\lib\servlet-api.jar echo %CATALINA_HOME% LREC:\pleiades\2023-12\tomcat\9
その後LREがないパスをエクスプローラーからコピーしsetコマンドでそれぞれに設定するとLREがないパスの表記になりました。その後、startup.batは作動しました。しかしシャットダウンすると再びLREが先頭についたパスに戻っており、startup.batを作動できない状態です。
apacheをダウンロードして同様にパスを設定しましたが同じ現象が起きました。
同様にsetコマンド各々にLREがないパスを設定しました。その後startup.batファイルを作動させると動きました。
解決方法
startup.batの問題
システム環境変数の設定後に、コマンドプロンプト上でechoで確認するも間違ったものがそのままになっていました。一度プロンプトを閉じて、新しいコマンドプロントウィンドウを開き、echoでパスを確認するとLREのない正確なパスがでました。
コンパイルの問題
javacコマンドでコンパイルする際にencoding指定をすることでコンパイルできました。毎回encoding指定をするのはやや面倒に思いました。より楽な方法があれば教えていただきたいです。