【发布时间】:2020-01-22 13:10:15
【问题描述】:
我制作了一个 jar 库并将其放在 jdk 和 jre 的 ext 目录中,以检查 Java 中的 已安装扩展 场景。
现在,当我尝试在 Eclipse 中创建 Java 项目并尝试使用 jar 文件类或使用库时,我无法访问,但这些 jar 文件在 ECLIPSE 中的 Java PRoject jre 系统库下可见。
【问题讨论】:
标签: java eclipse classloader
我制作了一个 jar 库并将其放在 jdk 和 jre 的 ext 目录中,以检查 Java 中的 已安装扩展 场景。
现在,当我尝试在 Eclipse 中创建 Java 项目并尝试使用 jar 文件类或使用库时,我无法访问,但这些 jar 文件在 ECLIPSE 中的 Java PRoject jre 系统库下可见。
【问题讨论】:
标签: java eclipse classloader
在 Eclipse 之外运行某些东西时是否加载了扩展类?例如,您可以在终端中尝试以下命令来检查是否可以找到扩展中的类:
javap name.of.ExtensionClass
当您从 Eclipse 运行程序时,您确定使用的是安装了扩展的 JRE?
【讨论】:
ext 目录中,javap 会以课堂内容摘要作为响应。 CLASSPATH 与它无关,因为扩展加载机制具有优先权。参见例如docs.oracle.com/javase/tutorial/ext/basics/load.html
您可能必须在 Eclipse 中专门引用该 jar。 JRE 附带的 JAR 集合也包含在清单文件中,以便运行时知道要请求加载哪些文件。由于您的 jar 不在清单中,因此不会自动加载。
另一种方法可能是使用更新的清单重新打包 JRE,该清单引用您的扩展 jar。
【讨论】:
添加到 JAVA_HOME/lib/ext 文件或 java.ext.dirs 系统属性后, 不要运行jar文件,它不会。 但是用包名运行类,它会。
【讨论】: