与Clojure的Java互操作,无法加载插件
我正在尝试用Clojure编写一个Bukkit插件 一般来说,Bukkit插件需要覆盖与Clojure的Java互操作,无法加载插件,clojure,bukkit,Clojure,Bukkit,我正在尝试用Clojure编写一个Bukkit插件 一般来说,Bukkit插件需要覆盖插件类,具有onEnable()和onDisable()方法。 还有一些其他要求,比如结果是一个JAR文件和一个定义的plugin.yml,但我有所有这些 (ns net.jonnay.watershipdown.WatershipDown (:import org.bukkit.Bukkit org.bukkit.plugin.Plugin) (:gen-class :na
插件
类,具有onEnable()
和onDisable()
方法。
还有一些其他要求,比如结果是一个JAR文件和一个定义的plugin.yml,但我有所有这些
(ns net.jonnay.watershipdown.WatershipDown
(:import org.bukkit.Bukkit
org.bukkit.plugin.Plugin)
(:gen-class
:name net.jonnay.watershipdown.WatershipDown
:extends org.bukkit.plugin.Plugin
:methods [ [onEnable [] void]
[onDisable [] void] ]
)
)
(set! *warn-on-reflection* true)
(defn debug-to-mc-log [^String msg]
(let [logger (Bukkit/getLogger)]
(. logger info (str "(DEBUG) " msg))))
(defn -onEnable []
(debug-to-mc-log "Enabled Watership down. Super Clojure Powers!"))
(defn -onDisable []
(debug-to-mc-log "Disabled Watership down."))
我的代码编译得很好,但当我尝试将其加载到服务器时,会出现以下异常:
13:29:20[严重]无法加载文件夹“plugins”中的“plugins/watershippdown-0.1.jar”:
java.lang.ClassFormatError:类文件net/jonnay/watershippdown/watershippdown中存在重复的方法名和签名
位于java.lang.ClassLoader.defineClass1(本机方法)
位于java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
位于java.lang.ClassLoader.defineClass(ClassLoader.java:615)
位于java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
位于java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
在java.net.URLClassLoader.access$000(URLClassLoader.java:58)
在java.net.URLClassLoader$1.run(URLClassLoader.java:197)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:190)
位于org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:41)
位于org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:29)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:306)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:247)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(Class.java:247)
位于org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:131)
位于org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:285)
位于org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:200)
位于org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:156)
位于org.bukkit.craftbukkit.CraftServer。(CraftServer.java:132)
位于net.minecraft.server.ServerConfigurationManager。(ServerConfigurationManager.java:52)
位于net.minecraft.server.MinecraftServer.init(MinecraftServer.java:148)
位于net.minecraft.server.MinecraftServer.run(MinecraftServer.java:407)
位于net.minecraft.server.ThreadServerApplication.run(源文件:465)
是否在插件中定义了合一
和合一
如果是这样,他们可能是问题的根源。
genClass文档特别指出,您不应该重新声明继承的方法。是插件中定义的可统一的
和可禁用的
如果是这样,他们可能是问题的根源。
genClass文档特别指出,您不应该重新声明继承的方法