Java Netbeans找不到符号

Java Netbeans找不到符号,java,windows,netbeans,cannot-find-symbol,Java,Windows,Netbeans,Cannot Find Symbol,我正在完成Java编程教科书中的一个实践作业,遇到了常见的“错误:找不到符号”。我必须创建一个引用同一目录中另一个类的应用程序,但编译器找不到该类 以下是SpaService.java的代码: package com.spaservice; public class SpaService { private String serviceDescription; private double price; public void setServiceDescri

我正在完成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。以下是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
C:\Users\waxyshaw\Desktop\School\CH3-EX11\SpaService\src\main\java\com\SpaService>dir
驱动器C中的卷没有标签。
卷序列号为9A2C-802D
C:\Users\waxyshaw\Desktop\School\CH3-EX11\SpaService\src\main\java\com\SpaService目录
05/29/2021  17:26              .
05/29/2021  17:26              ..
2021年5月29日17:28 1418 CreateSpaServices.java
2021年5月29日17:25 590 SpaService.java
2个文件2008字节
2个目录(s)609747128320个可用字节
我正在使用Netbeans 12.3编写这段代码,它使用IDE编译得很好。我在Windows10上

根据研究,我在这里看到了关于堆栈溢出的类似问题。我尝试从src文件夹、java文件夹和com文件夹运行该命令,结果类似。我怀疑这个问题可能与软件包有关,但我还不太了解Java,无法独自解决问题。我希望我能从社区得到一些帮助

让我知道你的想法。任何帮助都将不胜感激

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

Edit2:在NetBeans中包含输出窗口的屏幕截图:


用于执行程序的命令
java CreateSpaServices.java
不适用于具有多个源文件的程序。它用于执行单个源文件java程序,无需编译。有关更多详细信息,请参阅

通常您会编写Java代码,编译它(
javac
),然后运行它(
Java
)。您可以手动使用,也可以像NetBeans一样使用编辑器

因此,上面显示的命令指示您将NetBeans用作编辑器,而不运行或使用NetBeans的编译。原因不明

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


当您只想运行该程序时,您可以
右键单击CreateSpaServices\run File
,执行
CreateSpaServices
Main
方法,我已设法使其工作。与这里的许多其他文章一样,您必须从根目录编译。NetBeans在您第一次启动一个项目时创建了这么多目录,这让人感到困惑


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

感谢您的回复。这是否意味着我应该在同一个.java文件中配置多个类,而不是拥有两个单独的文件?我尝试将SpaService.java代码中的类添加到我的CreateSpaServices.java类中,但它只给了我另一个错误:线程“main”中的异常java.lang.RuntimeException:不可编译的源代码-错误的树类型:com.spaservice.spaservice“这根本没有解决问题。OP在从命令行运行在NetBeans中编译的应用程序时询问错误。在NetBeans中运行应用程序与此无关。很抱歉不同意。但是当您检查调用了哪个命令时,您会看到OP试图执行一个Java源文件,而不是通过NetBeans编译的任何东西。正如我回答的,只有当源文件是JEP330中指定的单个源文件时,才能运行源文件。为了简化操作的实时性,我建议现在通过NetBeans而不是通过命令行运行这些东西。嗨,asbachb,我已经设法让代码至少在NetBeans中编译,但是当我尝试运行代码时,它达到了50%,并且不执行任何逻辑,比如提示用户“进入服务”。添加一个屏幕截图,显示从命令行运行时出现“找不到符号”错误,以便其他人可以尝试重现您的问题。好的,添加了屏幕截图!