0

私はJavaチュートリアルに従っています(テストコードを書くために自分のデバイスに任せています)が、コンパイルしようとすると、シンボルが見つからないというエラーが発生します。私は調べてみましたが、私が書いたコードがなぜこのエラーを生成するのか理解できません。とても簡単なことかもしれませんが、私が間違ったことを理解しようとして髪を抜いているので、誰かが原因を指摘してくれれば幸いです。

TestBeerExpert.java:

package com.example.model;

import com.example.model.*;
import java.util.*;

public class TestBeerExpert {

    public static void main(String[] args) {
        TestBeerExpert test = new TestBeerExpert();
        test.go();
    }

    private void go() {
        BeerExpert expert = new BeerExpert();
        List<String> brands = expert.getBrands("amber");
        ...
    }
}

BeerExpert.java:

package com.example.model;

import java.util.*;

public class BeerExpert {

    public List<String> getBrands(String color) {
        List<String> brands = new ArrayList<String>();
        ...
        return(brands);
    }

}

ディレクトリ構造:

beerV1 -> src -> com -> example -> model -> TestBeerExpert.java & BeerExpert.java

beerV1からのコンパイルjavac -d classes src/com/example/model/TestBeerExpert.java

そして実際のエラー:

src/com/example/model/TestBeerExpert.java:14: error: cannot find symbol
        BeerExpert expert = new BeerExpert();
        ^
  symbol:   class BeerExpert
  location: class TestBeerExpert
src/com/example/model/TestBeerExpert.java:14: error: cannot find symbol
        BeerExpert expert = new BeerExpert();
                                ^
  symbol:   class BeerExpert
  location: class TestBeerExpert
2 errors

私の一生の間、私は自分が間違っていることを理解することができません。ファイルは同じディレクトリとパッケージにありますが、私が知る限り、これはコンパイルする必要があります。コードを修正していただければ幸いですが、間違ったことを説明して、将来のために覚えておくことができます。前もって感謝します。

4

2 に答える 2

4

ソースパスsrcに追加

 javac -sourcepath src -d classes src/com/example/model/TestBeerExpert.java

javacソースがある場所とは異なるディレクトリから実行するため、これを行う必要があります。

最初にコンパイルする必要はありませんBeerExpert(javacは上記のコマンドでコンパイルします)。

検証:

~/beerV1$ ls src/com/example/model/
BeerExpert.java  TestBeerExpert.java
~/beerV1$ ls classes
~/beerV1$ javac -sourcepath src -d classes src/com/example/model/TestBeerExpert.java
~/beerV1$ ls classes/com/example/model/
BeerExpert.class  TestBeerExpert.class
于 2013-02-08T20:01:30.147 に答える
0

コンパイラがBeerExpertクラスを見つけることができないため、コンパイルエラーが発生します。以下を試してください。1。最初に:javac -d classes src \ com \ example \ model \ BeerExpert.javaを使用してBeerExpert.javaをコンパイルします。2。次に、TestBeerExpert.java javac -cp classes -d classes src \ com \ example \ model\TestBeerExpertをコンパイルします。 java

于 2013-02-08T20:13:08.593 に答える