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

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

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

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

1回答

398閲覧

〇〇 is only available with source level 〇〇 and above エラー

inu22

総合スコア2

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2024/05/12 02:57

編集2024/05/12 14:11

実現したいこと

エラーを解消してテキストブロックを使用したい

発生している問題・分からないこと

テキストブロックを使用しようとしたら下記のエラーメッセージが発生しました

エラーメッセージ

error

1The Java feature 'Text Blocks' is only available with source level 15 and above

該当のソースコード

String text = """ Hello World""";

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

設定 > コンパイラー で
コンパイラー準拠レベルを確認し、「21」であることを確認しました

追記:
・ワークスペース、プロジェクトの設定でJava21を利用していることを確認
・System.getProperty("java.version")で21.0.2と表示されることを確認
・プロジェクトのクリーンとビルド

補足

Mac OS
Eclipse

追記:Eclipse のバージョン2023-12 (4.30.0)

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

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

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

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

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

pecmm

2024/05/12 13:55

eclipseのバージョンはいくつですか?
guest

回答1

0

ベストアンサー

エラーメッセージにもある通り、テキストブロックが正式採用されたのはJava15以降です。テキストブロックを利用したいのであれば、対象のEclipseプロジェクトが準拠しているJDKのバージョンをJava15以降に変更する必要があります。

投稿2024/05/12 04:51

neko_the_shadow

総合スコア2324

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

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

neko_the_shadow

2024/05/12 05:21

提示していただいたURLはワークスペースの設定のようです。ワークスペースレベルの設定でJava21利用となっていても、プロジェクトレベルでは別のバージョンのJavaが利用されていることがあります。プロジェクトが利用するJDKの設定については、以下のURLを参考にしてください。 https://document.intra-mart.jp/library/ebuilder/public/e_builder_setup_guide/texts/jre/index.html#%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E8%A8%AD%E5%AE%9A-[java%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9%E3%83%BC]-[jdk%E6%BA%96%E6%8B%A0]
inu22

2024/05/12 11:19

ご回答ありがとうございます。 リンク先の4項目確認してみたのですが、4つともJava21でした。 また、System.getProperty("java.version")で確認しても21.0.2と出ました。
neko_the_shadow

2024/05/12 12:25 編集

①Java21であることを確認したプロジェクトでテキストブロックを利用していることを再確認してください。 ②プロジェクトのクリーンとビルドをすると、問題は解消しませんか?
inu22

2024/05/12 13:35

ご回答ありがとうございます。 ①Java21であることを確認したプロジェクトでテキストブロックを利用していることを再確認してください。  →Java21のプロジェクトでテキストブロックを利用していました。 ②プロジェクトのクリーンとビルドをすると、問題は解消しませんか?  →試してみましたが、同じ状態になりました。
neko_the_shadow

2024/05/12 14:54

①プロジェクトやワークスペースを作成しなおしても問題は解消しませんか? ②「テキストブロックを使用しようとしたら下記のエラーメッセージが発生しました」とありますが、具体的にどのような形でエラーメッセージは表示されていますか?
inu22

2024/05/12 22:29

ご回答ありがとうございます。 ①プロジェクトやワークスペースを作成しなおしても問題は解消しませんか?  →作り直してみましたが同じ状態でした。 ②「テキストブロックを使用しようとしたら下記のエラーメッセージが発生しました」とありますが、具体的にどのような形でエラーメッセージは表示されていますか?  →実行するとブラウザが開いて以下のメッセージが表示されました。 HTTPステータス 500 – Internal Server Error タイプ 例外報告 メッセージ JSPのクラスをコンパイルできません: 説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。 例外 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: JSPファイル: [/NewFile.jsp] の中の [12] 行目でエラーが発生しました The Java feature 'Text Blocks' is only available with source level 15 and above 9: <body> 10: 11: <% 12: String text = """ 13: Hello 14: World"""; 15: %> Stacktrace: org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102) org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:214) org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:513) org.apache.jasper.compiler.Compiler.compile(Compiler.java:402) org.apache.jasper.compiler.Compiler.compile(Compiler.java:372) org.apache.jasper.compiler.Compiler.compile(Compiler.java:356) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:396) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328) jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 注意 原因のすべてのスタックトレースは、サーバのログに記録されています。 Apache Tomcat/10.1.18
neko_the_shadow

2024/05/13 02:31

動的WebプロジェクトをTomcat10にデプロイしたところ、JSP上でテキストブロックが利用できないという話ですかね? Javaプロジェクトの話であると誤解していました… JSPはJSP用のエンジンで処理をしますが、Tomcat10で採用されているエンジンはJDK11準拠となっており、Java15以降に正式採用されたテキストブロックは処理できない可能性があります。 https://tomcat.apache.org/tomcat-10.1-doc/jasper-howto.html Tomcat11以降にあげると、JDK17対応のJSPエンジンとなるので、テキストブロックが利用できる可能性があります。 https://tomcat.apache.org/tomcat-11.0-doc/jasper-howto.html
inu22

2024/05/13 07:54

JSPエンジンのあたり理解できておりませんでした。 大変申し訳ありません。 Tomcat11を試してみようと思います。 Tomcat11で実行する方法が分からなかったので別で質問作成しています。 https://teratail.com/questions/s0rws6g222icuu
neko_the_shadow

2024/05/13 13:10 編集

Tomcat11はα版のため、Eclipseから利用できるかどうかはちょっとわからないですね… 未検証ですが、TomcatではJSPで利用するJavaのバージョンを変更することができるようです。 https://qiita.com/hibinohirokatsu/items/80563665baeae5ba01fe Eclipse Pleiadesを利用しているのであれば、<pleiades_install_dir>/tomcat/10/conf/web.xmlの設定を変更すればよいかと思います。
inu22

2024/05/13 23:32

ご回答ありがとうございます。 根本的なことが分かっておらず申し訳ないのですが、 compilerSourceVMとcompilerTargetVMの数字は何が入るのでしょうか。 リンク先にあった「1.8」と「17」、「21」は試してみたのですがうまくいきませんでした。
neko_the_shadow

2024/05/14 07:14

ソースコードが断片的にしか提供されていない状態ですし、Intel版Macの環境を用意することも難しいので、あとはご自身で調査いただけると助かります。Tomcatの仕様上、個別のアプリケーションに設定された/WEB-INF/web.xmlや/WEB-INF/tomcat-web.xmlを見る場合もあるようなので、そちらも確認されてはどうでしょうか?
inu22

2024/05/14 10:37

ご回答ありがとうございます。 上記の問題は直接は解決していませんが、JSPのエンジンの問題ということを教えていただき 本来の目的であるテキストブロックの使用という意味では サーブレット側に書けば問題なさそうだったので今回はそのようにしようと思います。 長らくお付き合いいただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.40%

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

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

質問する

関連した質問