138

クラス用の単純な JSP/サーブレット/Tomcat webapp に取り組んでいます。教授は、デフォルトの動的 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"/> 

main/ を除外すると、警告は消えますが、問題は解決しません。アドバイスをいただければ幸いです。ありがとう。

4

13 に答える 13

336

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

于 2013-03-14T13:49:19.047 に答える
25

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

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 Patternmain/webapp/WEB-INF/classes次に、別のソース フォルダーとしてビルド パスに追加できるようにする必要があります。

于 2016-02-22T15:00:07.420 に答える
2

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

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

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

于 2012-05-31T17:42:48.770 に答える
0

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

于 2012-06-01T01:48:10.853 に答える
-4

2 つのフォルダーを作成します:final/src/ソース Java コードを格納するため、および final/WebRoot/.

ソースとウェブルートを一緒にすることはできません。あなたは先生を誤解しているかもしれないと思います。

于 2012-05-31T17:30:14.127 に答える