gpt4 book ai didi

java - 未使用的 MANIFEST.MF 类路径

转载 作者:行者123 更新时间:2023-12-02 12:10:39 26 4
gpt4 key购买 nike

如果 jar 的 list 类路径条目在该位置不存在,但可以通过其他方式获得(例如在应用程序服务器的 lib 文件夹中),会发生什么

未解析的类路径条目会导致任何错误吗?

最佳答案

JVM 按以下顺序加载和搜索类:

  1. 引导类 - 组成 Java 平台的类,包括 rt.jar 中的类和其他几个重要的 jar 文件。
  2. 扩展类 - 使用 Java 扩展机制的类。它们捆绑为 .jar 文件,位于扩展目录中。通常是 $JAVA_HOME/lib/ext 目录。
  3. 用户类 - 由开发人员定义的类。使用命令行上的 -classpath 选项或使用 CLASSPATH 环境变量来定位这些类。

如果 JAR 类路径指向已包含的 JAR 文件(例如,扩展名或先前在类路径中列出的 JAR 文件),则不会再次搜索该 JAR 文件。 (这种优化提高了效率并防止循环搜索。)这样的 JAR 文件会在其出现的位置(位于类路径的较早位置)进行搜索。

为了验证这一点,我还做了以下测试1. 创建包含 Util 类的 lib(jar)“classpath-test”。2.创建另一个lib(jar),即wrapper-lib,它使用classpath-test的Util类。3. 在wrapper-lib的MANIFEST.MF中,添加以下条目。

Class-Path: lib/classpath-test.jar
  • 将 classpath-test.jar 复制到 lib 目录下并运行以下命令

    java -jar 包装器-lib.jar

  • 以上命令运行良好。删除 lib/classpath-test.jar 后运行相同的命令,但失败。

  • 另一个测试,从lib中删除classpath-test.jar并复制到JAVA_HOME/lib/ext并运行

    java -jar 包装器-lib.jar

  • 成功了。

    关于java - 未使用的 MANIFEST.MF 类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46577956/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com