java的classpath中如果出现了同名类,同名的类的代码不同,那只用的到底是哪一个类呢?
java -cp ./;./classes;./xptest.jar com.ssc.xp.ws.TestClassLoaderA
package com.ssc.xp.ws;
public class TestClassLoaderA {
public static void main(String[] args) {
String a = "Hi! Man, This is ClassA, V0";
System.out.println(a);
}
}
同一个类,改两次,分别生成V0,V1的class和V2的jar。进行测试。
classpath中顺序放在前面的类会比放在后面的类优先级高,也就是说,./加载的class,比xptest。jar中的class优先级要高。运行时跑的就是前者的类。
分享到:
相关推荐
3. AppClassLoader(也称为SystemClassLoader):应用类加载器,它负责加载`java.class.path`环境变量或`-cp`命令行选项指定的类路径中的类和资源。这是大多数应用程序默认的类加载器。 4. 用户自定义类加载器:...
- **顺序**: 当`CLASSPATH`中存在同名类时,JVM会按照`CLASSPATH`的顺序加载第一个找到的类。 - **冲突**: 若不注意顺序可能导致版本冲突,如`classpath = C:\servlet2.2\servlet.jar;C:\servlet2.3\servlet.jar`,...
- 使用`javac`命令编译Java源代码为字节码文件(`.class`)。 - 使用`java`命令运行编译后的字节码文件。 - **Java Applet的程序结构与开发过程:** - Java Applet是一种可以在Web浏览器中运行的小应用程序。 - ...
【Java基础知识】 1. Java语言源自C++,选项B正确。...这道题目揭示了Java中类的初始化顺序,静态成员和方法的初始化在类加载时进行,实例成员在对象创建时初始化,而且构造器会先执行父类的构造器。
- 使用场景:当方法内的局部变量与类的成员变量同名时,区分两者;调用当前类中的其他构造方法。 #### 2.5 super 关键字有什么含义?在哪些情况下应用? - **super** 关键字用于访问父类中的成员。 - 使用场景:...
4. **方法重载**:方法重载意味着在一个类中可以有多个同名的方法,但它们的参数列表必须不同(参数的数量、类型或顺序)。因此,`public int aMethod(int m)`是`public void aMethod()`的重载版本,因为它们的返回...
- 使用 `javac A.java` 命令编译源文件 `A.java`,如果源文件中有多个类,那么每个类都会被编译成一个 `.class` 文件。 - 使用 `java A` 命令运行程序,这里假设有一个名为 `A` 的公共类,并且这个类包含 `main` ...
- **方法重载(Overloading)**: 在同一个类中声明多个同名的方法,但是这些方法的参数列表不同(参数数量、类型或顺序不同)。调用这些方法时,JVM会根据传入的实际参数来决定调用哪个方法。 **六、编程题解析** ...
- **类(Class):** 类是Java中的一种抽象数据类型,它是对象的模板。 - **对象(Object):** 对象是类的一个实例,每个对象都拥有其独立的状态和行为。 - **方法(Method):** 方法是对一组相关操作的封装,用于完成...
- **JVM运行过程**:了解JVM加载、链接、初始化类的过程,以及内存分配、垃圾回收机制等。 - **反编译工具**: - **JAD**:一款开源的Java反编译工具,可以将.class文件反编译为.java源代码。 - **FrontEnd**:...
- 重载(Overloading)发生在同一个类中,指多个同名但参数列表不同的方法。 - 重写(Overriding)发生在继承关系中,子类覆盖父类的方法。 **匿名内部类中对接口的方法为何要加public** - 接口中声明的方法默认是...
- 介绍了Java中常见的流程控制结构,如顺序结构、if选择语句、switch选择语句、while循环语句、for循环语句等。 #### 2.6 数组 - 详细讲解了数组的基本概念、静态初始化、注意事项、多维数组以及与数组操作相关的...
- **方法重载**:在一个类中可以有多个同名的方法,但这些方法的参数列表必须不同,即参数的数量、类型或顺序有所区别。 #### 八、数组 - **数组定义**:数组是一种存储固定大小的同类型数据结构,可以通过下标...
- **Classpath**:则是用于指定Java类文件(.class)的位置,以便Java虚拟机能够找到这些类。 **配置方法**: - 打开系统的高级设置,进入环境变量配置界面。 - 新建环境变量`Path`,其值应为`jdk安装路径\bin`。...
- **classpath**: 指定Java虚拟机(JVM)加载类(class或包)的路径。如果没有设置classpath,那么JVM会在当前目录下查找相应的类文件。 3. **Java中有无`goto`关键字** - Java语言设计时去除了`goto`关键字,因为它...