【发布时间】:2011-02-09 23:11:05
【问题描述】:
我最近每次尝试编译创建我创建的类的实例的代码时都会收到此 Java 编译错误。我试过手动编译,从不同的位置编译,甚至尝试在安全模式下编译。我还在我的计算机上完全重新安装了 Java。这是我编写的代码示例以及我总是得到的错误:
Instance creator class:
public class Nothing {
public static void main(String args[]) {
Can World = new Can();
}
}
实例化类:
public class Can {
public Can() {
System.out.println("Test");
}
}
编译错误:
Nothing.java:4: cannot find symbol
symbol : class Can
location: class Nothing
Can World = new Can();
^
Nothing.java:4: cannot find symbol
symbol : class Can
location: class Nothing
Can World = new Can();
^
2 errors
比我更了解 Java 的人尝试编译我遇到问题但没有成功的文件。此外,当我从 Eclipse(我的 IDE)中运行代码时,它会正常运行。
任何建议或解决方案都将非常非常感激。我真的很讨厌这样的事情阻止我编程。再次感谢。
编辑: 我曾经能够像这样编译类,直到最近我才开始收到这个错误。我正在使用我在 Eclipse IDE 中创建的外部工具进行编译,但我也尝试通过导航到 CMD 窗口中两个文件所在的目录并使用 javac Nothing.java 进行编译,但出现相同的错误。我也尝试过先编译 Can.java(编译),然后是 Nothing.java,但这也失败了。这是我从 CMD 窗口编译时得到的文本:
02/09/2011 06:44 PM <DIR> .
02/09/2011 06:44 PM <DIR> ..
02/09/2011 03:45 PM 289 .classpath
02/09/2011 03:45 PM 382 .project
02/09/2011 03:45 PM <DIR> .settings
02/09/2011 06:00 PM 75 Can.java
02/09/2011 05:49 PM 102 Nothing.java
4 File(s) 848 bytes
3 Dir(s) 64,669,216,768 bytes free
C:\Users\Alex\Mindstorms\NXT\leJOS NXJ\Moment>javac Nothing.java
Nothing.java:4: cannot find symbol
symbol : class Can
location: class Nothing
Can World = new Can();
^
Nothing.java:4: cannot find symbol
symbol : class Can
location: class Nothing
Can World = new Can();
^
2 errors
【问题讨论】:
-
两个类是否在同一个文件中?,我的意思是Can类在Nothing类中声明?如果不是,你必须导入它
-
@Chuck,两个公共类不能存在于同一个文件中(如果它们存在,他会因此得到一个错误),所以不能这样。
-
@Chuck Birkin:这两个课程都是公开的。如果它们在同一个文件中,它们将不会编译,但错误将是“class Can 是公共的,应该在名为 Can.java public class Can {”或类似的文件中声明。
-
你是如何编译这些类的?如果您使用
javac来执行此操作,您能否提供您正在使用的确切命令? -
我认为值得检查您的源文件中是否没有不可打印的字符(正如 GreenMatt 在comment in his answer 中所建议的那样)
标签: java compilation compiler-errors