从另一个类访问类

时间:2014-10-17 12:55:29

标签: java class jvm

假设我没有使用任何IDE来构建/运行我的Java代码。但是使用notepad和命令提示符进行编译和运行。

我可以安全地假设:只要我将我的班级文件放在同一个文件夹中,他们就会始终能够“看到”彼此甚至 没有陈述包

我来自另一个带有类似问题标题的链接:Accessing other class files in Java 但它提出了一个不同的东西,给出的回复是在有IDE的情况下,并使用IDE来改变CLASSPATH。

我打算在这里找到的是没有IDE的JVM的行为。

QUE:我可以安全地假设课程可以始终通过将它们放在同一个文件夹中来“看到”吗?

1 个答案:

答案 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内。