JNI能否在类路径中实现通配符扩展?

Hen*_*ryR 6 c java unix java-native-interface classpath

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

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

java that.class's.name 
Run Code Online (Sandbox Code Playgroud)

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

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

Hen*_*ryR 7

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

只有通过其中一个CLASSPATH-cp/ 传递的路径-classpath才会受到通配符扩展的影响.然后将它们作为系统属性传递给正在运行的JVM via -Djava.class.path.

你告诉一个JNI调用的JVM有关通过类路径JVMOptions结构,其中可能包括-Djava.class.path-classpath必然兑现(在实践中,是不是热点实现).由于java.class.path直接作为系统属性传递给JVM,因此它不会扩展通配符,因此通配符将不起作用.