Java类没有正确引用彼此

时间:2016-08-11 09:24:56

标签: java class

我有一个使用B类对象的A类。我将它们都放在名为X的同一个文件夹中。我通过在每个文件的开头写package X;将两个类都包含在同一个包中。当我尝试编译类A时,我收到一条错误消息,指出它找不到引用的符号(来自B类的对象)。我在Eclipse中没有遇到任何错误,因此我认为代码本身没有任何问题。如何成功编译我的代码?

编辑: 这是A级

package X;
import java.util.ArrayList;
import java.util.List;

public class Order {
    private int orderID;
    private int orderDate;
    private int customerID;
    private String deliveryAdress;
    private List<OrderLine> orderList = new ArrayList<OrderLine>();
    double sum;

public Order(int orderID, int orderDate, int customerID, String deliveryAdress){
    this.orderID = orderID;
    this.orderDate = orderDate;
    this.customerID = customerID;
    this.deliveryAdress = deliveryAdress;
    orderList = new ArrayList<OrderLine>();
}

public int getOrderID(){
    return orderID;
}

public int getOrderDate(){
    return orderDate;
}

public int getCustomerID(){
    return customerID;
}

public String getDeliveryAdress(){
    return deliveryAdress;
}

public void addOrderLine(int articleID, int quantity, double pricePerPiece, double taxRate){
    orderList.add(new OrderLine(articleID, quantity, pricePerPiece, taxRate) );

}

public double getTotalPrice(){      
    for (OrderLine ol : orderList){
        sum = sum + (ol.pricePerPiece * ol.quantity);           
    }
    System.out.println("The total price is: " + sum);
    return sum;
}

public static void main (String[] args){
    Order order = new Order(1, 20160811, 111, "Downing Street 3");
    order.addOrderLine(999, 3, 15, 3);
    order.addOrderLine(888, 1, 500, 5);
    order.getTotalPrice();
    System.out.println(order.getCustomerID());

}

}

这是B级

package X;

public class OrderLine {
int articleID;
int quantity;
double pricePerPiece;
double taxRate;

public OrderLine (int articleID, int quantity, double pricePerPiece, double taxRate){
    this.articleID = articleID;
    this.quantity = quantity;
    this.pricePerPiece = pricePerPiece;
    this.taxRate = taxRate;
}

public int getArticleID(){
    return articleID;
}

public int getQuantity(){
    return quantity;
}

public double getPrice(){
    return pricePerPiece;
}

public double getTax(){
    return taxRate;
}

public double getTotalPrice(){
    return pricePerPiece * quantity * taxRate;
}

}

我尝试使用javac“C:\ Java \ X \ Order.java”编译它 B类(OrderLine)编译没有问题。

2 个答案:

答案 0 :(得分:0)

在您的情况下,问题是在编译源文件时,未创建包文件夹/目录。 说: :javac B.java - 这里B.class文件应该在x文件夹中生成

当你尝试编译时 :javac A.java - 它试图搜索x.B.class

正如你所说的在eclipse中工作,你可以正确地找到包。

希望它有所帮助。

答案 1 :(得分:0)

尝试给出要使用的类路径(-cp ...)。

javac -cp C:\Java C:\Java\X\*.java

在学习命令行选项后,建议使用 eclipse / NetBeans / IntelliJ 和/或 maven 等构建基础结构。

BTW包名称约定是小写字母。并且您可以通过钻石操作员<>保存输入。

List<OrderLine> orderList = new ArrayList<>();