有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从另一个类访问类

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

我是否可以放心地假设:只要我将我的类文件放在同一个文件夹中,它们将始终能够相互“看到”,甚至不必说明包

我来自另一个类似问题标题的链接:Accessing other class files in Java 但它要求的是另一件事,给出的回答是在拥有IDE并使用IDE更改类路径的上下文中给出的

这里我想了解的是没有IDE的JVM的行为

QUE:我是否可以放心地假设,只要将类放在同一个文件夹中,它们就可以始终相互“看到”


共 (1) 个答案

  1. # 1 楼答案

    以下是一些供你思考的食物:-)

    假设同一文件有两个版本

    版本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中