这些类属于同一个pkg。它们在dkg中,是pkg的名称。
错误
javac PackTest.java
PackTest.java:8: cannot find symbol
symbol : class PriTest
location: class pacc.PackTest
System.out.println(new PriTest().getSaluto());
^
1 error
PKG中的类别pacc
$ cat PackTest.java
package pacc;
import java.io.*;
public class PackTest
{
public static void main(String[] args)
{
System.out.println(new PriTest().getSaluto());
}
}
$ cat PriTest.java
package pacc;
public class PriTest
{
public PriTest(){}
private String saluto="SALUTO FROM PriTest";
public String getSaluto(){return saluto;}
}
dir名称的PKG
$ find .. -type d -name "pacc"
../pacc
$ ls ../pacc
makefile PackTest.java PriTest.java
$ ls
makefile PackTest.java PriTest.java
解决!
$ cat makefile
p:
javac ./pacc/PackTest.java
java pacc/PackTest
$ make p
javac ./pacc/PackTest.java
java pacc/PackTest
SALUTO FROM PriTest
答案 0 :(得分:6)
确保文件位于同一目录中,并与程序包同名。另外,请确保正确设置了类路径。
包模仿目录结构 - 包“org.example.test”中的“Test.java”应该在“org / example / test / Test.java”中找到。
以下为我编译了文件:
$ javac -cp "." *.java
我跑了
$ cd ..
$ java pacc.PackTest
这里没问题。
BTW Apache Ant通常比Java Universe中的makefile更受欢迎。
答案 1 :(得分:2)
可能(所以请不要杀我)这是一个解决方案:
在终端中,转到java项目的根目录(因此默认包,在您的情况下,文件夹pacc
的父目录)。
然后输入:javac pacc.PackTest.java
我不手动使用编译器。我的IDE对我有用。
答案 2 :(得分:1)
如果您习惯于单独编译每个文件的C和C ++方法,您可能会惊讶地发现,当您将整个项目一次性编译时,Java编译器的效果最佳
Apache Ant是用于构建Java项目的常用工具。它可以为您调用javac
。它比Java make(1)
更适合Java。
编译为:
H:\test\so>javac pacc/PackTest.java pacc/PriTest.java
您应该在项目的 root 中,而不是在pacc
文件夹中。
答案 3 :(得分:0)
获得像IntelliJ IDEA这样的ide。 Java是如此复杂和臃肿,这将有所帮助,所以你甚至不必费心这些琐碎的东西。
答案 4 :(得分:0)
一旦掌握了基础知识,IDE就是必不可少的生产力工具。
在此之前,您可以通过这些问题来深入了解Java开发。
至于ANT,现在值得你花时间去做。 Makefile不会为您提供任何进一步的编程启发。