他の人がすでに述べたように、このエラーは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:/resource
Eclipseによって次のように文書化されています。
これは、ワークスペースにあるリソースを識別するために使用されます。「リソース」の次のパスセグメントはプロジェクトの名前である必要があり、その後に検索するフォルダーやファイルを続けることができます。
したがって、何らかの理由で、バリデーターはWEB-INF/web.xml
Eclipseプロジェクトのルートで使用可能であることを期待していますが、これは私にはあまり意味がありません。過去に存在したことはなく、そこに配置してもエラーは解決されません。代わりに、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')
}
したがって、バリデーターの問題が一部のプロジェクトセットアップにある場合でも、現在確実に機能していることがわかる唯一の回避策は、プロジェクトごとにバリデーターを無効にすることです。
これにより、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のバグにも投票するのは良い考えかもしれません。