Java新手问题:相同包的类互相访问?

hhh*_*hhh 4 java package

这些类属于同一个pkg.他们在dkg,pkg的名字.

  • 一般来说,类如何在同一个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)

Adr*_*uat 6

确保文件位于同一目录中,名称与包相同.此外,请确保正确设置类路径.

包模仿目录结构 - 包"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更受欢迎.