8

私はIntellijIDEAが大好きですが、Javaのインポートに関する1つの小さな問題に悩まされてきました。たとえば、「example」という名前のパッケージと、A.javaとB.javaの2つの異なるクラスがあります。

そして、インポートせずにクラス「B」からクラス「A」にアクセスしたいと思います。このような:

クラスA:

package example;

public class A{ ... some stuff here ...}

クラスB:

package example;

public class B{
    public static void main(String[] args){
        A myVar = new A();
    }
}

このコードは機能しない可能性がありますが、問題ではありません。IDEとクラスをインポートするメカニズムだけで問題が発生します。

したがって、問題は、BからAクラスが表示されないことです。アイデアは「シンボルを解決できません」と言いますが、実際にはクラスAがパッケージに存在することを知っています。次に奇妙なのは、コンパイラが正常に機能し、例外がないことです。IDEAだけが同じパッケージ内のクラスを見ることができません。

誰かアイデアはありますか?

4

5 に答える 5

13

それらが同じパッケージにある場合は、インポートせずにクラスBのAにアクセスできます。

package example;

public class B{
    public static void main(String[] args){
        A myA = new A();
    }
}
于 2012-04-17T15:29:16.657 に答える
7

たぶん、これはあなた、または「シンボルを解決できません」エラーが発生しているがコードをコンパイルできるIntelliJを使用している他の誰かに役立つでしょう。

Buymypiesが作成した2つのファイルがあるとすると、標準のJava規則では、2つのファイルはソースコード領域のExampleディレクトリに存在します/myprojectpath/src/Example。ただし、技術的には、パッケージ構造をソースディレクトリ構造に反映する必要はなく、ベストプラクティスのようなものです。

したがって、パッケージ構造を模倣せず、2つのファイルがちょうど入っている/myprojectpath/src場合、IntelliJはソースコード構造がパッケージ構造を反映することを期待しているため、「シンボルを解決できません」というエラーを表示しますが、正常にコンパイルされます。

これがあなたの問題かどうかはわかりませんが、私はIntelliJを使用しており、これを見たことがあるので、注目すべき点です。

于 2012-10-10T21:33:38.307 に答える
5

私はこれと同じ問題を抱えています:同じパッケージ内の2つのクラスですが、一方が他方を呼び出そうとすると、Intellijはそれを赤で強調し、シンボル「Classname」を解決できません、たとえばシンボル「LocalPreferencesStore」を解決できませんと言います。

次に、完全修飾名をその場で追加したいので、パスを明確に認識しているので、なぜクラスにアクセスできないのでしょうか。

モジュールはまだコンパイルと実行を行っているので、IDEが奇妙に動作しているだけです。実際にはエラーではないので、IDEAが奇妙なぐらつきを投げているだけなので、赤は非常に気が散ります。

これも最近です。2週間前はこの問題はまったく発生していませんでしたが、突然起動しました。もちろん、すぐにまた消える可能性もありますが、本当に面倒です。

于 2015-03-20T11:57:18.100 に答える
1

同じ問題と私はちょうどそれを修正しました。

あなたのフォルダ構造がわかりません。ただし、package example手動で追加した場合はそれが問題です。パッケージはフォルダ構造と同じである必要があります。つまり、クラスファイルをに格納するpackage example場合は、exampleという名前のsrcのサブフォルダにjavaファイルを格納する必要があります。

于 2016-05-02T02:43:52.767 に答える
-5

あなたは私が思うJavaについての基本を学ぶ必要があります。

これが私があなたが試みていると思うものの基本的な例です:

package Example;

public class A
{
    String myVar;

    public String getMyVar()
    {
        return myVar;
    }

    public void setMyVar(String myVar)
    {
        this.myVar = myVar;
    }
}

Aのインスタンスを作成する必要があります。

package Example;

public class B
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        // TODO Auto-generated method stub
        A myA = new A();

        myA.setMyVar("Hello World!");

        System.out.println(myA.getMyVar);
    }

}

javaの「getters」と「setters」を検索します。

于 2012-04-17T15:39:53.743 に答える