我打算将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时现在出现错误:
导入foo.bar:找不到符号^符号:类栏位置:包foo
Main.java和bar.java在同一目录中。我想念什么?
一方面,bar应该称呼Bar为惯用语…
bar
Bar
理想情况下,应从Main.java 上方 的目录进行编译,如下所示:
javac -d out foo/Main.java foo/Bar.java
这将创建一个名为“ out”的目录,其中包含另一个目录“ foo”,其中将包含Main.class和Bar.class。因此,再次从父目录运行:
java -cp out foo.Main
源位置不 具有 相匹配的封装结构。您 可以 从包含的目录中调用javac Main.java,Bar.java如下所示:
Main.java
Bar.java
javac -cp out Main.java Bar.java
(然后以与以前相同的方式运行它)。通常,根据包来组织源代码通常是一个更好的主意。
您可能会发现使用IDE(例如Eclipse或NetBeans)会更轻松,因为它将为您处理所有编译等工作。如果您 确实 想从命令行构建真实的项目,则可能应该考虑使用完整的构建系统,例如Ant或Maven。
(请注意,如果尝试以相同的方式进行编译,则在Linux上将与在Windows上收到相同的错误。)