可以制定JNI以纪念Class Path中的通配符扩展吗?

 2023-01-20    262  

问题描述

我有一个二进制文件,可以通过JNI呼唤Java.我将Class Path设置为Syedir/*以拾取某种程度的所有罐子.

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

可以制定JNI以纪念Class Path中的通配符扩展吗?

java that.class's.name

从同一命令行中,该类成功找到.如果我将某种程度的所有罐子明确地添加到classPath中,一切都很好,但是我想避免使用非常 long class Pather.

通过JNI执行了JNI荣誉公寓的通配符扩展吗?可以这样做吗?

推荐答案

我通过阅读热点源代码来找出答案.

仅通过CLASSPATH或-cp/-classpath传递的路径受到通配符的扩展.然后将这些作为系统属性通过-Djava.class.path.

您通过A JVMOptions结构告诉JNI-Invoked JVM关于class Path,其中可能包括-Djava.class.path,但是-classpath -classpath不一定是 的荣誉(实际上,不是,不是由热点实现).由于java.class.path直接作为系统属性直接传递给JVM,因此它不会扩大通配符,因此通配符无法正常工作.

其他推荐答案

否.不,它不能.使用JNI无济于事.

您这样做的方法是通过实现自己的类加载程序(在Java中),但是该类加载程序必须在不通配符的classpath中.

当然,您可以在调用JVM之前将class路径设置为其扩展的表格.那将起作用,可以通过shell脚本完成(不需要JNI).

以上所述是小编给大家介绍的可以制定JNI以纪念Class Path中的通配符扩展吗?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/26139.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。