Java Netbeans找不到符号



我正在完成Java编程教材中的一项练习作业,遇到了常见的"错误:找不到符号";。我必须创建一个引用同一目录中另一个类的应用程序,但编译器找不到该类。

以下是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

> C:UserswaxyshawDesktopSchoolCH3-EX11SpaServicesrcmainjavacomspaservice>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:UserswaxyshawDesktopSchoolCH3-EX11SpaServicesrcmainjavacomspaservice>dir
Volume in drive C has no label.
Volume Serial Number is 9A2C-802D
Directory of C:UserswaxyshawDesktopSchoolCH3-EX11SpaServicesrcmainjavacomspaservice
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的理解还不足以自行解决问题。我希望我能得到社区的帮助。

让我知道你的想法。如有任何帮助,我们将不胜感激。

编辑:根据请求,我已经包含了错误的屏幕截图:

错误屏幕截图

第2版:包括NetBeans:中输出窗口的屏幕截图

Netbeans输出

用于执行程序的命令java CreateSpaServices.java不适用于具有多个源文件的程序。它用于在不编译的情况下执行单源文件java程序。详见JEP330。

通常,您会编写Java代码,编译它(javac(,然后运行它(java(。您可以手动使用,也可以使用类似NetBeans的编辑器。

因此,上面显示的命令指示您使用NetBeans作为编辑器,不运行也不使用来自NetBeans的编译。原因尚不清楚。

通常,您会使用NetBeans作为编辑器和编译器。意味着您可以在NetBeans中编写代码,然后创建可以从命令行执行的jarclass文件。

当你只想运行程序时,你可以用Right Click CreateSpaServices Run File来执行CreateSpaServicesMain方法。

我设法让它工作起来。与这里的许多其他文章一样,您必须从根目录进行编译。当你第一次启动一个项目时,NetBeans创建了这么多目录,这让你很困惑。

我的包是com.spaservice。我必须从src\main\java文件夹编译这个类。然后,java文件能够在编译过程中找到另一个类。

最新更新