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