每次我尝试编译创建我创建的类实例的代码时,我最近都遇到了这个Java编译错误。我尝试手动编译,从不同的位置编译,甚至尝试在安全模式下编译。我还在我的计算机上完全重新安装了Java。这是我写的代码示例和我总是得到的错误:
实例创建者类:
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
答案 0 :(得分:2)
问题是您需要具有适当的import语句(如果在单独的包中),并且您需要从相应的目录运行Java编译器。假设你的目录结构如下:
src/
com/
yourdomain/
example/
Can.java
Nothing.java
然后,您需要在* .java文件的顶部添加以下内容:
package com.yourdomain.example;
你应该在Nothing.java中加入以下import语句(从技术上讲,当它们都在同一个包中时,这是不必要的,但在单独的包中是必要的,这是一个好习惯):
import com.yourdomain.example.Can;
然后你将从src
目录中调用编译器,如下所示:
javac com/yourdomain/example/*.java
然后您可以使用以下命令运行此程序:
java com.yourdomain.example.Nothing
顺便说一下,你真的不应该这样手工制作项目;您应该使用自动构建系统,例如Maven或Ant。如果使用NetBeans IDE创建项目,除了为您提供简单的“构建”,“运行”和“构建和运行”按钮以及各种不错的IDE功能(代码突出显示,增量编译和建议)修复),它将为您生成一个Ant构建项目。
修改的
根据您更新的问题,...请注意,Eclipse的编译器与javac
不同。如果您使用Cygwin安装了javac,或者您已经在Windows和UNIX之间共享文件(可能通过版本控制系统),则可能会遇到编码问题。我建议以UTF-8重新保存这些文件并运行unix2dos(反之亦然,如果你通过Cygwin安装了javac)并重新编译。如果这不起作用,可能值得重新安装javac。如果做不到这一点,总会有Ubuntu;)。
答案 1 :(得分:1)
将您为每个类呈现的代码放入单独的文件(当然,名为Can.java和Nothing.java),并将这两个文件放在同一目录中,然后使用命令行编译器为我编译:
javac Nothing.java
该错误表示编译器在编译Nothing时无法找到Can类。你有两个文件在同一个目录?
答案 2 :(得分:0)
我已经弄清楚了。事实证明,我曾尝试在我的计算机上使用Java设置旧版本的Lego Robotics,并且我创建了一些环境变量来配合它。其中一个是CLASSPATH变量。我非常有信心Java试图读取该变量(我不再使用它)来查找我的类。一旦我删除它(和我没有使用的其他旧变量),重新启动我的电脑,并重新安装JDK,一切正常。
感谢大家的帮助,但是:)