我有一个使用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)编译没有问题。
答案 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<>();