【问题标题】:java import "cannot find symbol"java导入“找不到符号”
【发布时间】:2012-04-26 18:55:47
【问题描述】:

我打算将一个 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: 找不到符号 ^ 符号:类栏 位置:包foo

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

【问题讨论】:

  • 试试 javac *.java 你得到同样的结果吗?

标签: java import


【解决方案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 上相同的错误。)

【讨论】:

    【解决方案2】:

    我认为您需要在尝试编译 foo 之前正确编译类栏,即在正确的包结构中生成类文件。

    【讨论】:

      【解决方案3】:

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

      示例:尝试在 MainActivity.java 中导入 SomeClass.kt 会抛出此错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-04-06
        • 1970-01-01
        • 2022-12-31
        • 2016-06-07
        • 2021-12-21
        • 2021-08-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多