我正在完成我的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
2条答案
按热度按时间sqxo8psd1#
您用来执行程式的指令
java CreateSpaServices.java
并不适用于有多个原始程式档的程式。它是用来执行单一原始程式档的java程式,而不需要编译。请参阅JEP330以取得详细信息。通常你会编写你的Java代码,编译它(
javac
),然后运行它(java
)。你可以手动使用,也可以使用像NetBeans这样的编辑器。因此,上面显示的命令表明,您只是将NetBeans用作Editor,而不运行或使用NetBeans的编译。
通常您会使用NetBeans作为您的编辑器和编译器。这意味着您在NetBeans中编写代码,然后创建可以从命令行执行的
jar
或class
文件。当你只想运行程序时你可以
Right Click CreateSpaServices \ Run File
来执行CreateSpaServices
的Main
方法。3b6akqbq2#
我设法让它工作起来。就像这里的许多其他帖子一样,你必须从根目录编译。NetBeans在你第一次启动一个项目时创建了这么多目录,这让你很困惑。
我的包是com.spaservice,我必须编译src\main\java文件夹中的类,然后java文件才能在编译过程中找到另一个类。