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

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

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

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

Java

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

Eclipse

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

627閲覧

JSTLを使おうとするとjspが例外になる

Riehlvelt_love

総合スコア44

JSP

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

Java

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

Eclipse

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2024/04/12 06:16

編集2024/04/12 06:22

実現したいこと

JSTLを使えるようにしたいです。お願いします。

前提

Eclipseにて、libにjakarta.servlet.jsp.jstl-3.0.1.jarとjakarta.servlet.jsp.jstl-api-3.0.0.jarを配置し、ビルドパスも設定しました。
イメージ説明
しかし、実行するとブラウザに下記のエラーメッセージが表示されます。

プロジェクトフォルダのリンク

エラーメッセージ

javax.servlet.ServletException: java.lang.NoClassDefFoundError: jakarta/servlet/jsp/tagext/TagLibraryValidator at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:332) at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:661) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:425) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:357) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:294) at chapter22.JSTL.doGet(JSTL.java:50) at javax.servlet.http.HttpServlet.service(HttpServlet.java:529) at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at tool.FilterMap.doFilter(FilterMap.java:37) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at tool.EcordingFilter.doFilter(EcordingFilter.java:30) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.base/java.lang.Thread.run(Thread.java:840) Caused by: java.lang.NoClassDefFoundError: jakarta/servlet/jsp/tagext/TagLibraryValidator at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2337) at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:810) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1293) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1141) at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2337) at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:810) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1293) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1141) at org.apache.jasper.compiler.TagLibraryInfoImpl.createValidator(TagLibraryInfoImpl.java:355) at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:195) at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:435) at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:493) at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1450) at org.apache.jasper.compiler.Parser.parse(Parser.java:144) at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:245) at org.apache.jasper.compiler.ParserController.parse(ParserController.java:106) at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:207) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:392) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:368) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:352) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327) ... 41 more Caused by: java.lang.ClassNotFoundException: jakarta.servlet.jsp.tagext.TagLibraryValidator at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1329) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1141) ... 71 more

該当のソースコード

JSTL.java

1package chapter22; 2 3import java.io.IOException; 4import java.io.PrintWriter; 5import java.util.List; 6 7import javax.servlet.RequestDispatcher; 8import javax.servlet.ServletException; 9import javax.servlet.annotation.WebServlet; 10import javax.servlet.http.HttpServlet; 11import javax.servlet.http.HttpServletRequest; 12import javax.servlet.http.HttpServletResponse; 13 14import bean.Product; 15import dao.ProductDAO; 16 17 18/** 19 * Servlet implementation class Attribute2 20 */ 21@WebServlet("/JSTL") 22public class JSTL extends HttpServlet { 23 private static final long serialVersionUID = 1L; 24 25 /** 26 * @see HttpServlet#HttpServlet() 27 */ 28 public JSTL() { 29 super(); 30 // TODO Auto-generated constructor stub 31 } 32 33 /** 34 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 35 */ 36 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 37 38 PrintWriter out=response.getWriter(); 39 40 try { 41 42 ProductDAO dao=new ProductDAO(); 43 List<Product> list=dao.search(""); 44 45 request.setAttribute("list", list); 46 47 RequestDispatcher dispatcher= 48 request.getRequestDispatcher("WEB-INF/jsp/JSTL.jsp"); 49 50 dispatcher.forward(request,response); 51 52 53 54 }catch(Exception e) { 55 e.printStackTrace(out); 56 } 57 58 } 59 60 /** 61 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 62 */ 63 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 64 // TODO Auto-generated method stub 65 doGet(request, response); 66 } 67 68} 69 70

JSTP.jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ include file="header.jsp" %> 4 5<%@ taglib prefix="c" uri="jakarta.tags.core" %> 6 <c:forEach var="p" items=${list} > 7 ${p.id}: ${p.name}: ${p.price} 8 </c:forEach>c:forEach > 9 10 <%@ include file="footer.jsp" %>

試したこと

jspの
<%@ taglib prefix="c" uri="jakarta.tags.core" %>に変えても同じエラーになります。

補足情報(FW/ツールのバージョンなど)

サーバー情報:Tomcat9_Java17

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

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

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

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

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

jimbe

2024/04/12 08:01

tomcat10 で動かしては如何でしょうか。
guest

回答1

0

ベストアンサー

※実際に行っての確認はしていません

stack overflow の記事 JSTLをインストールするにはどうすればよいですか? 「絶対 URI を解決できません」または「taglib が見つかりません」または NoClassDefFoundError または ClassCastException で失敗します。 の一番支持されている回答によれば、Tomcat10.1/10.0/9 の違いによって JSTL の jar を変える必要があるようです。

Tomcat 10.1.x への JSTL のインストール
(略
jakarta.servlet.jsp.jstl-api-3.0.0.jar (これは JSTL 3.0 API)
jakarta.servlet.jsp.jstl-3.0.1.jar (これは EE4J の JSTL 3.0.1 impl です)
(略

Tomcat 10.0.x への JSTL のインストール
(略
jakarta.servlet.jsp.jstl-api-2.0.0.jar (これは JSTL 2.0 API)
jakarta.servlet.jsp.jstl-2.0.0.jar (これは EE4J の JSTL 2.0 impl です)

Tomcat 9 への JSTL のインストール
(略
次の 2 つの物理ファイルを/WEB-INF/libWeb アプリケーション プロジェクトのフォルダーにドロップすることで同じことを実現できます ( standard*.jar や緩い .tld ファイルをそこにドロップしないでください。必要に応じて削除してください)。

jakarta.servlet.jsp.jstl-api-1.2.7.jar (これは JSTL 1.2 API)
jakarta.servlet.jsp.jstl-1.2.6.jar (これは EE4J の JSTL 1.2 impl です)

(by Google 翻訳)

投稿2024/04/12 17:31

編集2024/04/13 04:49
jimbe

総合スコア12942

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

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

Riehlvelt_love

2024/04/15 06:43

よく見たらitems=${list}をダブルクオーテーションで囲っていませんでした。 jarファイルについて教えてくださりありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.42%

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

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

質問する

関連した質問