编译java包类。无法访问Class。使用包时,类文件包含错误的类

时间:2016-01-28 11:00:17

标签: java

我试图在java中编译一个包中的一些文件。包名称为library。请查看以下详细信息。

这是我的目录结构:

javalearning
---library
------ParentClass.java
------ChildClass.java

我尝试按以下方式编译:

当前目录:javalearning

javac library/ParentClass.java   //this compilation works fine 
javac library/ChildClass.java    //error over here

以下是ParentClass.java

package library;
class Parentclass{
...
}

以下是ChildClass.java

package library;
class ChildClass extends ParentClass{
...
}

错误如下:

cannot access ParentClass
bad class file: .\library\ParentClass.class
Please remove or make sure it appears in the correct sub directory of the classpath

1 个答案:

答案 0 :(得分:4)

你有套管问题:

class Parentclass

这与文件名ParentClass.class不同,也不会与您在ChildClass class ChildClass extends ParentClass中尝试使用的类相同。< / p>

Java类名称区分大小写,但Windows文件名不是。如果该类已公开,编译器将验证匹配的名称 - 但对于非公共类,则不需要。

您最终获得ParentClass.class的事实表明,在某些点,它被声明为ParentClass,但之后您更改了声明的名称,重新编译,Windows只是覆盖了当前文件的内容,而不是有效地创建Parentclass.class

确保您声明的类名完全与文件名匹配。您可能希望在重新编译之前删除所有类文件,只是为了摆脱混乱状态。