Java错误:找不到符号,但所有内容都在同一个包中
javac不会扫描你的整个磁盘,你需要告诉它一切。没有人真正调用javac是有原因的,从来没有。他们运行mvn,gradle,或者设置了一个CI工具,或者让他们的IDE这样做。
如果你因为一些奇怪的原因而必须使用javac(帮你自己一个忙,学习maven的第一步,这真的不是很难,而且可以避免这种混乱),你需要告诉它去哪里找。有多种方法可以做到这一点:
假设您有以下文件:
/Users/zekrofire/projects/MyApp/src/StackCreator/MyApp.java
/Users/zekrofire/projects/MyApp/src/StackCreator/util/MyFastList.java
/Users/zekrofire/projects/MyApp/src/otherpkg/Something.java
您希望类文件位于/Users/zekrofire/projects/MyApp/bin
。
最简单的方法:一次编译所有的东西
忘掉src目录,混合java和类文件(如果您觉得这很难看,请参阅关于使用maven的注释)。然后,就。。。
javac *.java
这会解决你的问题。告诉javac关于每个源文件的信息。不幸的是,java不能递归地搜索每个java文件的整个目录,您必须执行以下操作:
cd /Users/zekrofire/projects/MyApp
cd src
mv -r * ..
cd ..
rmdir src
javac StackCreator/*.java otherPkg/*.java StackCreator/util/*.java
Use -classpath
cd /Users/zekrofire/projects/MyApp
javac -cp bin -d bin src/StackCreator/*.java
现在您可以一次编译一个文件。
Use -sourcepath
这并不像听起来那么酷,不要认为这可以让您跳过使用实际的构建系统。
cd /Users/zekrofire/projects/MyApp
javac -sourcepath src -d bin src/StackCreator/*.java
绝对的,最好的方式
apt install maven
; create a pom.xml file describing your deps
; move your source files to src/main/java as per
; maven standard
mvn compile
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。