假设我没有使用任何IDE来构建/运行我的Java代码。但是使用notepad和命令提示符进行编译和运行。
我可以安全地假设:只要我将我的班级文件放在同一个文件夹中,他们就会始终能够“看到”彼此甚至 没有陈述包?
我来自另一个带有类似问题标题的链接:Accessing other class files in Java 但它提出了一个不同的东西,给出的回复是在有IDE的情况下,并使用IDE来改变CLASSPATH。
我打算在这里找到的是没有IDE的JVM的行为。
QUE:我可以安全地假设课程可以始终通过将它们放在同一个文件夹中来“看到”吗?
答案 0 :(得分:0)
这里有一些你想法的食物: - )
假设我们有两个版本的同一个文件
版本1
package mypack;
public class MyClass {
public static void main(String[] args) {
System.out.println(1);
}
}
第2版
package mypack;
public class MyClass {
public static void main(String[] args) {
System.out.println(2);
}
}
像这样编译版本2
[leoks@x ~]$ javac mypack/MyClass.java
[leoks@x ~]$ java mypack.MyClass
2
然后使用版本1创建一个jar并将其保存为" myjar.jar"
现在尝试
[leoks@x ~]$ java -cp myjar.jar:. mypack.MyClass
1
[leoks@x ~]$ java -cp .:myjar.jar mypack.MyClass
2
正如您所看到的,类加载器并不关心。它只需要第一个类而忽略第二个类。
所以它不是文件夹的问题。这是包的问题。 JVM处理包,它可以在目录组织中或在jar内。