web-dev-qa-db-ja.com

パッケージ名がファイルパスに対応していません-IntelliJ

私はVCSからプロジェクトをインポートしようとしています(まあ、実際にそれを初めてやっています)、これは私の(インポートされた)プロジェクトの構造です:

The file structure

ところで。この画面は、(コンテキストメニューで)これらのディレクトリのプロパティを何度も変更しようとした後に作成されます。

これらのソースファイルに次のエラーがあります。

The error in the editor

かつてbadugi.clientに対して何もしなかったが、badugi.serverでのみこのエラーを報告した。私はそれがどのように機能するのか全く分かりません...

また、同じディレクトリ内のクラスは互いに見えません。

Error

これは、ClientWorkerと同じディレクトリにある(最初の画像でわかるように)Serverクラスのコードであるため、Serverとは何かを知っている必要があります。

このコードは私の友人のIDEでうまく機能したと確信しています。 IntelliJを機能させるにはどうすればよいですか?

49
Radek Kłos

ディレクトリ構造から判断すると、クライアントとサーバーの2つのパッケージがありますが、コードではパッケージbadugi.clientとbadugi.serverが必要です。

これを修正する方法を次に示します。

  1. 下線付きのパッケージステートメント(package badugi.server)にカーソルを置きます
  2. ヒット ALT + ENTER
  3. オプションbadugi.serverに移動を選択します。これにより、宣言されたパッケージと一致するようにディレクトリ構造が自動的に修正されます

または

  1. Project Explorerでsrcを右クリックします
  2. 新規/パッケージを選択し、パッケージbadugiを作成します
  3. クライアントおよびサーバーパッケージを選択し、badugiパッケージにドラッグします
51

私はこれと同じ問題を抱えていて、プロジェクトの.imlファイルを修正することで修正しました。

から:

<content url="file://$MODULE_DIR$">
  <sourceFolder url="file://$MODULE_DIR$/src/wrong/entry/here" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
  <excludeFolder url="file://$MODULE_DIR$/target" />
</content>

に:

<content url="file://$MODULE_DIR$">
  <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
  <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
  <excludeFolder url="file://$MODULE_DIR$/target" />
</content>

どういうわけか、このプロジェクトがインポートされたときに、パッケージフォルダーがルートソースディレクトリとして指定されました。

37
Trann

私もこのエラーを何度か見ましたが、プロジェクトのモジュール設定を正しく識別することで常に解決できました。 IntelliJで、最上位プロジェクトを右クリック->「モジュール設定を開く」。これにより、プロジェクト構造全体と「ソースフォルダー」、「ソースフォルダーのテスト」などとして識別されるコンテンツを含むウィンドウが開きます。これらが正しく設定されていることを確認してください。 「ソースフォルダー」の場合、フォルダーがsrc /またはsrc/Java(またはソース言語が何であれ)であることを確認してください。

12
syd_barrett

これをpom.xmlprojectタグ内)に追加します

<build>
  <sourceDirectory>src/main/Java</sourceDirectory>
</build>

src/main/Javaは、設定するソースフォルダーです。 pom.xmlファイルに既にこの行がある場合は、それが正しいかどうかを確認してください。

7
Searene

モジュールセクションのプロジェクト構造(Ctrl + Alt + Shift + s)で宣言する必要があります。それらのフォルダのどれがソースパッケージ(青いもの)であり、どのパッケージがテストされているかをマークしてください...

4
Emad Aghayi

破損した、または古いIntellijファイルが原因で同じ問題が発生しました。 14.0.2に更新する前に、適切な名前のパッケージとファイル階層を持つ完全に機能するプロジェクトがありました。

更新後、mavenコンパイルは問題なく動作しましたが、Intellijは特定のパッケージで上記のエラーを報告していました(同様の特性を持つ他のパッケージは影響を受けませんでした)。

私はこれ以上詳しく調べることはしませんでしたが、。imlファイルと.ideaフォルダーを削除し、キャッシュを無効にし、IDEを再起動し、プロジェクトを再度開きました、maven構成に依存しています。

注:これは、実行およびデバッグ構成を効果的に削除します!

Intellijワークスペースファイルを理解している人がこれについてコメントできますか?

これをさらに検索する人への別のコメント:SC管理プロジェクトのリファクタリングは、ほこりを残すことができます-現在のパッケージ構造を繰り返している「古い」フォルダがあります。 .imlまたは.ideaファイルにこれらのパッケージへの参照がある場合、intellijが古いパッケージへの参照と混同される可能性があります。頑張って、StackExchangers仲間。

更新:参照されたmavenプロジェクトでいくつかのファイルを削除しましたが、癖が戻りました。したがって、私の投稿は決して最終的な回答ではありません。

1
blackstrype

Scalaプロジェクトで私が持っていた同様の警告に誰かが遭遇するかもしれません。

パッケージ名はディレクトリ構造に対応していません。このため、このファイルからクラスを解決する際に問題が発生する可能性があります。パッケージ構造に対応しないパッケージ文を持つファイルの検査。

ファイルは適切な場所にあったため、IDEが提供するヘルパーソリューションは役に立たない enter image description here ファイルの移動では、ファイルは既に存在するということで(これは正しい)、パッケージ名の変更は実際にファイルを誤ったパッケージに移動します。

問題は、Scalaオブジェクトがある場合、ファイル内の最初のオブジェクトがファイル名と同じ名前であることを確認する必要があるため、解決策はファイル内のオブジェクトを移動することです。

0
Shikkou

ここでは注意が必要です。私の場合、フォルダ構造は次のとおりです。

com/appName/rateUS/models/FileName.Java

FileName.Javaファイルで指定したパッケージ名は次のとおりです。

package com.appName.rateUs.models;

パッケージ名の微妙な違いに注意してください。rateUsの代わりにrateUSである必要があります。

これが誰かを助けることを願っています!

0
olleh

私は同様の問題と戦っていました。それを解決する私の方法は、Intellijモジュールのルートソースファイルを元のプロジェクトルートフォルダーと一致するように設定することでした。次に、プロジェクトナビゲーションパネルで一部のフォルダーを除外としてマークする必要がありました(新しいプロジェクトでは使用しないでください、私にとってはAndroidで使用されている部分です)。それで全部です。

0
ymko

この問題を解決したフォルダーsrcの下にパッケージを作成しました。

プロジェクト構造

0
杨晨豪

コトリン

docs パッケージの規則に従っているKotlinを使用している場合:

純粋なKotlinプロジェクトでは、推奨されるディレクトリ構造は、共通ルートパッケージを省略したパッケージ構造に従うことです(たとえば、プロジェクト内のすべてのコードが「org.example.kotlin」パッケージとそのサブパッケージにある場合、「org .example.kotlin "パッケージはソースルートの直下に配置し、" org.example.kotlin.foo.bar "のファイルはソースルートの" foo/bar "サブディレクトリに配置する必要があります。

IntelliJはまだこれをサポートしていません 。あなたができる唯一のことは、この警告を無効にし、IDEがフォルダ/ファイル構造の変更に関してはリファクタリングの助けにならないことを受け入れることです。

0