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是否支持类路径的通配符扩展?可以这样做吗?
我通过阅读热点源代码找到了答案.
只有通过其中一个CLASSPATH或-cp/ 传递的路径-classpath才会受到通配符扩展的影响.然后将它们作为系统属性传递给正在运行的JVM via -Djava.class.path.
你告诉一个JNI调用的JVM有关通过类路径JVMOptions结构,其中可能包括-Djava.class.path但-classpath不必然兑现(在实践中,是不是热点实现).由于java.class.path直接作为系统属性传递给JVM,因此它不会扩展通配符,因此通配符将不起作用.