编译具有多个Dirs和依赖项层次结构的Java项目

时间:2020-02-06 13:44:06

标签: java compiler-errors javac

注意:我可以成功编译除RegisterTest.java以外的所有内容

我有以下项目结构。我只想使用javac进行编译,不使用构建工具,不使用IDE。 每个文件都在与其目录结构相对应的程序包中,例如Drink.java在Kassensystem / AbstractProducts中,它转换为package Kassensystem.AbstractProducts;

Project Structure

所有抽象产品都实现了Interfaces文件夹中的公共接口Product,因此它们自然是import Kassensystem.Interfaces.*。最后,产品是从抽象产品类派生的具体类,因此它们又import Kassensystem.AbstractProducts.*。最后,Register类仅计算一些价格,并且仅取决于Product接口。 RegisterTest应该测试整个系统,并实例化一些具体的类,然后将它们传递给Register。

因此,依赖项层次结构如下: Dependency Hierarchy

我在编译该代码时遇到麻烦,我该如何设置类路径以获得正确的依赖顺序(请注意,我没有使用jar文件)? 我尝试设置类路径,以使最抽象的类排在最前面(接口->抽象类->具体产品->注册),但是它总是在import语句中抱怨该包不存在。

$ javac -cp "Interfaces/*.class:AbstractProducts/*.class:Products/*.class"  RegisterTest.java
RegisterTest.java:3: error: package Kassensystem.Products does not exist
import Kassensystem.Products.*;
^
RegisterTest.java:4: error: package Kassensystem.Interfaces does not exist
import Kassensystem.Interfaces.*;
^
RegisterTest.java:8: error: cannot find symbol
        var products = new Product[] { new Tomato(), new TomatoJuice() };
                           ^
  symbol:   class Product
  location: class RegisterTest
RegisterTest.java:8: error: cannot find symbol
        var products = new Product[] { new Tomato(), new TomatoJuice() };
                                           ^
  symbol:   class Tomato
  location: class RegisterTest
RegisterTest.java:8: error: cannot find symbol
        var products = new Product[] { new Tomato(), new TomatoJuice() };
                                                         ^
  symbol:   class TomatoJuice
  location: class RegisterTest
RegisterTest.java:10: error: cannot find symbol
        double total = Register.scan(products);
                       ^
  symbol:   variable Register
  location: class RegisterTest
6 errors

0 个答案:

没有答案