我是关于将一个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位于同一目录中。 我错过了什么?
答案 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.java
和Bar.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 将引发此错误。