Eclipse(Helios)は、有効なJSPコンテンツにエラーがあるとマークする場合があります。 <c:if>タグを使用すると、頻繁に破損するようです。たとえば、次のコンテンツのみを持つJSPの場合:
<%@ taglib prefix="c" uri="http://Java.Sun.com/jsp/jstl/core" %>
<html>
<body>
<c:if test="${1 == 1}">
something
</c:if>
</body>
</html>
コンパイル後、「問題」タブに次のエラーが表示されます。
コードは正常に実行されます。 JSPの検証に問題がありますか?.
コメントに基づいて、私はこれを修正したJSP検証の一部をオフにしました。
私は何かが欠けていて、これを修正する方法があったことを望んでいましたが、JSP検証がジャンクだと認めなければなりません。
さて、私はこのエラーを解決する方法を見つけました。これをMaven依存関係(pom.xml)に追加します。
<!-- dependency to fix JSPServletException -->
<dependency>
<groupId>org.Apache.Tomcat</groupId>
<artifactId>jsp-api</artifactId>
<version>6.0.32</version>
<scope>provided</scope>
</dependency>
役に立てば、コメントしてください。
私は同じ問題を抱えていた、問題はjsp-api
ライブラリでは、依存関係をpom(他の回答で説明されているように)に追加できます。またはtargetランタイムとEclipseは自動的にそのライブラリをクラスパスに追加します:
Project -> Properties -> Targeted Runtimes
サーバーを選択します。
修正するには:
-javax.servlet.jsp。*にはjsp-api.jarが必要です
-javax.servlet.http。*にはservlet-api.jarが必要です
これらのライブラリをJavaプロジェクトセットアップのビルドパスに追加する必要があります。これらのライブラリはTomcat/libディレクトリ(Tomcat 6.0の場合)にあります。
これは古い質問ですが、Mac OS XのJunoでもこれを取得できます。特に、ほとんどの場合、外部でファイルを変更し、Eclipseでプロジェクトを更新した後です。 JSPコメント内の単語の途中であっても、あらゆる種類の奇妙な場所に下線を引きます。
(おそらく?!) bug 376926 に関連している可能性があります。
Tomcat 7.0.xの場合、pomに次のものが必要です。
<properties>
<org.Apache.Tomcat.version>7.0.28</org.Apache.Tomcat.version>
</properties>
<dependencies>
<dependency>
<groupId>org.Apache.Tomcat</groupId>
<artifactId>Tomcat-jsp-api</artifactId>
<version>${org.Apache.Tomcat.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>
デプロイすべきではないEclipse依存関係の解決策は、UserLibraryコンテナーを追加し、それを依存プロジェクトに含めることです。
デプロイすべきではないすべての* .jarに対してこれを行うことができますが、Eclipseは検証目的でそれを必要とします。
もっと簡単な方法は
select the project -> Properties -> Java Build Path -> Libraries Tab
add Libraries
を選択します。そこからServer Runtime
を選択します。設定したすべてのサーバーランタイムが一覧表示されます。そこから、プロジェクトを関連付けたサーバーランタイムを選択します。
これにより、プロジェクトが再構築および再検証され、このゴーストエラーがすべて削除されます。
お役に立てれば。
プロジェクトのクラスパスを確認してください。プロジェクトにJSPライブラリがないため(「JspExceptionを解決できません」)、またはライブラリのバージョンがJSPコンパイラのバージョンと同じではないようです。
ライブラリは、アプリをデプロイするアプリケーションサーバーにデフォルトで含まれているため、デプロイ時にコードが完全に実行されます。ただし、Eclipse内部コンパイラーにライブラリーがない(またはバージョンが正しくない)場合、Eclipseエディターはアプリサーバーに存在しないエラーを表示します。
私は同じ問題を抱えていましたが、最終的に(Mavenを使用して)サーブレットAPIのバージョン2.3に切り替えることで動作するようになりました:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.3</version>
<scope>provided</scope>
</dependency>
どうやら2.4以降にはjavax.servlet.jspが組み込まれていません。 2.4以降を引き続き使用する場合は、別のパッケージでそのライブラリを見つけることができる場合があります。
クラスパスにjap-api.jarを含める必要があります。
私は同じ問題を抱えていましたが、jsp-api.jarとservlet-api.jarはすでにビルドパスにありました。 JSP Syntax Validatorを無効にしても同様に役に立ちませんでした。
代わりに、JSP Content Validatorを無効にして、構文検証を有効のままにしておく必要がありました。私はまだJSPにコードに下線を引いていますが、コンパイルエラーを示す赤い十字はありません、それがポイントです:)
Maven(m2eを使用)への移行中にも同じ問題が発生し、「javax.servlet.httpを解決できません」などのエラーが発生し、Springタグの未定義の警告が表示されます。最終的には、ビルド構成のJavaバージョン(v1.6)がファセット構成(v1.7)と同じではないためです。v1.7からv1.6への変更後、問題はなくなります。 。
あなたの多くが言及したように、問題はビルドパスと欠けているライブラリにあります。このビルドパスの問題に対する非常に簡単な修正が見つかりました。ソリューションは次のとおりです。Eclipseの「Java Build Path」の下で「Order and Export」タブに移動し、「Apache Tomcat v7.0」ライブラリ(またはEclipseでインストールしたTomcatのバージョン)がチェックされていることを確認します。これにより、問題が即座に修正されます。他の面倒はありません。 :-)
その場合でも検証をオフにする必要はありません。
jsp-api.jar
をビルドクラスパスに追加すると修正されます。 jsp-api.jar
はTomcat 5.xのcommon\lib
の下にあります
私にとっては、行を手動で入力しているときに、タグを閉じるまでエラーが発生しましたが、エラーが消えることはありませんでした。同様のコード行を見つけ、問題のあるコードを削除し、適切なコードをコピーして貼り付け、必要に応じてタグ内で変更を加えました。これ以上のエラーはありません!!!理想的なソリューションではありませんが、私にとってはうまくいきました。