分享
为什么问答平台  ›  专栏  ›  技术社区  ›  delfuego

Java NeBiE问题:同一个包的类彼此访问? - Java newbie problem: classes of the same package accessing one another?

  •  4
  • delfuego  · 技术社区  · 2 月前

    这些类属于同一个pkg。它们在目录中,即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
    

    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;}
    }
    

    目录名称的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
    
    5 回复  |  直到 6 年前
        1
  •  2
  •   Martijn Courteaux    9 年前

    也许(所以请不要杀我)这是个解决办法:

    在终端中,转到Java项目的根(在您的情况下,默认包是文件夹的父目录) pacc )
    然后键入: javac pacc.PackTest.java

    我不手动使用编译器。我的IDE对我有用。

        2
  •  6
  •   Adrian Mouat    9 年前

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

    在“Org/Simult/Test/Test.java”中可以找到包中的目录结构——“test .java”包中的“org .test .test”。

    以下是为我编译的文件:

     $ javac -cp "." *.java
    

    和我一起奔跑

     $ cd ..
     $ java pacc.PackTest
    

    这里没有问题。

    在Java宇宙中,BTW Apache ANT通常优于MaxFox文件。

        3
  •  1
  •   Kevin Panko Arthur Kalliokoski    9 年前

    如果您习惯于分别编译每个文件的C和C++方法,您可能会惊讶地发现,当Java编译器使用它时效果最好。 整个项目 一次编译全部。

    Apache Ant 是用于构建Java项目的常用工具。它负责打电话 javac 为你。它比Java工作得更好 make(1) 做。


    编译为:

    H:\test\so>javac pacc/PackTest.java pacc/PriTest.java
    

    你应该在 你的项目,不在文件夹中 pacc .

        4
  •  0
  •   egervari    9 年前

    获取类似于IDE的Intellij想法。Java是如此复杂和臃肿,这将有助于,所以你不必费心这样琐碎的事情。

        5
  •  0
  •   DaveG    9 年前

    一旦掌握了基础知识,IDE就是一个必不可少的生产力工具。

    在那之前,思考这些问题有助于加深对Java开发的理解。

    就蚂蚁而言,现在你有时间去做这件事是值得的。makefiles不提供任何进一步的编程启发。