1

LinuxツールをWindowsに移植しようとしています。このツールは Linux システムでは正常に動作しますが、Windows では「シンボルが見つかりません」というエラーが表示されます。

私はこの小さなメインクラスを持っています:

package foo;

import foo.bar;

public class Main {
    public static void main(String[] args) throws Exception {
        bar.getInstance();
    }
}

javac Main.java の実行中にエラーが表示されるようになりました。

インポート foo.bar: シンボル ^ シンボルが見つかりません: クラス バーの場所: パッケージ foo

Main.java と bar.java は同じディレクトリにあります。私は何が欠けていますか?

4

3 に答える 3

8

一つには、慣用的barに呼ばれるべきです...Bar

理想的には、次のように、Main.javaの上のディレクトリからコンパイルする必要があります。

javac -d out foo/Main.java foo/Bar.java

これにより、Main.class と Bar.class を含む別のディレクトリ「foo」を含む「out」というディレクトリが作成されます。したがって、再び親ディレクトリから、次を実行できます。

java -cp out foo.Main

ソースの場所は、パッケージ構造と一致する必要はありません次のようなディレクトリから javac を呼び出すことができます。Main.javaBar.java

javac -cp out Main.java Bar.java

(そして、以前と同じ方法で実行します) ただし、一般的には、パッケージに従ってソース コードを構成する方がはるかに優れています。

すべてのコンパイルなどを処理する IDE (Eclipse や NetBeans など) を使用する方が簡単な場合があります。コマンド ラインから実際のプロジェクトをビルドする場合、Ant や Maven などの完全なビルド システムの使用を検討する必要があります。

(Linux でも Windows と同じ方法でコンパイルしようとすると、同じエラーが発生することに注意してください。)

于 2012-04-26T18:58:12.480 に答える
1

foo をコンパイルする前に、クラス バーを適切にコンパイルする必要があると思います。つまり、適切なパッケージ構造でクラス ファイルを生成します。

于 2012-04-26T18:58:14.493 に答える
0

kotlin プロジェクトに取り組んでから、gradle で kotlin をサポートしない完全な Java プロジェクトに取り組んでいて、 kotlin のクラスを Java プロジェクトに入れ、その Kotlin クラスをインポートしようとすると、このインポートが発生します。問題。正確な質問を参照するわけではありませんが、誰かが役立つと思うかもしれません。

例 : MainActivity.java に SomeClass.kt をインポートしようとすると、このエラーがスローされます。

于 2021-07-29T11:04:44.203 に答える