web-dev-qa-db-ja.com

コマンドラインでのjavac「シンボルが見つかりません」エラー

OwningとOwningAccessorの2つのクラスがあります。ファイルは同じディレクトリにあります。

public class Owning {
    String _name = "";
    public void printBanner()
    {
    }
    public void printOwning(double amount)
    {
        printBanner();

        //print details
        System.out.println("name:" + _name);
        System.out.println("amount:" + amount);
    }
}


public class OwningAccessor {
    public void access()
    {
        Owning o = new Owning();
        o.printOwning(500);
    }
}

OwningAccessorjavac -cp . OwningAccessor.Javaでコンパイルしようとすると、コンパイルエラーが発生しました。

symbol  : class Owning
location: class smcho.OwningAccessor
        Owning o = new Owning();
        ^
OwningAccessor.Java:6: cannot find symbol
symbol  : class Owning
location: class smcho.OwningAccessor
        Owning o = new Owning();
                   ^

これの何が問題になっていますか?コードはEclipse IDEで正常にコンパイルされます。

13
prosseek

では、次のようにコードをファイルで配布するとします。

myproject
├── out
└── src
    ├── OwningAccessor.Java
    └── Owning.Java

コマンドプロンプトに移動し、ディレクトリをmyprojectに変更します。そこに次のコマンドを発行したら:

javac -d out -sourcepath src src/OwningAccessor.Java

私はそれをテストしました、そしてそれはうまく働きます。コンパイルしたクラスはoutフォルダーにあります。

.
├── out
│   ├── OwningAccessor.class
│   └── Owning.class
└── src
    ├── OwningAccessor.Java
    └── Owning.Java

1つのクラスをコンパイルすると、他のすべての依存クラスのコンパイルがトリガーされます。コンパイラは自動的にsrcフォルダでそれらを探します。

17
Edwin Dalorzo

以下のように、Owning.JavaとOwningAccessor.Javaの両方を必ずコンパイルしてください。

javac -cp . Owning.Java OwningAccessor.Java

Eclipseは必要なすべてのファイルをコンパイルします。そのため、そこで機能します。

13
Kninnug

正しいsourcepathの例を作ってみてください:

 javac -d temp -sourcepath c:\ awork\JavaProjects\singleton\src\c:\ JavaProjects\singleton\src\com\company\MySingleton.Java 
 
 javac- d temp -sourcepath c:\ awork\JavaProjects\singleton\src\c:\ JavaProjects\singleton\src\com\company\Main.Java 

「temp」では、リソースを割り当て、-sourcepathを使用して.Javaファイルの場所を示します。

1
luciano

したがって、D:\ Automationという名前のディレクトリに、Demo.Javaがこのエラーをスローするファイルがあります。D:\ Automationにいる間、cmdで次のことを行う必要があります。-1)cd .. //オートメーションから引き出しますディレクトリ。 D:> 2)javac Automation\Demo.Java

これでファイルがコンパイルされます-Demo.Java

0
Bhuvnesh Incedo