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);
}
}
OwningAccessor
をjavac -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で正常にコンパイルされます。
では、次のようにコードをファイルで配布するとします。
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
フォルダでそれらを探します。
以下のように、Owning.JavaとOwningAccessor.Javaの両方を必ずコンパイルしてください。
javac -cp . Owning.Java OwningAccessor.Java
Eclipseは必要なすべてのファイルをコンパイルします。そのため、そこで機能します。
正しい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ファイルの場所を示します。
したがって、D:\ Automationという名前のディレクトリに、Demo.Javaがこのエラーをスローするファイルがあります。D:\ Automationにいる間、cmdで次のことを行う必要があります。-1)cd .. //オートメーションから引き出しますディレクトリ。 D:> 2)javac Automation\Demo.Java
これでファイルがコンパイルされます-Demo.Java