Java 是否有可靠的方法获取插件名称';什么是JAR文件?

Java 是否有可靠的方法获取插件名称';什么是JAR文件?,java,jar,minecraft,bukkit,Java,Jar,Minecraft,Bukkit,使用bukkit API,是否可以进行类似以下伪代码的调用: Bukkit.getPluginManager().getPlugin("PluginName").getJarFile(); 其中,对于mobbuntyreloated这样的插件,它将返回plugins/mobbuntyreloated_v235.jar 我试着使用众所周知的命名方案来查找文件,比如在插件的名称后面加上.jar或.jar,但这并不总是产生正确的结果。上面的示例失败,因为plugin.yml文件中的版本号只是235,

使用bukkit API,是否可以进行类似以下伪代码的调用:

Bukkit.getPluginManager().getPlugin("PluginName").getJarFile();
其中,对于mobbuntyreloated这样的插件,它将返回
plugins/mobbuntyreloated_v235.jar

我试着使用众所周知的命名方案来查找文件,比如在插件的名称后面加上
.jar
.jar
,但这并不总是产生正确的结果。上面的示例失败,因为
plugin.yml
文件中的版本号只是
235
,而不是
\u v235
,并且一些插件使用类似
-.jar
的方案


有没有一个简单的方法来实现这一点?每个加载的插件的文件信息必须在内存中的某个地方,否?

如果您从插件加载了一个类,您可以使用代码源功能获取加载该类的jar

Bukkit.getPluginManager().getPlugin("PluginName").getClass().getProtectionDomain().getCodeSource().getLocation();

在org.bukkit.plugin.java.JavaPlugin子类中

this.getFile().getAbsoluteFile();
返回带有路径的完整jar文件名 其中,仅此.getFile()返回如下内容: “插件\clj-minecraft-1.0.1-SNAPSHOT-standalone.jar”

就我而言,我需要这个: “文件:/S:/cb/plugins/memorystone-2.0.0-SNAPSHOT.jar”作为URL(非URI) 这是: 这个.getFile().toURI().toul()

在[org.bukkit/bukkit“1.4.5-R0.3-SNAPSHOT”中测试,

但您不能这样做(方法不可见):((JavaPlugin)bukkit.getPluginManager().getPlugin(“PluginName”).getFile();