首页 > 解决方案 > Jar 重命名为 .txt:会加载吗?

问题描述

假设我有一个重命名为 .txt 的 jar,类加载器还能从中加载类吗?这个问题与在类路径中保留备份但扩展名为 .txt 的客户有关。会不会有影响?由于它是 prod 服务器,因此需要花费一些时间来删除它并进行测试。

标签: javajarclasspathclassloaderexecutable

解决方案


如果 txt 文件是类路径的一部分,那么 Java 访问 jar 应该没有问题,但我不推荐它!如果您将 jar 保存为 jar 扩展名或复制到其他目录,那么麻烦会少很多。

因此,如果您的客户使用“.txt”制作了文件的副本,但将原始 jar 保留为原样,则只要类路径未更改,应用程序就可以正常运行。

但是,如果您的客户将 jar 重命名为 txt 并且没有更新类路径以匹配新的奇怪文件名,那么将找不到类 - 如果您的应用程序扫描该目录中的“.jar”文件,它不会像它那样找到相同的问题错过了重命名的罐子。

例如,我javap在 copy.jar 中的类 copy.Copy 上进行的这个快速测试

> javap --class-path copy.jar copy.Copy
public class copy.Copy {
    public static void main(java.lang.String[]) throws java.io.IOException;
}

> mv copy.jar test.txt

> javap --class-path test.txt copy.Copy
public class copy.Copy {
    public static void main(java.lang.String[]) throws java.io.IOException;
}

运行也很好:

> java --class-path test.txt copy.Copy
Usage: copy.Copy [-options] {fromdir} {todir}

推荐阅读