java - 如何从同一包中的另一个类调用一个类显示错误如何在java中修复它?

标签 java class object compilation package

如何从同一包中的另一个类调用一个类显示错误如何修复它?

我有三门课

FirstPack.java

SecondPack.java

Main.java

这是我的 FirstPack.java

    //FirstPack.java
        package mypack.in;

        public class FirstPack
        {

        public void fun()
        {
            try
            {
            System.out.println("First Package");
            }

            catch(Exception ae)
            {
            }

        }
        }

这是我的 SecondPack.java

    //SecondPack.java
        package mypack.in;

        public class SecondPack
        {
        public void fun()
        {
            FirstPack f=new FirstPack();
            f.fun();

            try
            {
            System.out.println("Second Package");
            }
            catch(Exception ae)
            {
            }
        }

        }

这是我的 Main.java

          //Main.java
           import java.lang.*;
           import mypack.in.*;
            class Main
            {

        public static void main(String args[])
        {
            try
            {
            //FirstPack obj_fp=new FirstPack();
            //obj_fp.fun();
            SecondPack obj_sp=new SecondPack();
            obj_sp.fun();

            }
            catch(Exception ae)
            {
            }
        }

        }

编译 Firstpack.java 即 javac FirstPack.java - 没问题

编译 SecondPack.java 即 javac SecondPack.java- 错误 ....

    C:\JAVASAMPLE\Package\Three\mypack\in>javac SecondPack.java
    SecondPack.java:7: cannot find symbol
    symbol  : class FirstPack
    location: class mypack.in.SecondPack
            FirstPack f=new FirstPack();
            ^
    SecondPack.java:7: cannot find symbol
    symbol  : class FirstPack
    location: class mypack.in.SecondPack
            FirstPack f=new FirstPack();
                    ^
    2 errors

并且,在编译 Main.java 时,即 javac Main.java - 没问题

包 - mypack.in FirstPack.java 和 SecondPack.java 在 mypack.in Main.java 之外,先生,如果没有包,是的,它可以工作,但使用 pakage,它不起作用,我没有使用任何 IDE

最佳答案

[编辑]

注意,您不应该独立编译每个类。 Java 编译器被设计为在源文件中遇到每个类的第一个实例时对其进行编译。从根目录编译 Main.java,不会有任何错误。

[/编辑]

[第二次编辑]

我相信这一切的发生是因为 javac 编译器开始在当前目录中查找类,然后搜索子目录。由于 FirstPackmypack.in 包的一部分,因此它需要位于从当前目录开始的文件夹 ./mypack/in/ 中(您执行编译器的目录。基本上,您的编译器知道 FirstPack 实际上是 mypack.in.FirstPack 并将开始查找 ./mypack/in/FirstPack 来自您尝试编译的文件所在的位置。

http://kevinboone.net/classpath.html

[/第二次编辑]

虽然它在编译时抛出错误,但该程序对我来说可以正确执行。确保 Main.class 位于根目录中,并且 FirstPackSecondPack 位于 %root%\mypack\in

我无法确切地告诉你为什么这一切都是这样,但我知道它是这样运作的。

关于java - 如何从同一包中的另一个类调用一个类显示错误如何在java中修复它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25635868/

相关文章:

c++ - 在 C++ 类中初始化数组

javascript - 如何 JSON.stringify 对象数组

java - java.lang.NoClassDefFoundError 和 ClassNotFoundException 引起的错误

java - 如何获取 Canvas 的当前位图?

java - 从另一个类快捷方式检查天文台时间

java - 我应该在公共(public)类中使用静态类,还是只是一个单独的类

javascript - 在保留键的同时打乱对象数组

java - 为什么自动装箱在这种情况下不能使用泛型?

java - 使用 Java 代码访问 .NET dll 的方法

java - Glassfish 无法以根目录部署,因为声明了 default-web-module