18

CVSからインポートしたばかりのプロジェクトがあります。他の数十の開発者IDEで動作していますが、私の場合、問題が報告されています。

CHKJ3000E: WAR Validation Failed: com.ibm.etools.j2ee.commonarchivecore.exception.DeploymentDescriptorLoadException: WEB-INF/web.xml

これをグーグルで検索すると、Eclipseがコンテキストをロードする方法に問題があることがわかります。一部のユーザーにとっては、プロジェクトのクリーニングが機能します。それは私にはありませんでした。

それを解決するために次に何を試みることができるかについてのアイデアはありますか?

4

4 に答える 4

58

Eclipse>プロジェクトエクスプローラー>エラーのあるプロジェクトを右クリック>検証

ここに画像の説明を入力してください

それは私のために働いた!

いくつかのプロジェクトで同じエラーメッセージが表示され、それぞれで同じ手順を実行しましたが、すべて修正されました。

関連リンク: http: //viralpatel.net/blogs/eclipse-this-project-needs-to-migrate-wtp-metadata/

于 2014-04-22T18:53:20.760 に答える
7

これは一般的な問題でありcache、日食によって維持されているためです。

プラグインのキャッシュをクリアして完全にクリーンアップしてみてください。既存のサーバーを削除して新しいサーバーを作成することもできます。

詳細については、こちらを参照してください。同様の問題に直面している人々を参照してください。キャッシュをクリーンアップして削除し、このようなものを再起動することで解決しました。

于 2012-10-30T17:21:27.383 に答える
3

>検証オプション(上記を参照)は、次のビルドまでしか機能しないことがわかりました。ビルドの一部としての検証には(Webプロジェクトの場合)問題がある可能性が非常に高くなりますが、それ自体の検証は問題なく機能します。

この問題に対処するために、これは一貫した方法で私のために働いています:

プロジェクト>プロパティ>検証:Web(xxx)バリデーター

ここでは、ビルドを無効にしますが、手動は有効のままにします。

これで、新しいビルドがトリガーされたとき(たとえば、> Gradle> Refresh Gradle Projectを呼び出したとき)、プロジェクトは検証エラーを受け取りません。

于 2017-12-02T18:38:04.117 に答える
2

他のがすでに述べたように、このエラーはGradleで再発しているようです-プロジェクトがGradleによって更新されたとき、またはそれ以外の場合でも、Eclipseの外部で変更されたという理由だけで、 WARプラグインを使用するプロジェクトが何度も繰り返されます。Eclipseでプロジェクトを検証することは機能しますが、これはプロジェクトの次の更新までの一時的な回避策にすぎません。私は見つけたすべてのキャッシュをすでにクリーンアップしているので、これがそれらと関係があるのではないかと疑っています。

Eclipseのエラーのビューを見ると、利用可能な追加のスタックトレースがあり、状況が少し明確になっています。

org.eclipse.jst.j2ee.commonarchivecore.internal.exception.DeploymentDescriptorLoadException: WEB-INF/web.xml
Stack trace of nested exception:
org.eclipse.jst.j2ee.commonarchivecore.internal.exception.EmptyResourceException: platform:/resource/de.am_soft.sm_mtg.frontend/WEB-INF/web.xml
    at org.eclipse.jst.j2ee.commonarchivecore.internal.util.ArchiveUtil.getRoot(ArchiveUtil.java:442)
    at org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.XmlBasedImportStrategyImpl.primLoadDeploymentDescriptor(XmlBasedImportStrategyImpl.java:42)
    at org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.War22ImportStrategyImpl.loadDeploymentDescriptor(War22ImportStrategyImpl.java:90)
    at org.eclipse.jst.j2ee.commonarchivecore.internal.strategy.War22ImportStrategyImpl.importMetaData(War22ImportStrategyImpl.java:84)
    at org.eclipse.jst.j2ee.commonarchivecore.internal.impl.WARFileImpl.getDeploymentDescriptor(WARFileImpl.java:146)
    at org.eclipse.jst.j2ee.model.internal.validation.WarValidator.validateInJob(WarValidator.java:334)
    at org.eclipse.jst.j2ee.internal.web.validation.UIWarValidator.validateInJob(UIWarValidator.java:113)
    at org.eclipse.wst.validation.internal.operations.ValidatorJob.run(ValidatorJob.java:78)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)

platform:/resourceEclipseによって次のように文書化されています。

これは、ワークスペースにあるリソースを識別するために使用されます。「リソース」の次のパスセグメントはプロジェクトの名前である必要があり、その後に検索するフォルダーやファイルを続けることができます。

したがって、何らかの理由で、バリデーターはWEB-INF/web.xmlEclipseプロジェクトのルートで使用可能であることを期待していますが、これは私にはあまり意味がありません。過去に存在したことはなく、そこに配置してもエラーは解決されません。代わりに、Eclipseは追加のメッセージやスタックトレースなしで20個の新しいエラーをログに記録し、削除した後でもそれらを取り除くことができないためWEB-INF/web.xml、以前のプロジェクトの状態を復元します。

Eclipseプロジェクトのバグトラッカーでも同様のエラーが報告されています。

!ENTRY org.eclipse.wst.validation 4 0 2007-08-28 12:00:39.515
!MESSAGE 
*** ERROR ***: Tue Aug 28 12:00:39 EDT 2007    org.eclipse.jst.j2ee.commonarchivecore.internal.exception.DeploymentDescriptorLoadException: WEB-INF/web.xml
    Stack trace of nested exception:
    org.eclipse.jst.j2ee.commonarchivecore.internal.exception.EmptyResourceException: platform:/resource/ARBankLogWeb/WebContent/WEB-INF/web.xml

私のプロジェクトは、WARプラグインを使用してネイティブEclipseからGradleに移行されました。後者では、を手動で定義できますweb.xml。だから私はそれを試しましたが、何も変更しませんでした:

war
{
    webXml = file('src/main/webapp/WEB-INF/web.xml')
}

したがって、バリデーターの問題が一部のプロジェクトセットアップにある場合でも、現在確実に機能していることがわかる唯一の回避策は、プロジェクトごとにバリデーターを無効にすることです。

Webバリデーターを無効にしました。

これにより、Eclipseは、プロジェクトディレクトリ内にその設定を保存するローカル設定ファイルを作成し、プロジェクトの他の部分と同様にバージョン管理下に置くことができます。そうすれば、プロジェクトのすべてのユーザーが設定をすぐに利用できるようになります。以下は、私にとって物事がどのように見えるかの例です。

$ PROJECT_NAME.settings \ org.eclipse.wst.validation.prefs

DELEGATES_PREFERENCE=delegateValidatorList
USER_BUILD_PREFERENCE=enabledBuildValidatorListorg.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;
USER_MANUAL_PREFERENCE=enabledManualValidatorListorg.eclipse.jst.j2ee.internal.web.validation.UIWarValidator;org.eclipse.jst.j2ee.internal.classpathdep.ClasspathDependencyValidator;
USER_PREFERENCE=overrideGlobalPreferencestruedisableAllValidationfalseversion1.2.800.v201904082137

理論上、これらの設定を追加で保存することは、Gradleを使用する理由に反します。これは、Eclipseのプロジェクトを作成するときにこれらのファイルを生成できるはずなので、SCMを使用して、あまり実装せずにこれらの設定を利用可能にし、状態を文書化する最も簡単な方法です。でbuild.gradle

Eclipse-bugtrackerのバグにも投票するのは良い考えかもしれません。

于 2020-03-03T11:15:14.727 に答える