Java Netbeans 找不到符号
Java Netbeans Cannot Find Symbol
我正在完成 Java 编程教科书中的练习作业,遇到了常见的“错误:找不到符号”。我必须创建一个引用同一目录中另一个 class 的应用程序,但编译器无法找到 class.
这是 SpaService.java 的代码:
package com.spaservice;
public class SpaService {
private String serviceDescription;
private double price;
public void setServiceDescription(String service){
serviceDescription = service;
}
public void setPrice(double servicePrice){
price = servicePrice;
}
public String getServiceDescription(){
return serviceDescription;
}
public double getPrice(){
return price;
}
}
这是我的 CreateSpaServices.java
代码
package com.spaservice;
import java.util.Scanner;
public class CreateSpaServices {
public static void main(String args[]) {
String service;
double price;
SpaService firstService = new SpaService();
SpaService secondService = new SpaService();
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter service >> ");
service = keyboard.nextLine();
System.out.print("Enter price >> ");
price = keyboard.nextDouble();
firstService.setServiceDescription(service);
firstService.setPrice(price);
keyboard.nextLine();
System.out.print("Enter service >> ");
service = keyboard.nextLine();
System.out.print("Enter price >> ");
price = keyboard.nextDouble();
secondService.setServiceDescription(service);
secondService.setPrice(price);
System.out.println("First service details:");
System.out.println(firstService.getServiceDescription() +
" $" + firstService.getPrice());
System.out.println("Second service details:");
System.out.println(secondService.getServiceDescription() +
" $" + secondService.getPrice());
}
}
这是一个相当简单的程序,但由于某些原因 CreateSpaServices.java 找不到 SpaService.class。这是 Windows:
中我的命令提示符的输出
> C:\Users\waxyshaw\Desktop\School\CH3-EX11\SpaService\src\main\java\com\spaservice>java
> CreateSpaServices.java CreateSpaServices.java:18: error: cannot find
> symbol
> SpaService firstService = new SpaService();
> ^ symbol: class SpaService location: class CreateSpaServices CreateSpaServices.java:18: error: cannot find symbol
> SpaService firstService = new SpaService();
> ^ symbol: class SpaService location: class CreateSpaServices CreateSpaServices.java:19: error:
> cannot find symbol
> SpaService secondService = new SpaService();
> ^ symbol: class SpaService location: class CreateSpaServices CreateSpaServices.java:19: error: cannot find symbol
> SpaService secondService = new SpaService();
> ^ symbol: class SpaService location: class CreateSpaServices 4 errors error: compilation failed
这是我的目录结构:
C:\Users\waxyshaw\Desktop\School\CH3-EX11\SpaService\src\main\java\com\spaservice>dir
Volume in drive C has no label.
Volume Serial Number is 9A2C-802D
Directory of C:\Users\waxyshaw\Desktop\School\CH3-EX11\SpaService\src\main\java\com\spaservice
05/29/2021 17:26 <DIR> .
05/29/2021 17:26 <DIR> ..
05/29/2021 17:28 1,418 CreateSpaServices.java
05/29/2021 17:25 590 SpaService.java
2 File(s) 2,008 bytes
2 Dir(s) 609,747,128,320 bytes free
我正在使用 Netbeans 12.3 编写这段代码,并且使用 IDE 可以很好地编译它。我在 Windows 10.
根据研究,我在 Stack Overflow 上看到了类似的问题。我已经尝试 运行 来自我的 src 文件夹、我的 java 文件夹和我的 com 文件夹的命令,结果相似。我怀疑这个问题可能与软件包有关,但我对 Java 的了解还不足以自行解决问题。我希望我能从社区得到一些帮助。
告诉我你的想法。任何帮助将不胜感激。
编辑:根据要求,我提供了错误的屏幕截图:
Error-Screenshot
Edit2:在 NetBeans 中包含输出 window 的屏幕截图:
Netbeans-Output
您用于执行程序的命令 java CreateSpaServices.java
不适用于具有多个源文件的程序。它用于执行单源文件 java 程序而无需编译。有关详细信息,请参阅 JEP330。
通常您会编写 Java 代码,编译它 (javac
),然后 运行 它 (java
)。您可以手动使用或使用像 NetBeans 这样的编辑器。
所以您在上面显示的命令表明您使用 NetBeans 只是作为编辑器而不是 运行 也不使用 NetBeans 的编译。原因不明。
通常您会使用 NetBeans 作为您的编辑器和编译器。意味着您在 NetBeans 中编写代码,然后创建可以从命令行执行的 jar
或 class
文件。
当你只想运行程序时你可以Right Click CreateSpaServices \ Run File
执行CreateSpaServices
的Main
方法。
我设法让它工作了。就像这里的许多其他帖子一样,您必须从根目录进行编译。 NetBeans 在您第一次启动项目时创建了如此多的目录,这让您感到困惑。
我的包裹是 com.spaservice。我必须从 src\main\java 文件夹编译 class。然后 java 文件能够在编译期间找到另一个 class。
我正在完成 Java 编程教科书中的练习作业,遇到了常见的“错误:找不到符号”。我必须创建一个引用同一目录中另一个 class 的应用程序,但编译器无法找到 class.
这是 SpaService.java 的代码:
package com.spaservice;
public class SpaService {
private String serviceDescription;
private double price;
public void setServiceDescription(String service){
serviceDescription = service;
}
public void setPrice(double servicePrice){
price = servicePrice;
}
public String getServiceDescription(){
return serviceDescription;
}
public double getPrice(){
return price;
}
}
这是我的 CreateSpaServices.java
代码package com.spaservice;
import java.util.Scanner;
public class CreateSpaServices {
public static void main(String args[]) {
String service;
double price;
SpaService firstService = new SpaService();
SpaService secondService = new SpaService();
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter service >> ");
service = keyboard.nextLine();
System.out.print("Enter price >> ");
price = keyboard.nextDouble();
firstService.setServiceDescription(service);
firstService.setPrice(price);
keyboard.nextLine();
System.out.print("Enter service >> ");
service = keyboard.nextLine();
System.out.print("Enter price >> ");
price = keyboard.nextDouble();
secondService.setServiceDescription(service);
secondService.setPrice(price);
System.out.println("First service details:");
System.out.println(firstService.getServiceDescription() +
" $" + firstService.getPrice());
System.out.println("Second service details:");
System.out.println(secondService.getServiceDescription() +
" $" + secondService.getPrice());
}
}
这是一个相当简单的程序,但由于某些原因 CreateSpaServices.java 找不到 SpaService.class。这是 Windows:
中我的命令提示符的输出> C:\Users\waxyshaw\Desktop\School\CH3-EX11\SpaService\src\main\java\com\spaservice>java
> CreateSpaServices.java CreateSpaServices.java:18: error: cannot find
> symbol
> SpaService firstService = new SpaService();
> ^ symbol: class SpaService location: class CreateSpaServices CreateSpaServices.java:18: error: cannot find symbol
> SpaService firstService = new SpaService();
> ^ symbol: class SpaService location: class CreateSpaServices CreateSpaServices.java:19: error:
> cannot find symbol
> SpaService secondService = new SpaService();
> ^ symbol: class SpaService location: class CreateSpaServices CreateSpaServices.java:19: error: cannot find symbol
> SpaService secondService = new SpaService();
> ^ symbol: class SpaService location: class CreateSpaServices 4 errors error: compilation failed
这是我的目录结构:
C:\Users\waxyshaw\Desktop\School\CH3-EX11\SpaService\src\main\java\com\spaservice>dir
Volume in drive C has no label.
Volume Serial Number is 9A2C-802D
Directory of C:\Users\waxyshaw\Desktop\School\CH3-EX11\SpaService\src\main\java\com\spaservice
05/29/2021 17:26 <DIR> .
05/29/2021 17:26 <DIR> ..
05/29/2021 17:28 1,418 CreateSpaServices.java
05/29/2021 17:25 590 SpaService.java
2 File(s) 2,008 bytes
2 Dir(s) 609,747,128,320 bytes free
我正在使用 Netbeans 12.3 编写这段代码,并且使用 IDE 可以很好地编译它。我在 Windows 10.
根据研究,我在 Stack Overflow 上看到了类似的问题。我已经尝试 运行 来自我的 src 文件夹、我的 java 文件夹和我的 com 文件夹的命令,结果相似。我怀疑这个问题可能与软件包有关,但我对 Java 的了解还不足以自行解决问题。我希望我能从社区得到一些帮助。
告诉我你的想法。任何帮助将不胜感激。
编辑:根据要求,我提供了错误的屏幕截图:
Error-Screenshot
Edit2:在 NetBeans 中包含输出 window 的屏幕截图:
Netbeans-Output
您用于执行程序的命令 java CreateSpaServices.java
不适用于具有多个源文件的程序。它用于执行单源文件 java 程序而无需编译。有关详细信息,请参阅 JEP330。
通常您会编写 Java 代码,编译它 (javac
),然后 运行 它 (java
)。您可以手动使用或使用像 NetBeans 这样的编辑器。
所以您在上面显示的命令表明您使用 NetBeans 只是作为编辑器而不是 运行 也不使用 NetBeans 的编译。原因不明。
通常您会使用 NetBeans 作为您的编辑器和编译器。意味着您在 NetBeans 中编写代码,然后创建可以从命令行执行的 jar
或 class
文件。
当你只想运行程序时你可以Right Click CreateSpaServices \ Run File
执行CreateSpaServices
的Main
方法。
我设法让它工作了。就像这里的许多其他帖子一样,您必须从根目录进行编译。 NetBeans 在您第一次启动项目时创建了如此多的目录,这让您感到困惑。
我的包裹是 com.spaservice。我必须从 src\main\java 文件夹编译 class。然后 java 文件能够在编译期间找到另一个 class。