0

Maven プロジェクトで IntelliJ を使用しています。私は IntelliJ が初めてです (そしてほとんど Maven です)。新しいプロジェクトを作成し、問題なくビルドしていますが、java/ の下に新しいサブパッケージを作成すると、java/ で宣言されたクラス/インターフェースをインポートできないことに気付きました。

サブパッケージ ファイルでパッケージ名を明示的に宣言する必要がありますか? pomファイルで指定されていない場合、デフォルトでこのパッケージパスは何ですか? それとも、これは groupId ですか?

4

1 に答える 1

4

で指定されたartifactIdgroupIdの値はpom.xml、実際のクラスとは関係ありません。

プロジェクト全体 (jar) を分類するために使用され、プロジェクト内のクラスやパッケージには影響しません。

Maven のデフォルトのフォルダー構造:

src
|
|--main
|  |
|  |--java
|  |  |
|  |  |--com
|  |  |  |
|  |  |  |--mypackage
|  |  |     |
|  |  |     |--MyClassA.java
|  |  |     |
|  |  |     |--submypackage
|  |  |        |
|  |  |        |--SomeOtherClass.java
|  |  |--net
|  |     |
|  |     |--netpackage
|  |        |
|  |        |--MyNetClassA.java
|  |
|  |--resources
|
|--test
   |
   |--java
   |  |
   |  |--com
   |     |
   |     |--anotherpackage
   |        |
   |        |--AnotherClassTest.java
   |
   |--resources

からMyNetClassAを使用したい場合MyClassAは、次のようなものがあります。

MyNetClassA.javaファイルの内容:

package net.netpackage;

import com.mypackage.MyClassA;

public class MyNetClassA {
    MyClassA myField;
}

サブパッケージにも同じことがMyClassA当てはまりますSomeOtherClass

MyClassA.javaファイルの内容:

package com.mypackage;

import com.mypackage.subpackage.SomeOtherClass;

public class MyClassA {
    SomeOtherClass myOtherField;
}

パッケージが別のパッケージの下で宣言されているかどうかは問題ではありません。「サブパッケージ」と呼んでいますが、Java の場合は別のパッケージです。

また、 のクラスsrc/test/java( などAnotherClassTest) は、 のどのクラスにもアクセスできませんsrc/main/java

一方、 のどのクラスにsrc/main/java からアクセスできますsrc/test/java

于 2013-04-13T04:58:34.233 に答える