Eclipseビルドパスのネストエラー


122

私は自分のクラスの単純なJSP /サーブレット/ Tomcat Webアプリケーションに取り組んでいます。教授から、デフォルトの動的Webプロジェクト構造とは少し異なるフォルダー構造を使用するように求められました。彼は、webcontentフォルダーを使用するのではなく、src / main / javaおよびsrc / main / webappの下にあるすべてのソースコードを必要としています。

アプリを実行するとウェルカムファイルは正常に表示されますが、サーブレットにアクセスしようとすると次のようになります。

 Http 500 SEVERE: Allocate exception for servlet InitDb

java.lang.ClassNotFoundException。私はそれがビルドパスエラーだと確信しています。ビルドパスにfinal / srcがありますが、警告が表示されます

"Cannot nest 'final/src/main/webapp/WEB-INF/classes' inside 'final/src'. To enable the    nesting exclude 'main/' from 'final/src'

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

私はこれを私の展開アセンブリに持っています:

<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/> 

メインを除外すると、警告は消えますが、問題は解決しません。助言をいただければ幸いです。ありがとう。

回答:


309

新しいプロジェクトを作成したときも同じ問題がありました。私はEclipse内でJavaプロジェクトを作成し、それをmavenizeしてから、javaビルドパスのプロパティを削除src/および追加src/main/javaしましたsrc/test/java。Maven updateを実行すると、ネストされたパスエラーが発生していました。
それから、私は最終的に気づきました-以前にそのエントリを見たことがなかったので- <sourceDirectory>src</sourceDirectory>それをmavenizeしたときに書き込まれたpomファイルの行があります。削除して解決しました。


1
これは、多くのランダムなトリックの1つにすぎません。理由を説明していません。したがって、あまり役に立ちません。
smwikipedia 2015年

4
私はpomエントリの名前をscr / main / javaに変更しましたが、すべて問題ありませんでした。ポストacheron55をありがとう
Beezer

そこに置いたの?またはそれはどこから来たのですか?
ライン

23

私はこのスレッドにマベニッシュでない答えを投げたかった。

バージョン管理と厳格なディレクトリ構造の理由により、削除src/と追加src/main/java、およびビルドパスへの類似の操作を行うというAcheronの回答(最良の回答)をたどることができませんでしたsrc/test/java

私は実際に、この入れ子になったビルドパスの問題と数週間戦い続けていました。この問題に対する答えは、エラーメッセージに示されています。

To enable the nesting exclude 'main/' from 'final/src'

修正

ビルド・パスでは、あなたを編集する必要がありますInclusion and Exclusion PatternsをクリックしてExcluded: (None)、その後Edit...

  1. ナビゲーターに移動し、プロジェクトを右クリックします
  2. ビルドパス
  3. ビルドパスの構成
  4. ソース(タブ)

除外パターン

そこでmain/webapp/WEB-INF/classesとして追加できますExclusion Pattern。次にmain/webapp/WEB-INF/classes、別のソースフォルダーとしてビルドパスに追加できるようにします。


10

これを試して:

[ライブラリ]タブから:

Eclipse -> right click on project name in sidebar -> configure build path -> Libraries

Webアプリライブラリを削除します。

click on "Web App Libraries" -> click "remove"

それらを再び追加します。

click "Add Library" -> click to highlight "Web App Libraries" -> click "next" -> confirm your desired project is the selected option -> click "Finish"

「Webアプリケーションライブラリ」の強調表示:

「Webアプリケーションライブラリ」の強調表示


3

私は同じ問題を抱えており、上記の正しい答えは私のために機能しませんでした。それを解決するために私が行ったのは、ソースタブに移動しBuild Path->Configure Build Path、すべてのソース(ソースが1つしかなかった)を削除して、そこから再構成することでした。エラーを解消するために、Eclipseからプロジェクトを削除し、Mavenプロジェクトを再度インポートしました。


3

私の場合、eclipseに gradle natureプロジェクトがあり、問題はにありbuild.gradle、これsourceSetsが指定されています:

sourceSets {
    main {
        java {
            srcDir 'src'
        }
    }
 }

これは、とよく作品に思えるのIntelliJ、しかしよりも思える日食がない巣のようなんsrcsrc/javasrc/resources。で日食私はそれを変更する必要があります。

sourceSets {
    main {
        java {
            srcDir 'src/main/java'
        }
    }
}

2

ソースと、ビルド出力が行われるターゲットディレクトリを分離する必要があります。また、クラスファイルがソースディレクトリに置かれることは決してないことに注意することも重要です。これはあなたの教授の助言に反するものではありません-実際、彼は./src/main/javaと./src/main/webappに向けてMaven標準ソース構造を推進しています。二番目は、例えば保持する必要があります。必須のWEB-INF / web.xmlファイルですが、実際のクラスをそこに配置することはありません。

変更する必要があるのは、ターゲットディレクトリです。同じ標準を使用して、このために「./target」という名前を選択することをお勧めします。ビルドされたすべてのファイルがここに入り、パッケージ化すると正しいデプロイ可能なアーティファクトが生成されます。後でMavenを使用するように移行する場合は、スクリプト化された繰り返し可能な方法でこれを行うのにも役立ちます。

問題が解決することを願っています。


2

ここに簡単な解決策があります:

  1. プロジェクト>>プロパティ>>ビルドパスを右クリックします。
  2. [ソース]タブで、すべてのソースフォルダを選択します。
  3. それらを削除します。
  4. プロジェクトを右クリックし、Maven >>プロジェクトを更新します。

1

受け入れられた解決策は私にとってはうまくいきませんでしたが、プロジェクトの設定を掘り下げました。

次の解決策は、少なくとも動的Webプロジェクトを使用している場合にそれを修正しました。

  1. プロジェクトを右クリックして、プロパティを選択します。(またはプロジェクトのalt-enter)
  2. Deployment Assemblyの下で「src」を削除します。

src / main / javaを追加できるはずです。また、自動的に配置アセンブリに追加されます。

警告:src / test / javaを追加した場合は、Deployment Assemblyにも追加されることに注意してください。通常、これは必要ありません。削除してもかまいません。


1

これにより、Eclipseでグリッチを修正するという大きなうさぎの穴を掘り下げ始めましたが、プロジェクトをEclipseから削除し、再インポートして修正しました。


0

Eclipseコンパイラーが正しく機能するためには、ソースパスからfinal / srcを削除し、代わりにfinal / src / main / javaを追加する必要があります。ビルドディレクトリがJavaソースフォルダー内にないため、これで問題が解決する場合もあります。


0

STS IDE

それは、「ソースフォルダーとして使用」をどのフォルダーに伝えるかによって異なります。写真の構造で、「ターゲット」または「生成」フォルダにそれを言うと、「ネストされた」エラーが発生します。しかし、pom.xmlの「プラグイン」セクションで言及されている最後の「cxf」フォルダー、およびパッケージ構造のどこから始まるか(.wsdlファイルに示されているように)、つまり、「ソース」フォルダーを実行するための適切なフォルダー、エラーはありません


0

同様の問題が発生しました。次の手順で問題は解決しました:

  1. 日食でプロジェクトを削除します。
  2. .Projectファイルとを削除します。設定フォルダ。
  3. Eclipseに既存のMavenプロジェクトとしてプロジェクトを再度インポートします。

-3

2つのフォルダを作成します。final/src/ソースのJavaコードを保存するために、と final/WebRoot/

ソースとwebrootを一緒にすることはできません。先生を誤解しているかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.