【问题标题】:How I can compile a java file using a class in a separate file如何使用单独文件中的类编译 java 文件
【发布时间】:2013-03-14 10:50:36
【问题描述】:

对编译过程有点困惑:

这是我的文件结构

bin/ 测试/A.java 测试/B.java

# B.java

package test; 
private class B{
    public static void say(){
        System.out.println("Hello.");
    };
}



# A.java

package test;
public class A{
    public static void main(String arg[]){
        test.B.say();
    }
}

然后我编译 A.java

javac -cp test/*.java test/A.java

它给了我错误:

test/A.java:4: cannot find symbol
symbol  : class B
location: package test
        test.B.say();
            ^
1 error

【问题讨论】:

  • 为什么B是私有类?尝试公开 [stackoverflow.com/a/14692740/1026897]
  • 你在A类之前编译过B类吗?
  • @HimanshuBhardwaj 不,我认为我不需要这样做
  • @yozloy 是的,你是对的,不需要。

标签: java


【解决方案1】:

B 应该是公共类而不是私有类。从private class B 更改为public class B 可以成功并编译成功。

【讨论】:

  • 但我认为可以在同一个包中访问私有类
  • 不,它不属于那里。 private class B 按照 JDK 1.6 是非法的
  • @yozloy 如果您希望它在同一个包中可访问,请使用默认可访问性,即未声明可访问性(即简单地 class B)。这将是包级别的。
  • @AdrianShum 感谢您指出这一点,您是对的,但是在我取下private 后它仍然无法正常工作
  • @yozloy 如果你在B.java 中声明class B 那么它应该是public。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-23
  • 1970-01-01
  • 1970-01-01
  • 2011-06-25
  • 1970-01-01
  • 2017-01-10
相关资源
最近更新 更多