【问题标题】:How to call a class from another in th same package shows an error how to fix it in java?如何从同一个包中的另一个类调用一个类显示错误如何在java中修复它?
【发布时间】:2014-10-27 10:55:35
【问题描述】:

如何在同一个包中调用另一个类显示错误如何解决?

我有三个班级

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- Error ....

    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 之外 先生,如果没有包,是的,它可以工作,但有包它不工作我没有使用任何 IDE

【问题讨论】:

  • 试试 javac -cp 。 SecondPack.java,其中 cp 代表类路径,.指的是FirstPack的类文件中存在的当前目录
  • FirstPack 中还需要一个构造函数
  • @NonSecwitter 不会有java在编译时放置的默认构造函数
  • 另外,您为什么要捕获System.out.println() 的异常?

标签: java class object compilation package


【解决方案1】:

[编辑]

注意,您不应该单独编译每个类。 Java 编译器旨在编译每个类,因为它在源文件中遇到它的第一个实例。从根目录编译你的 Main.java,你不会有任何错误。

[/EDIT]

[第二次编辑]

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

http://kevinboone.net/classpath.html

[/第二次编辑]

虽然它在编译时抛出错误,但这个程序对我来说是正确执行的。确保Main.class在根目录下,FirstPackSecondPack在%root%\mypack\in

我不能确切地告诉你为什么这一切都是这样的,但我知道它是这样工作的。

【讨论】:

    【解决方案2】:

    你可以这样做:

    ///**Import the Package
    
    import mypack.in.FirstPack;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      相关资源
      最近更新 更多