2012-11-15 18 views
12

2つのクラスOwningとOwningAccessorがあります。ファイルは同じディレクトリにあります。私はjavac -cp . OwningAccessor.javaOwningAccessorをコンパイルしようとしたときコマンドラインでjavac "シンボルを見つけることができません"というエラーが発生しました

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); 
    } 
} 

は、私はコンパイルエラーを得ました。

この問題は何ですか?コードはEclipse IDEの下でうまくコンパイルされます。

+4

は同じディレクトリにありますか?ソースパスのディレクトリ構造を表示 –

+0

これらは同じディレクトリにあります。 – prosseek

+0

reproはありません、ここで動作します。最初に 'Owning.java'をコンパイルすると動作しますか? –

答えて

15

[OK]を、あなたは

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

Goは、あなたのコマンドプロンプトに次のようにファイルで配布コードを持っていると仮定し、myprojectにディレクトリを変更してみましょう。一度、次のコマンドを発行します:

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

私はちょうどそれをテストし、うまく動作します。あなたのコンパイルされたクラスはoutフォルダに配置されます。

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

1つのクラスをコンパイルすると、他のすべての依存クラスのコンパイルをトリガします。コンパイラは自動的にsrcフォルダ内でコンパイラを検索します。

+0

これはちょうどプログラムを遵守します、なぜ私はCMDのsystme.out.printの出力を得ていないのでしょうか? – Faizan

+0

最良の方法は、これをすべて処理し、かなり簡単なjarファイルを作成することです。 – ramu

12

あなたがそうのように、Owning.javaとOwningAccessor.javaの両方をコンパイルしていることを確認してください:

javac -cp . Owning.java OwningAccessor.java

Eclipseは、そこで働くん理由である、あなたのためのすべての必要なファイルをコンパイルします。

+0

Javaはそれ自身の依存関係を把握していませんか? –

+2

コンパイラで '-sourcepath'フラグを使用するとします。 –

+0

SourcePathは残念なことに私のマシン上のjavacがコンパイルしようとしているものでACCESS_VIOLATIONでクラッシュするので、テストできません。 – Kninnug

1

てみ正しいソースパスの例を作るために: "TEMP" で

 
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 

我々は資源をALOCATEと -sourcepath を持つ.javaファイルがどこにあるかを示しています。

関連する問題