我刚刚发现了这一点,并希望有人对发生的事情有所了解。遵循的命令(在临时目录中运行此命令,事先清除所有内容):
没问题:
cat << EOF > Myface.java
public interface Myface {}
EOF
cat << EOF > Myclass.java
public class Myclass implements Myface {}
EOF
javac Myface.java
javac Myclass.java
Myclass不会编译:
cat << EOF > Myface.java
package Mypackage;
public interface Myface {}
EOF
cat << EOF > Myclass.java
package Mypackage;
public class Myclass implements Myface {}
EOF
javac Myface.java
javac Myclass.java
Myclass不会编译:
cat << EOF > Myface.java
package Mypackage;
public interface Myface {}
EOF
cat << EOF > Myclass.java
package Mypackage;
public class Myclass implements Myface {}
EOF
javac Myclass.java
这里发生了什么?
编辑:所有命令,运行:
javatest@l-bel-smai-ubuntu:~$ ls
javatest@l-bel-smai-ubuntu:~$ pwd
/home/javatest
javatest@l-bel-smai-ubuntu:~$ cat << EOF > Myface.java
> public interface Myface {}
> EOF
javatest@l-bel-smai-ubuntu:~$
javatest@l-bel-smai-ubuntu:~$ cat << EOF > Myclass.java
> public class Myclass implements Myface {}
> EOF
javatest@l-bel-smai-ubuntu:~$
javatest@l-bel-smai-ubuntu:~$ javac Myface.java
javatest@l-bel-smai-ubuntu:~$ javac Myclass.java
javatest@l-bel-smai-ubuntu:~$ ls
Myclass.class Myclass.java Myface.class Myface.java
javatest@l-bel-smai-ubuntu:~$ rm *
javatest@l-bel-smai-ubuntu:~$ cat << EOF > Myface.java
> package Mypackage;
> public interface Myface {}
> EOF
javatest@l-bel-smai-ubuntu:~$
javatest@l-bel-smai-ubuntu:~$ cat << EOF > Myclass.java
> package Mypackage;
> public class Myclass implements Myface {}
> EOF
javatest@l-bel-smai-ubuntu:~$
javatest@l-bel-smai-ubuntu:~$ javac Myface.java
javatest@l-bel-smai-ubuntu:~$ javac Myclass.java
Myclass.java:2: cannot find symbol
symbol: class Myface
public class Myclass implements Myface {}
^
1 error
javatest@l-bel-smai-ubuntu:~$ rm *
javatest@l-bel-smai-ubuntu:~$ cat << EOF > Myface.java
> package Mypackage;
> public interface Myface {}
> EOF
javatest@l-bel-smai-ubuntu:~$
javatest@l-bel-smai-ubuntu:~$ cat << EOF > Myclass.java
> package Mypackage;
> public class Myclass implements Myface {}
> EOF
javatest@l-bel-smai-ubuntu:~$
javatest@l-bel-smai-ubuntu:~$ javac Myclass.java
Myclass.java:2: cannot find symbol
symbol: class Myface
public class Myclass implements Myface {}
^
1 error
javatest@l-bel-smai-ubuntu:~$
最佳答案
是的,我们开始:
Java / Class文件目录结构必须与声明Java类的包结构匹配,以使编译和类加载正常工作。