java导入“找不到符号”

时间:2012-04-26 18:55:48

标签: java import

我是关于将一​​个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:找不到符号         ^ 符号:类吧 location:package foo

Main.java和bar.java位于同一目录中。 我错过了什么?

3 个答案:

答案 0 :(得分:5)

首先,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上相同的错误。)

答案 1 :(得分:1)

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

答案 2 :(得分:0)

如果你们中有人做过 kotlin 项目,然后在 gradle 中在没有 kotlin 支持的情况下开发了一个完整的 Java 项目,并且你将 kotlin 中的一个类放入 Java 项目中并尝试导入那个 Kotlin 类,你会得到这个导入问题。没有参考确切的问题,但有人可能会觉得它有帮助。

示例:尝试在 MainActivity.java 中导入 SomeClass.kt 将引发此错误。