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

啤酒专家.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

编译beerV1javac -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. 首先编译 BeerExpert.java 使用:javac -d classes src\com\example\model\BeerExpert.java 2. 然后编译 TestBeerExpert.java javac -cp classes -d classes src\com\example\model\TestBeerExpert。爪哇

于 2013-02-08T20:13:08.593 回答