在文本编辑器中进行基本Java编码,无法从其他文件创建新对象,尽管它们';“我们在同一个包裹里”;找不到符号“;
这段代码编译得很好: Person.java在文本编辑器中进行基本Java编码,无法从其他文件创建新对象,尽管它们';“我们在同一个包裹里”;找不到符号“;,java,cannot-find-symbol,Java,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(S
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文件中错误地实例化对象?谢谢。您的类
Person
有一个构造函数,它接受两个参数,一个字符串和一个int
。但是,您正在尝试使用不带参数的构造函数创建Person
对象:
Person mark = new Person();
您需要将参数传递给构造函数:
Person mark = new Person("Mark", 24);
当然,在此之后,您不再需要调用set…()
方法
Java编译器会自动创建一个类中没有参数的构造函数,但前提是您根本没有在类中显式添加任何构造函数。您的类Person
有一个构造函数,它接受两个参数,一个字符串
和一个int
。但是,您正在尝试使用不带参数的构造函数创建Person
对象:
Person mark = new Person();
您需要将参数传递给构造函数:
Person mark = new Person("Mark", 24);
当然,在此之后,您不再需要调用set…()
方法
Java编译器会自动创建一个类中没有参数的构造函数,但前提是您根本没有在类中显式添加任何构造函数。从源根运行编译器。您必须位于包含与打包机名称匹配的“人员”文件夹的文件夹中
例如。如果当前文件夹为“D:\2\people”,并且您运行
"C:\Program Files (x86)\Java\jdk1.8.0_60\bin\javac.exe" controller.java
然后您将得到您描述的错误
但如果您将当前文件夹更改为“D:\2”并运行
所有这些都将被汇编。别忘了修复构造函数。从根源代码运行编译器。您必须位于包含与打包机名称匹配的“人员”文件夹的文件夹中
例如。如果当前文件夹为“D:\2\people”,并且您运行
"C:\Program Files (x86)\Java\jdk1.8.0_60\bin\javac.exe" controller.java
然后您将得到您描述的错误
但如果您将当前文件夹更改为“D:\2”并运行
所有这些都将被汇编。别忘了修复构造函数。编译时是否正确设置了类路径?您需要将其设置为包含文件夹人员(包括已编译人员)的位置。类在编译中是否已将类路径设置为正确的?您需要将其设置为包含文件夹人员(包括已编译人员)的位置。classI也尝试过,我得到了相同的“找不到符号”错误。我所描述的是您必须解决的一个问题。如果您仍然得到错误,那么还有更多错误。一件事是:如果将类放入包中,它们必须位于与包结构匹配的目录中。您的文件必须位于名为people
的目录中。您引用的命令表明您没有这样做。@Jasper是对的!首先修复你的代码!从Person.java端删除显式构造函数,然后使用javac Person.java controller.java进行编译。java
我也尝试过,我得到了相同的“找不到符号”错误。我所描述的是您必须解决的一件事。如果您仍然得到错误,那么还有更多错误。一件事是:如果将类放入包中,它们必须位于与包结构匹配的目录中。您的文件必须位于名为people
的目录中。您引用的命令表明您没有这样做。@Jasper是对的!首先修复你的代码!从Person.java端删除显式构造函数,然后使用javac Person.java controller.java进行编译。java
我的类路径中有包含“people”文件夹的目录,我是否还需要将“people”文件夹添加到我的类路径中?我的类路径中有包含“people”文件夹的目录,我是否还需要将“人员”文件夹添加到我的类路径?