基本 Java - 在文本编辑器中编码,无法从不同的文件创建新对象,尽管它们在同一个包中 "Cannot find symbol"
Basic Java - Coding in text editor, cannot create new object from a different file although they're in the same package "Cannot find symbol"
此代码编译正常:
Person.java
package people;
class Person{
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
}
这不是:
controller.java
package people;
public class controller{
public static void main (String[] args){
Person mark = new Person();
mark.setName("Mark");
mark.setAge(24);
}
}
我遇到了这个编译错误:
C:\Program Files\Java\jdk1.8.0_66\classes\controller.java:7: error: cannot find symbol
Person mark = new Person();
^
symbol: class Person
location: class controller
C:\Program Files\Java\jdk1.8.0_66\classes\controller.java:7: error: cannot find symbol
Person mark = new Person();
^
symbol: class Person
location: class controller
我对此进行了大量研究,但似乎无法弄明白。我是否试图在 controller.java 文件中错误地实例化对象?谢谢。
您的 class Person
有一个带有两个参数的构造函数,一个 String
和一个 int
。但是,您正在尝试使用不带参数的构造函数创建 Person
对象:
Person mark = new Person();
您需要将参数传递给构造函数:
Person mark = new Person("Mark", 24);
当然,之后您就不需要再调用 set...()
方法了。
Java 编译器会自动在 class 中创建一个不带参数的构造函数,但前提是您根本没有在 class.[=17 中显式添加任何构造函数=]
运行 来自根目录的编译器。您必须位于包含 "people" 匹配打包程序名称的文件夹中。
例子。 Java 个文件在 "D:\people" 中,如果当前文件夹是 "D:\people" 而你 运行
"C:\Program Files (x86)\Java\jdk1.8.0_60\bin\javac.exe" controller.java
然后你会得到你描述的错误。
但是如果您将当前文件夹更改为 "D:" 和 运行
"C:\Program Files (x86)\Java\jdk1.8.0_60\bin\javac.exe" people\controller.java
全部编译。不要忘记修复构造函数。
此代码编译正常:
Person.java
package people;
class Person{
private String name;
private int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
}
这不是:
controller.java
package people;
public class controller{
public static void main (String[] args){
Person mark = new Person();
mark.setName("Mark");
mark.setAge(24);
}
}
我遇到了这个编译错误:
C:\Program Files\Java\jdk1.8.0_66\classes\controller.java:7: error: cannot find symbol
Person mark = new Person();
^
symbol: class Person
location: class controller
C:\Program Files\Java\jdk1.8.0_66\classes\controller.java:7: error: cannot find symbol
Person mark = new Person();
^
symbol: class Person
location: class controller
我对此进行了大量研究,但似乎无法弄明白。我是否试图在 controller.java 文件中错误地实例化对象?谢谢。
您的 class Person
有一个带有两个参数的构造函数,一个 String
和一个 int
。但是,您正在尝试使用不带参数的构造函数创建 Person
对象:
Person mark = new Person();
您需要将参数传递给构造函数:
Person mark = new Person("Mark", 24);
当然,之后您就不需要再调用 set...()
方法了。
Java 编译器会自动在 class 中创建一个不带参数的构造函数,但前提是您根本没有在 class.[=17 中显式添加任何构造函数=]
运行 来自根目录的编译器。您必须位于包含 "people" 匹配打包程序名称的文件夹中。
例子。 Java 个文件在 "D:\people" 中,如果当前文件夹是 "D:\people" 而你 运行
"C:\Program Files (x86)\Java\jdk1.8.0_60\bin\javac.exe" controller.java
然后你会得到你描述的错误。
但是如果您将当前文件夹更改为 "D:" 和 运行
"C:\Program Files (x86)\Java\jdk1.8.0_60\bin\javac.exe" people\controller.java
全部编译。不要忘记修复构造函数。