JNI 可以支持类路径中的通配符扩展吗?

2023-11-23

我有一个通过 JNI 调用 Java 的 C 二进制文件。我将 CLASSPATH 设置为 somedir/* 以获取 somedir 中的所有 jar。

当我运行二进制文件时,找不到所需的类定义。当我跑步时

java that.class's.name 

从同一命令行,成功找到该类。如果我明确地将 somedir/ 中的所有 jar 添加到类路径中,一切都会很好,但这会导致very我想避免的长类路径。

通过 JNI 执行的 JVM 是否支持类路径的通配符扩展?可以这样做吗?


我通过阅读热点源代码找到了答案。

仅通过任一路径CLASSPATH or -cp / -classpath受通配符扩展的影响。然后将它们作为系统属性传递给正在运行的 JVM-Djava.class.path.

您可以通过以下方式告诉 JNI 调用的 JVM 有关类路径的信息:JVMOptions结构,其中可能包括-Djava.class.path but -classpath将不会一定受到尊重(实际上,不是通过热点实现)。自从java.class.path作为系统属性直接传递给 JVM,它不会扩展通配符,因此通配符不起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JNI 可以支持类路径中的通配符扩展吗? 的相关文章

随机推荐