这些类属于同一个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
Run Code Online (Sandbox Code Playgroud)
PKG中的类
$ 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;}
}
Run Code Online (Sandbox Code Playgroud)
PK的名称为dir
$ find .. -type d -name "pacc"
../pacc
$ ls ../pacc
makefile PackTest.java PriTest.java
$ ls
makefile PackTest.java PriTest.java
Run Code Online (Sandbox Code Playgroud)
解决了!
$ cat makefile
p:
javac ./pacc/PackTest.java
java pacc/PackTest
$ make p
javac ./pacc/PackTest.java
java pacc/PackTest
SALUTO FROM PriTest
Run Code Online (Sandbox Code Playgroud)
确保文件位于同一目录中,名称与包相同.此外,请确保正确设置类路径.
包模仿目录结构 - 包"org.example.test"中的"Test.java"应该在"org/example/test/Test.java"中找到.
以下为我编译了你的文件:
$ javac -cp "." *.java
Run Code Online (Sandbox Code Playgroud)
我跑了
$ cd ..
$ java pacc.PackTest
Run Code Online (Sandbox Code Playgroud)
这里没问题.
BTW Apache Ant通常比Java Universe中的makefile更受欢迎.