【问题标题】:java class is not accessible through another class within the same package [closed]java类不能通过同一个包中的另一个类访问[关闭]
【发布时间】:2013-07-18 10:26:32
【问题描述】:

谁能告诉我为什么下面的代码不起作用,

第一个文件是,

   package pack;
import pack.*;
public class please
{
    public static void main(String s[])
    {
        plz p=new plz(1);
    }
}

第二个文件是,

package pack;
public class plz
{
    public plz(int i)
    {

    }
}

但是当我编译 please.java 然后错误说它找不到'plz()' 请指导我完成。

【问题讨论】:

  • 这一行在头等舱是多余的:import pack.*;
  • 请发布您收到的确切错误消息 - 您解释的错误消息与您的代码示例不符。
  • 你的编译命令是什么样的。您是否包含了类路径?
  • 文件是否在同一个文件夹中?

标签: java import package


【解决方案1】:

使用头等舱

package pack;

public class please
{
    public static void main(String s[])
    {
        plz p=new plz(1);
    }
}

【讨论】:

  • 您能描述一下这与 OP 的代码有何不同吗?我看到您删除了不必要的导入。是这样吗?
  • @Kevin Bowersox import pack.*; 在 please 类中是多余的。
  • @vijay ramani 文件现在编译,但产生未找到所需类的异常
  • @Saumil Soni 你把这两个类放在同一个包里了吗?
  • @VijayRamani 是的,这两个类都在同一个包中
【解决方案2】:

如果它真的说它找不到 plz() 这是真的,因为你的方法需要一个参数。可能在类中你调用 plz 的方法没有参数。我的意思是这不是包问题。它是关于方法问题。你不必导入包。*

【讨论】:

  • public plz(int i) is 构造函数不是方法,因此必须使用 `plz p=new plz(1);` 调用它 解决方案是:您不必导入包。*
  • 好吧,你是对的。我正在纠正它:编译器并没有说它不能看到第二个类。它说它找不到没有参数的构造函数。
  • @ankit337 不,这不是解决方案。
【解决方案3】:

在编译时,您需要:

  • 同时编译两个源文件;或
  • javac 的第二次调用提供类路径,其中包括第一次调用中生成的类。

您的错误消息可能意味着您没有执行这些操作,因此在编译 please 时,javac 看不到 plz 类的定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-30
    • 2019-05-28
    • 2015-06-25
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 2016-05-05
    • 2011-08-23
    相关资源
    最近更新 更多