This question already has answers here:
What does a “Cannot find symbol” or “Cannot resolve symbol” error mean?
(15个答案)
1年前关闭。
我有一个作业,需要一个初始类(class)和一个单独的项目来测试该类(class)。现在,每次我尝试编译它时,都会出现以下错误:
实际代码如下。香港专业教育学院试图谷歌,youtubing,并阅读我的教科书。我很困惑为什么这么说。香港专业教育学院试图关闭并重新打开NetBeans,甚至卸载和安装IDE,但显然没有任何效果。我尝试将项目属性中的主类设置为我正在测试的BloodData类(这是大多数建议),但这也没有用。
测试驱动程序:
我正在使用的编译命令是:
这样可以解决您的链接错误。要运行编译的类文件,您还可以从父文件夹发出以下命令。
也许其他人可以解释为什么必须以比我更好的方式来管理软件包,但是我认为这与Java运行时环境(JRE)如何识别属于软件包的类有关。您不能简单地从package文件夹本身内进行编译/执行。似乎您需要从相对于软件包路径的文件夹进行编译/执行。
编辑-
为了基于更新的编译命令和路径信息尽可能明确,您需要执行以下操作:
这样可以解决您的链接错误。然后,您可以使用以下命令从同一目录中运行代码:
我知道这似乎很奇怪,但要点是-使用Java软件包时,必须执行相对于软件包路径的命令,在您的情况下,该目录是包含
(15个答案)
1年前关闭。
我有一个作业,需要一个初始类(class)和一个单独的项目来测试该类(class)。现在,每次我尝试编译它时,都会出现以下错误:
package blooddata;
TestBloodData.java:10: error: cannot find symbol
BloodData patient1 = new BloodData("AB", "-");
^
symbol: class BloodData
location: class TestBloodData
TestBloodData.java:10: error: cannot find symbol
BloodData patient1 = new BloodData("AB", "-");
^
symbol: class BloodData
location: class TestBloodData
TestBloodData.java:11: error: cannot find symbol
BloodData patient2 = new BloodData("B", "+");
^
symbol: class BloodData
location: class TestBloodData
TestBloodData.java:11: error: cannot find symbol
BloodData patient2 = new BloodData("B", "+");
^
symbol: class BloodData
location: class TestBloodData
4 errors
实际代码如下。香港专业教育学院试图谷歌,youtubing,并阅读我的教科书。我很困惑为什么这么说。香港专业教育学院试图关闭并重新打开NetBeans,甚至卸载和安装IDE,但显然没有任何效果。我尝试将项目属性中的主类设置为我正在测试的BloodData类(这是大多数建议),但这也没有用。
package blooddata;
/**
*
* @author CaseyPhillips
*/
public class BloodData {
public String bloodType;
public String rHFactor;
public BloodData()
{
bloodType = "O";
rHFactor = "+";
}
public BloodData(String bloodType, String rHFactor)
{
this.bloodType = bloodType;
this.rHFactor = rHFactor;
}
public void setBloodType(String bloodType)
{
this.bloodType = bloodType;
}
public String getBloodType()
{
return bloodType;
}
public void setRHFactor(String rHFactor)
{
this.rHFactor = rHFactor;
}
public String getRHFactor()
{
return rHFactor;
}
public void showBloodType()
{
System.out.println("The patient's blood type is " +
bloodType + " and their Rh Factor is " + rHFactor);
}
public static void main(String[] args) {
// TODO code application logic here
}
}
测试驱动程序:
package blooddata;
/*
Author: Casey Phillips
*/
public class TestBloodData
{
public static void main(String[] args)
{
BloodData patient1 = new BloodData("AB", "-");
BloodData patient2 = new BloodData("B", "+");
patient1.showBloodType();
patient2.showBloodType();
}
}
我正在使用的编译命令是:
Caseys-MacBook-Pro:~ CaseyPhillips$ cd NetBeansProjects/BloodData/src/blooddata
Caseys-MacBook-Pro:blooddata CaseyPhillips$ javac TestBloodData.java
TestBloodData.java:11: error: cannot find symbol
BloodData patient1 = new BloodData("AB", "-");
^
symbol: class BloodData
location: class TestBloodData
TestBloodData.java:11: error: cannot find symbol
BloodData patient1 = new BloodData("AB", "-");
^
symbol: class BloodData
location: class TestBloodData
TestBloodData.java:12: error: cannot find symbol
BloodData patient2 = new BloodData("B", "+");
^
symbol: class BloodData
location: class TestBloodData
TestBloodData.java:12: error: cannot find symbol
BloodData patient2 = new BloodData("B", "+");
^
symbol: class BloodData
location: class TestBloodData
4 errors
最佳答案
由于您使用的是软件包,因此需要在名为BloodData
(以软件包命名的文件夹)的文件夹中包括TestBloodData
和blooddata
这两个类。
假设文件BloodData.java
和TestBloodData.java
在名为blooddata
的文件夹内。 从父文件夹中,您应该能够使用javac
编译驱动程序。
javac blooddata/TestBloodData.java
这样可以解决您的链接错误。要运行编译的类文件,您还可以从父文件夹发出以下命令。
java blooddata.TestBloodData
也许其他人可以解释为什么必须以比我更好的方式来管理软件包,但是我认为这与Java运行时环境(JRE)如何识别属于软件包的类有关。您不能简单地从package文件夹本身内进行编译/执行。似乎您需要从相对于软件包路径的文件夹进行编译/执行。
编辑-
为了基于更新的编译命令和路径信息尽可能明确,您需要执行以下操作:
$ cd NetBeansProjects/BloodData/src/
$ javac blooddata/TestBloodData.java
这样可以解决您的链接错误。然后,您可以使用以下命令从同一目录中运行代码:
$ java blooddata.TestBloodData
我知道这似乎很奇怪,但要点是-使用Java软件包时,必须执行相对于软件包路径的命令,在您的情况下,该目录是包含
blooddata
的目录,而不是blooddata
目录本身。07-27 15:01