Java 找不到类
我遇到一些问题,一个程序没有找到所需的类,尽管它们有相同的目录和相同的包声明 Eclipse说“无法找到或运行主类”,所以我尝试手动编译它。以下是编译器所说的:Java 找不到类,java,class,Java,Class,我遇到一些问题,一个程序没有找到所需的类,尽管它们有相同的目录和相同的包声明 Eclipse说“无法找到或运行主类”,所以我尝试手动编译它。以下是编译器所说的: Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten. C:\Users\Gilbert>cd C:\Users\Gilbert\Desktop\factory C:\User
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten.
C:\Users\Gilbert>cd C:\Users\Gilbert\Desktop\factory
C:\Users\Gilbert\Desktop\factory>"C:\Program Files\Java\jdk1.7.0_45\bin\javac" P
rodukt.java
C:\Users\Gilbert\Desktop\factory>"C:\Program Files\Java\jdk1.7.0_45\bin\javac" S
tation.java
C:\Users\Gilbert\Desktop\factory>"C:\Program Files\Java\jdk1.7.0_45\bin\javac" L
ine.java
Line.java:8: error: cannot find symbol
private Produkt produkt;
^
symbol: class Produkt
location: class Line
Line.java:9: error: cannot find symbol
private ArrayList<Station> stations;
^
symbol: class Station
location: class Line
Line.java:12: error: cannot find symbol
public Line(String name, Produkt produkt){
^
symbol: class Produkt
location: class Line
Line.java:17: error: cannot find symbol
public void add(Station station){
^
symbol: class Station
location: class Line
Line.java:25: error: cannot find symbol
public Station getStation(int number){
^
symbol: class Station
location: class Line
5 errors
文件2:
package factory;
public class Station{
private int number;
private int time;
public Station(int number, int time){
this.number = number;
this.time = time;
}
public int getNumber(){
return this.number;
}
public void setNumber(int number){
this.number = number;
}
public int getTime(){
return this.time;
}
public void setTime(int time){
this.time = time;
}
}
文件3:
package factory;
import java.util.ArrayList;
public class Line{
private String name;
private Produkt produkt;
private ArrayList<Station> stations;
private int time;
public Line(String name, Produkt produkt){
this.name = name;
this.produkt = produkt;
}
public void add(Station station){
stations.add(station.getNumber(), station);
}
public String getName(){
return this.name;
}
public Station getStation(int number){
return stations.get(number);
}
public String getProduktName(){
return produkt.getName();
}
public int getTime(){
for (int i = 0; i < stations.size(); i++){
this.time = this.time + stations.get(i).getTime();
}
return this.time;
}
public int getStations(){
return stations.size();
}
}
}
它使用了另一个我没有展示的类,因为它是所有类中最长的。
我没有显示主类,因为错误发生在我尝试编译主类或其他类时。我只能编译那些没有引用包中其他类的类,比如produkt和station,但是任何其他类都找不到它们,尽管它们都是包的一部分,并且都在directoy中
main
方法的类javac*.java
main
方法
public static void main(String[] args) {
}
创建另一个类以运行应用程序。像这样的
public class App {
public static void main(String[] args) {
Produkt p = new Produkt("product");
Line line = new Line("line", p);
line.add(new Station(1, 2));
....
}
}
其他注释。
- 我不确定你想要这个
在您使用的public void add(Station station){ stations.add(station.getNumber(), station); }
方法中,第一个参数是add
的索引。这将给您带来问题,而且索引可能不存在ArrayList
照办add(int index, E element) Inserts the specified element at the specified position in this list.
stations.add(station);
- 您应该在构造函数中初始化
。如果不这样做,您将面临站
NullPointerException
改为public Line(String name, Produkt produkt){ this.name = name; this.produkt = produkt; station = new ArrayList<Station>(); }
更改所有的if ("factory".equals(parts[0]))
- 我在编译你的代码时遇到问题
- 您可能还需要设置启动配置。您需要在项目上单击鼠标右键,然后转到“属性”。单击运行/调试设置。如果您的
类不在该列表中,请单击新建,然后单击Java应用程序,然后查找您的类并确保它是主类。确保使用完全限定的名称,例如mypackage.MainMain
public static void main(Strings args[]){
}
编撰
但是,让我们谈谈您试图从命令行运行的情况。
cd-更改目录
C:\Users\Gilbert\Desktop\factory>“C:\Program Files\Java\jdk1.7.0\u 45\bin\javac”P rodukt.Java
好的,您将目录更改为C:\Users\Gilbert\Desktop\factory
那么,出于某种原因,您在引号中列出了“C:\ProgramFiles\Java\jdk1.7.0\U 45\bin\javac”,为什么?
阶段1:将目录更改为类文件的实际位置,该类文件应为包含以下内容的类:
public static void main(String args[]){
}
因此,换言之,应采取以下措施:
cd C:\Users\Gilbert\Desktop\factory\此处包含主类的实际文件夹
javac Main.java(编译主类)好的,所以我解决了它,但我的解决方案仍然有一个问题: 如果我从包中取出主类并导入它(导入工厂。*;) 我可以编译并运行它,但我的任务禁止我使用默认包。 我自己的包之外的主类不违反这个规则吗
谢谢你的回答 您需要一个主方法来运行应用程序请参见下面的“我的更新”。第三点可能会帮助你。不,它不会违反任何规则。你可以在任何地方上主课。您只需要输入所有必要的内容。我也不知道“禁止”这个词是否正确。我想eclipse只是给了你一个警告,不要使用默认包。实际上,这个程序是我学习中的一项任务。“无默认包”只是一个规则,我不知道它有什么意义。
if ("factory".equals(parts[0]))
public static void main(Strings args[]){
}
public static void main(String args[]){
}