我第一次学习Java。我写了一个简单的程序:
public class Solver {
public static void main(String[] args) {
double angle = 1.5;
double height = Math.sin(angle);
System.out.print("The sine of " + angle + " is: ");
System.out.println(height);
}
}
当我尝试编译时,我在终端中收到以下错误:
Solver.java:4: cannot access Math
bad class file: ./Math.java
file does not contain class Math
Please remove or make sure it appears in the correct subdirectory of the classpath.
double height = Math.sin(angle);
^
1 error
为什么我无法访问Math类?
答案 0 :(得分:21)
如果文件名为Math.java(它似乎是),则必须包含一个名为Math
的类。看看this post。 Java正在寻找一个名为./Math.java
的文件,在您的案例中,该文件似乎不包含名为Math
的类。
如果您实际上尝试使用标准Java Math
程序包,则需要删除项目目录中名为Math.java
的任何内容,因为这会与内置程序冲突,或者使用完全限定的导入来访问标准的导入:import java.lang.Math;
。通常不需要java.lang
包中的导入,但如果您的名称有冲突,则必须使用完全限定的导入来明确访问它。
真的,最好养成putting everything in a named package的习惯,并始终使用完全合格的导入。你会省去很多麻烦。
答案 1 :(得分:15)
删除您可能无意中遗留在源代码目录中的文件Math.java
。此文件阻止正常使用JDK的java.lang.Math
类。
您还应该注意,在默认包中定义类是不好的做法,并且在此过程中会给您带来各种问题。将源代码放入命名包中。