Java Netbeans找不到符号

2lpgd968  于 2022-11-10  发布在  Java
关注(0)|答案(2)|浏览(211)

我正在完成我的Java编程教科书中的练习作业,遇到了常见的“错误:找不到符号”.“我必须创建一个引用同一目录中另一个类得应用程序,但编译器找不到该类.
下面是www.example.com的代码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;
    }
}

这是我的www.example.com代码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:\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中包含输出窗口的屏幕快照:
Netbeans-Output

sqxo8psd

sqxo8psd1#

您用来执行程式的指令java CreateSpaServices.java并不适用于有多个原始程式档的程式。它是用来执行单一原始程式档的java程式,而不需要编译。请参阅JEP330以取得详细信息。
通常你会编写你的Java代码,编译它(javac),然后运行它(java)。你可以手动使用,也可以使用像NetBeans这样的编辑器。
因此,上面显示的命令表明,您只是将NetBeans用作Editor,而不运行或使用NetBeans的编译。
通常您会使用NetBeans作为您的编辑器和编译器。这意味着您在NetBeans中编写代码,然后创建可以从命令行执行的jarclass文件。
当你只想运行程序时你可以Right Click CreateSpaServices \ Run File来执行CreateSpaServicesMain方法。

3b6akqbq

3b6akqbq2#

我设法让它工作起来。就像这里的许多其他帖子一样,你必须从根目录编译。NetBeans在你第一次启动一个项目时创建了这么多目录,这让你很困惑。
我的包是com.spaservice,我必须编译src\main\java文件夹中的类,然后java文件才能在编译过程中找到另一个类。

相关问题