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

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

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

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Q&A

1回答

600閲覧

Javaファイルがコンパイルできない&パスの前にLREがつき、startup.batを起動できない。

lukiita

総合スコア0

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

0グッド

0クリップ

投稿2024/05/16 12:58

編集2024/05/17 11:15

実現したいこと

①コンパイルできるようにする方法を知りたいです。
②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指定をするのはやや面倒に思いました。より楽な方法があれば教えていただきたいです。
イメージ説明

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

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

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

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

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

jimbe

2024/05/16 13:42

コンパイルしようとしているのは JSP で無く java ですよね?
lukiita

2024/05/16 13:44

すいません、Javaでした。きちんと理解できていなくて申し訳ないです。
jimbe

2024/05/17 03:48

java ファイルの入力には何をご利用でしょうか。 Windows のメモ帳を使うと、ファイルの先頭に BOM と呼ばれる"見えないデータ"が付与され、それが問題になったことが過去にもあります。 また、 java ファイルは基本的に文字コード UTF-8 で保存してください。 メモ帳をご利用で、ファイル保存時に "UTF-8(BOM無し)" みたいな指定が出来るようでしたらそれで保存してください。 出来ないようでしたら、他のエディタをご利用頂くしか無いでしょう。
dodox86

2024/05/17 04:54

@質問者 lukiitaさん 質問文中では"LRE"と称していますが、画像をみると’\'(円)マークがバックスラッシュで表示されているので、日本語文字列が化けて表示されているのではないでしょうか。この画面は、Windows 10などでのコマンドプロンプトですか? chcpコマンドなどでコードページを変えてしたりしませんか? YouTubeの動画を参考にされているとのことですが、このような場で第三者がそれら動画を全て観ることを求めるべきではないです。(<サポートセンターではないので、回答者らの負担が大きい) 基本的には第三者が問題を再現したり状況を理解できるよう、環境の詳細や手順をなるべく詳しく示しましょう。teratailに限ったことではないです。
dodox86

2024/05/17 05:04

> YouTubeの動画を参考にされているとのことですが、このような場で第三者がそれら動画を全て観ることを求めるべきではないです。 参考にした元ソースとしてURLを案内するのはもちろん有りです。が、動画とまったく同じ環境、手順で作業したとも限らない(<第三者には判断つかない)ので、その差を明らかにする為にもご自身の環境や手順を示した方がより良い、と言うことです。
lukiita

2024/05/17 06:54 編集

申し訳ありません。質問の仕方や時系列の説明など今後気を付けます。 JavaファイルはVScodeで編集しています。エンコーディングは既定のUTF-8です。 chcpコマンドは使用していません。windows11のコマンドプロンプト上の表記です。
jimbe

2024/05/17 07:43 編集

LRE とは何だろうと探してみたんですが、 Unicode の 202A がそれっぽい気がします。 これは文字列が左から右に記述されるものだというコントロールコードみたいなので普通に文字として表示するフォントが無く、スタンプみたいな表示になっているのではないでしょうか。 何処かでこれを入力してしまっているか、dodox86 さんの言われるように文字コード関係が何か食い違っている感じですね。 それと、コード自体の問題でコンパイル出来て居ないのに tomcat を交換したところで何も変わらないと思います。 先ずは「この文字(0xEF)は、エンコーディングwindows-31jに~」のエラーの解決を優先されては如何でしょうか。
lukiita

2024/05/17 11:07

LREの問題が解決しました。システム環境変数の編集からコマンドプロンプト上でLREがないものをコピーして設定しました。再起動しても変わらず正確なパスが設定されており、コマンドを使わず、ダブルクリックでstartup.batを作動させることが出来ました。ありがとうございます。エンコーディングの問題にあたりたいと思います。
lukiita

2024/05/17 14:16

コメントありがとうございます。⚪︎⚪︎を試したところ問題が解決しました! ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか?
jimbe

2024/05/18 07:01

上のコメントはテンプレートそのままでしょうか。 "⚪︎⚪︎" が分からないと誰のどのコメントなのか分からないです。
lukiita

2024/05/18 08:31

jimbeさんの「LREとは何だろうと探してみたんですが、、」のコメントです。
jimbe

2024/05/18 11:49

「エンコーディングの問題にあたりたい」のほうはどうなったのでしょう。
lukiita

2024/05/19 03:06

エンコーディングの問題は解決しました!
jimbe

2024/05/19 03:32

>エンコーディングの問題は解決しました! それは、質問の「解決方法」の部分のことでしょうか。 最後の「毎回encoding指定をするのはやや面倒に思いました。より楽な方法があれば…」というのは解決しなくても良いのでしょうか。 teratail は質問者自身が回答を書いてベストアンサーとすることで(自己)解決とすることも出来ます。「解決方法」として纏められるなら、自己解決として書かれたほうが良いように思いますが如何でしょう。
guest

回答1

0

エラーメッセージがご提示のコードと違うのでは無いでしょうか。
最後の 3 つが

FirstServlet.java:3: エラー: パッケージjakarta.servletは存在しません import jakarta.servlet.*; ^ FirstServlet.java:4: エラー: パッケージjakarta.servlet.httpは存在しません import jakarta.servlet.http.*; ^ FirstServlet.java:5: エラー: パッケージjakarta.servlet.annotationは存在しません import jakarta.servlet.annotation.*; ^

となっていて、 tomcat10 以上で使う jakarta パッケージの import が書かれていると言われていますが、ご提示のコードは javax パッケージです。


LRE とは何だろうと探してみたんですが、 Unicode の 202A がそれっぽい気がします。
これは文字列が左から右に記述されるものだというコントロールコードみたいなので普通に文字として表示するフォントが無く、スタンプみたいな表示になっているのではないでしょうか。
何処かでこれを入力してしまっているか、dodox86 さんの言われるように文字コード関係が何か食い違っている感じですね。


この LRE の出所元は何だろうということですが・・・例えば

不必要な制御文字への対処

という記事では、サイト内の文字列に LRE 等が付いていることがあるとされています。
CLASSPATH への設定に間違えないようにとサイトからコピペ等している間に入ってしまったのかも知れませんね。

投稿2024/05/16 17:59

編集2024/05/18 12:03
jimbe

総合スコア12942

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

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

lukiita

2024/05/17 00:28

今日朝再度確認したところエラーメッセージが異なっていました。 恐らくtomcat10を最初利用していたのでjakartaに変更したものを設定していました。 javaxに修正後のものを再度挙げなおしました。
jimbe

2024/05/17 03:44

なるべく質問と回答の流れが変わるような編集はしないようにしてください。 後からこの質問を見た方が、質問と回答(やコメント)が違うことを言っているとどういうことか分からなくなります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.42%

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

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

質問する

関連した質問