当前位置: 首页 > 面试题库 >

可以让JNI来纪念在类路径中使用通配符吗?

薛楷
2023-03-14
问题内容

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

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

java that.class's.name

在同一命令行中,该类已成功找到。如果我将somedir /中的所有jar都显式添加到类路径中,那么一切都很好,但这会导致
长的类路径,我想避免这种情况。

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


问题答案:

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

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

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



 类似资料:
  • 问题内容: 我正在运行应该执行方法的Shell脚本: 在这一点上,我得到这个异常: 这是因为弹簧罐位于另一个文件夹中。所以我更改了脚本: 但是,使用此脚本无法找到com.example.ClassTest。关于这个问题有什么想法吗? 提前致谢 问题答案: Java类路径通配符扩展不常见。 从文档: 了解类路径通配符 类路径条目可以包含基本名称通配符,这被认为等效于指定目录中所有扩展名为.jar或.

  • 我有一个side Gradle构建,在另一个旧Ant构建上运行一些测试。旧的ant构建中有大量库,我希望运行测试的Gradle构建在运行测试工具(在本例中为cucumber)时,在其类路径中包含这些库。然而,保持庞大的依赖项列表的同步似乎容易出错,而且将Ant构建转换为统一的Gradle构建目前还不太可能(正如我所希望的那样)。 所以,我想我可以简单地在JavaExec包装器的类路径中引用Ant构

  • 问题内容: 我想知道是否以及如何在路径定义中使用通配符。我想更深入地查找一个文件夹并尝试使用*,但这不起作用。 我想访问随机文件夹中的文件。Folderstructure是这样的: 我试过的 先感谢您! 问题答案: 我认为不可能以这种方式使用通配符。我建议您对任务使用如下方式:

  • 问题内容: 我已经使用了太多的第三方库(jar文件),所以我的CLASSPATH完全混乱了,因为我必须包括我使用的每个jar文件的路径。 我一直在想是否可以使用通配符()运算符(例如 .jar)将所有jar文件包含在文件夹中。但这似乎不起作用。还有其他方法可以缩短PC上当前看起来像文章;)的CLASSPATH吗? 问题答案: 类路径条目可以包含基本名称通配符,该通配符被认为等效于指定目录中所有扩展

  • 我有一个API,它允许传入任何任意路径,例如所有这些: 是有效路径。我试着这样描述: 但是https://generator.swagger.io在路径中编码斜线,所以不起作用。那么有没有办法用Swagger来描述我的API呢?

  • 问题内容: 我想运行类似的东西: 有办法吗?或者至少有比动态构建每个关键字查询更好的方法: 谢谢。 问题答案: 我不确定它是否比您想出的要好,但是您可以使用MySQL的regex功能: 另外,正如其他人所提到的,您可以使用MySQL的全文本搜索功能(但仅当您使用MyISAM引擎时)。