注意:我可以成功编译除RegisterTest.java以外的所有内容
我有以下项目结构。我只想使用javac进行编译,不使用构建工具,不使用IDE。
每个文件都在与其目录结构相对应的程序包中,例如Drink.java
在Kassensystem / AbstractProducts中,它转换为package Kassensystem.AbstractProducts;
所有抽象产品都实现了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