web-dev-qa-db-ja.com

神秘的なEclipse JSP検証エラー

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>

コンパイル後、「問題」タブに次のエラーが表示されます。

  • 互換性のないオペランドタイプStringおよびint line 1
  • javax.servlet.jsp.JspExceptionをタイプライン1に解決できません
  • javax.servlet.jsp.PageContextをタイプライン1に解決できません

コードは正常に実行されます。 JSPの検証に問題がありますか?.

49
worpet

コメントに基づいて、私はこれを修正したJSP検証の一部をオフにしました。

  1. 「プロジェクト->プロパティ->検証」に移動します。
  2. 「ワークスペース設定の構成...」をクリックします。
  3. JSP Syntax Validatorのオプションを選択解除します(手動とビルドの両方)。

私は何かが欠けていて、これを修正する方法があったことを望んでいましたが、JSP検証がジャンクだと認めなければなりません。

36
worpet

さて、私はこのエラーを解決する方法を見つけました。これを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 

サーバーを選択します。

21
rjcorujo

修正するには:
-javax.servlet.jsp。*にはjsp-api.jarが必要です
-javax.servlet.http。*にはservlet-api.jarが必要です

これらのライブラリをJavaプロジェクトセットアップのビルドパスに追加する必要があります。これらのライブラリはTomcat/libディレクトリ(Tomcat 6.0の場合)にあります。

5
Paranoja

これは古い質問ですが、Mac OS XのJunoでもこれを取得できます。特に、ほとんどの場合、外部でファイルを変更し、Eclipseでプロジェクトを更新した後です。 JSPコメント内の単語の途中であっても、あらゆる種類の奇妙な場所に下線を引きます。

(おそらく?!) bug 376926 に関連している可能性があります。

3
Xander Plooy

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>
2
scarba05

デプロイすべきではないEclipse依存関係の解決策は、UserLibraryコンテナーを追加し、それを依存プロジェクトに含めることです。

  1. Dir e.g/home/user */Eclipse-deps /を作成し、*/Tomcat/lib dirからjsp-api.jarをコピーします
  2. Eclipseでプロジェクトのプロパティ->ビルドパスに移動し、新しい「UserLibrary」を作成します。 IdeDeps。
  3. / home/user/Eclipse-deps /をIdeDepsライブラリに含め、jsp-api.jarに依存するすべてのプロジェクトにユーザーライブラリを含めます(クラスパス:<classpathentry kind = "con" path = "org.Eclipse.jdt。 USER_LIBRARY/IdeDeps "/>)

デプロイすべきではないすべての* .jarに対してこれを行うことができますが、Eclipseは検証目的でそれを必要とします。

2
kmajetic

もっと簡単な方法は

select the project -> Properties -> Java Build Path -> Libraries Tab

add Librariesを選択します。そこからServer Runtimeを選択します。設定したすべてのサーバーランタイムが一覧表示されます。そこから、プロジェクトを関連付けたサーバーランタイムを選択します。

これにより、プロジェクトが再構築および再検証され、このゴーストエラーがすべて削除されます。

お役に立てれば。

1
Jafar Ali

プロジェクトのクラスパスを確認してください。プロジェクトにJSPライブラリがないため(「JspExceptionを解決できません」)、またはライブラリのバージョンがJSPコンパイラのバージョンと同じではないようです。

ライブラリは、アプリをデプロイするアプリケーションサーバーにデフォルトで含まれているため、デプロイ時にコードが完全に実行されます。ただし、Eclipse内部コンパイラーにライブラリーがない(またはバージョンが正しくない)場合、Eclipseエディターはアプリサーバーに存在しないエラーを表示します。

1
Vivien Barousse

私は同じ問題を抱えていましたが、最終的に(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以降を引き続き使用する場合は、別のパッケージでそのライブラリを見つけることができる場合があります。

1
Christiaan

クラスパスにjap-api.jarを含める必要があります。

1
Vishal

私は同じ問題を抱えていましたが、jsp-api.jarservlet-api.jarはすでにビルドパスにありました。 JSP Syntax Validatorを無効にしても同様に役に立ちませんでした。

代わりに、JSP Content Validatorを無効にして、構文検証を有効のままにしておく必要がありました。私はまだJSPにコードに下線を引いていますが、コンパイルエラーを示す赤い十字はありません、それがポイントです:)

0
flawyte

Maven(m2eを使用)への移行中にも同じ問題が発生し、「javax.servlet.httpを解決できません」などのエラーが発生し、Springタグの未定義の警告が表示されます。最終的には、ビルド構成のJavaバージョン(v1.6)がファセット構成(v1.7)と同じではないためです。v1.7からv1.6への変更後、問題はなくなります。 。

0
deng hui

あなたの多くが言及したように、問題はビルドパスと欠けているライブラリにあります。このビルドパスの問題に対する非常に簡単な修正が見つかりました。ソリューションは次のとおりです。Eclipseの「Java Build Path」の下で「Order and Export」タブに移動し、「Apache Tomcat v7.0」ライブラリ(またはEclipseでインストールしたTomcatのバージョン)がチェックされていることを確認します。これにより、問題が即座に修正されます。他の面倒はありません。 :-)

その場合でも検証をオフにする必要はありません。

0
ChrisP

jsp-api.jarをビルドクラスパスに追加すると修正されます。 jsp-api.jarはTomcat 5.xのcommon\libの下にあります

0
jackxie

私にとっては、行を手動で入力しているときに、タグを閉じるまでエラーが発生しましたが、エラーが消えることはありませんでした。同様のコード行を見つけ、問題のあるコードを削除し、適切なコードをコピーして貼り付け、必要に応じてタグ内で変更を加えました。これ以上のエラーはありません!!!理想的なソリューションではありませんが、私にとってはうまくいきました。

0
user1668969