当前位置: 首页 > 知识库问答 >
问题:

无法访问同一个包中的类

郏景澄
2023-03-14
Project directory:
 Project
 -[other directories]
 -bin
 --A.java
 --B.java

A类源代码:

package bin;
public class A{
 public static void main(String[] args){
  B use=new B("Hello");
  use.run();
 }
}

B类源代码:

package bin;
public class B{
 static String x=null;
 public B(String text){
  x=text;
 }
 public static void run(){
  System.out.println(x);
 }
}

当我编译B. java时没有错误,当我试图编译A. java时,我得到了:

A.java:4: error: cannot find symbol
     B use=new B("Hello");
  symbol:   class B
  location: class A
search.java:4: error: cannot find symbol
     B use=new B("Hello");
           ^
  symbol:   class B
  location: class A

顺便说一句,我不是用IDE来编译这个,我只是用Geany和nano编辑了文件,然后用javac从终端编译它们。

共有2个答案

焦兴为
2023-03-14

正如@Alex所指出的,您最有可能在bin文件夹中执行javac命令。在你的情况下编译程序的正确方法是运行javac命令int project文件夹

javac bin/A.java

还有逃跑

java bin/A
闻法
2023-03-14

你忘记了A类的必要进口。

编译类B时,它没有对未导入的类A的任何引用,因此编译正确。

但A类的情况并非如此。以下内容应可修复编译错误。

package bin;

import bin.B;  <--------------

public class A{
 public static void main(String[] args){
  B use=new B("Hello");
  use.run();
 }
}
 类似资料:
  • 问题内容: 我遇到了一个奇怪的问题,我无法弄清楚在尝试插入程序时弹出的问题。另一个问题是我无法创建一个简单的测试用例,因为每次尝试都可以。我一定缺少一些并发症。但我会尽力清楚地描述这种情况,以防任何人熟悉。 我有一个称为Seed的基类,它是主应用程序的一部分,并由系统类加载器加载。我有一个包含Road类的插件,该类是Seed的子类。它是在运行时从单独的jar文件加载的。Road类引用字段Seed.

  • 我是OOPs新手,如果这听起来很基本,我很抱歉。我有一个具有以下代码的类:- 现在假设我在同一个包中有另一个类“Main”。有什么方法我可以创建一个类的对象'内部'在'主'与类'外部'参考? 我尝试了以下操作(这是抛出错误):- “Main”和“Outer”类都在同一个包中。另外,我的主要目标是了解是否有任何方法可以在main方法中创建类Inner的对象,如下所示:-outerO1=newinne

  • 类别:账户余额 我已经把这两个类都放在Balance.java和Account tBalance.java.这两个文件都在E:/程序/MyPack. Balance.java编译没有错误但是当我编译Account tBalance.java它给出错误:找不到符号"平衡". 我无法弄清楚为什么当两个类都在同一个包中声明时? 我正在使用javac B从MyPack编译alance.javajavac

  • 我一直在尝试使用githubrowsersample对sunflower应用程序示例进行Restfulise,所以我一直在尝试进行一些复制和粘贴。然而,我完全搞不懂为什么会出现这个错误。此特定代码是完整的复制和粘贴。 我收到的错误是: 错误:DataBoundViewHolder(T)在DataBoundViewHolder中不是公共的;无法从T为类型变量的包外部访问:T扩展了DataBoundV

  • 当我尝试编译代码时,这个错误一直显示

  • private:Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。   default:即不加任何访问修饰符,通常称为“默认访问权限“或者“包访问权限”。该模式下,只允许在同一个包中进行访问。