有没有可靠的方法来获取插件的JAR文件的名称?

Wil*_*ren 2 java jar minecraft bukkit

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

Bukkit.getPluginManager().getPlugin("PluginName").getJarFile();
Run Code Online (Sandbox Code Playgroud)

对于像MobBountyReloaded这样的插件,它会返回plugins/MobBountyReloaded_v235.jar.

我尝试使用众所周知的命名方案来寻找文件,例如只是附加.jar<version>.jar插件的名称,但这并不总能产生正确的结果.上面的例子失败了,因为plugin.yml文件中的版本号只是235和不是_v235,而一些插件使用的方案<PluginName>-<Version>-<buildnumber>.jar.

有没有一种简单的方法来实现这一目标?每个加载的插件的文件信息必须在内存中的某个位置,不是吗?

jta*_*orn 6

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

Bukkit.getPluginManager().getPlugin("PluginName").getClass().getProtectionDomain().getCodeSource().getLocation();
Run Code Online (Sandbox Code Playgroud)