Java 是否有可靠的方法获取插件名称';什么是JAR文件?
使用bukkit API,是否可以进行类似以下伪代码的调用: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.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();