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

标签 java c unix java-native-interface classpath

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

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

java that.class's.name 

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

通过 JNI 执行的 JVM 是否支持类路径的通配符扩展?能做到吗?

最佳答案

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

只有通过 CLASSPATH-cp/-classpath 传递的路径才能进行通配符扩展。然后将它们作为系统属性通过 -Djava.class.path 传递给正在运行的 JVM。

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

关于java - 可以让 JNI 支持类路径中的通配符扩展吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9320619/

相关文章:

java - : "margin : auto and display block" and parsing from XHTML to PDF using FlyingSaucer (Itext5) 图像居中时出现问题

c - c 中的网格和指针

c - 使用openmp时运行的线程数不一致

linux - grep 唯一出现

java - 是否可以使用java套接字从客户端发送sslv2hello消息

java - Scala Future 中的 Lambda 表达式

java - Play Framework : Sending CSV file as an attachment

c - 如何获取 PID_MAX 宏?

shell - KornShell - 使用可能未设置的变量进行测试

regex - ack:在提供正则表达式时转义单引号