我试图在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
答案 0 :(得分:4)
你有套管问题:
class Parentclass
这与文件名ParentClass.class
不同,也不会与您在ChildClass
class ChildClass extends ParentClass
中尝试使用的类相同。< / p>
Java类名称区分大小写,但Windows文件名不是。如果该类已公开,编译器将验证匹配的名称 - 但对于非公共类,则不需要。
您最终获得ParentClass.class
的事实表明,在某些点,它被声明为ParentClass
,但之后您更改了声明的名称,重新编译,Windows只是覆盖了当前文件的内容,而不是有效地创建Parentclass.class
。
确保您声明的类名完全与文件名匹配。您可能希望在重新编译之前删除所有类文件,只是为了摆脱混乱状态。