我是关于将一个linux工具移植到Windows . 该工具在linux系统上运行良好,但现在在Windows上我得到这个“找不到符号”的错误 .
我有这个小班主题:
package foo;
import foo.bar;
public class Main {
public static void main(String[] args) throws Exception {
bar.getInstance();
}
}
并且在执行javac Main.java时出现错误:
import foo.bar:找不到符号^符号:class bar location:package foo
Main.java和bar.java位于同一目录中 . 我错过了什么?
2 回答
首先,
bar
应该被称为Bar
是惯用的...理想情况下,您应该从Main.java上面的目录编译,如下所示:
这将创建一个名为“out”的目录,其中包含另一个目录“foo”,该目录将包含Main.class和Bar.class . 因此,再次从父目录,您可以运行:
源位置不必与包结构匹配 . 您可以从包含
Main.java
和Bar.java
的目录中调用javac,如下所示:(然后以与以前相同的方式运行它)但是,根据包构建源代码通常是一个更好的主意 .
您可能会发现使用IDE(例如Eclipse或NetBeans)更容易,它将为您处理所有编译等 . 如果您确实想从命令行构建一个真实的项目,那么您应该考虑使用完整的构建系统,例如Ant或Maven .
(请注意,如果您尝试以相同的方式编译,则在Linux上会遇到与在Windows上相同的错误 . )
我认为你需要在尝试编译foo之前正确编译类栏,这就是在适当的包结构中生成类文件 .