首页 文章

java导入“找不到符号”

提问于
浏览
0

我是关于将一个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 回答

  • 1

    首先, bar 应该被称为 Bar 是惯用的...

    理想情况下,您应该从Main.java上面的目录编译,如下所示:

    javac -d out foo/Main.java foo/Bar.java
    

    这将创建一个名为“out”的目录,其中包含另一个目录“foo”,该目录将包含Main.class和Bar.class . 因此,再次从父目录,您可以运行:

    java -cp out foo.Main
    

    源位置不必与包结构匹配 . 您可以从包含 Main.javaBar.java 的目录中调用javac,如下所示:

    javac -cp out Main.java Bar.java
    

    (然后以与以前相同的方式运行它)但是,根据包构建源代码通常是一个更好的主意 .

    您可能会发现使用IDE(例如Eclipse或NetBeans)更容易,它将为您处理所有编译等 . 如果您确实想从命令行构建一个真实的项目,那么您应该考虑使用完整的构建系统,例如Ant或Maven .

    (请注意,如果您尝试以相同的方式编译,则在Linux上会遇到与在Windows上相同的错误 . )

  • 5

    我认为你需要在尝试编译foo之前正确编译类栏,这就是在适当的包结构中生成类文件 .

相关问题