本帖最后由 Windowsredstone 于 2019-9-13 18:40 编辑
今天心血来潮,把插件代码重写了,顺便把类名改了,把一些扔在Main里边的函数独立建了Class,onCommand一些没动。
然后我将重启服务器(不是reload),插件载入之后发现……

然后我查看我的代码……17行……
等等?

这也能错?
add:

add2:
问题已解决。我写了两个插件主类都叫做Main,所以……
把Main改成Mian就好了(滑稽)
今天心血来潮,把插件代码重写了,顺便把类名改了,把一些扔在Main里边的函数独立建了Class,onCommand一些没动。
然后我将重启服务器(不是reload),插件载入之后发现……

然后我查看我的代码……17行……
等等?

这也能错?
add:

add2:
问题已解决。我写了两个插件主类都叫做Main,所以……
把Main改成Mian就好了(滑稽)
本帖最后由 gooding300 于 2019-9-12 22:38 编辑
跳过Java基础的Bukkit玩家.jpg
Java编译器会在没有构造器的时候自动补全默认的构造器,以上述代码为例,补全的内容为:
复制代码
构造器在字节码中命名为<init>,其desc为()V,也就是调用栈中划红线的那一行,因为分配其他行数不合适,所以分配了类定义那一行的行数。
这个方法的代码中,super调用的是父类JavaPlugin的无参构造方法<init>()V,也就是划红线的上一行。
也就是说,是类构造过程中出的错。
如果我对您的问题有所帮助,请给我最高的评分!
跳过Java基础的Bukkit玩家.jpg
Java编译器会在没有构造器的时候自动补全默认的构造器,以上述代码为例,补全的内容为:
- public Main(){
- super();
- }
构造器在字节码中命名为<init>,其desc为()V,也就是调用栈中划红线的那一行,因为分配其他行数不合适,所以分配了类定义那一行的行数。
这个方法的代码中,super调用的是父类JavaPlugin的无参构造方法<init>()V,也就是划红线的上一行。
也就是说,是类构造过程中出的错。
如果我对您的问题有所帮助,请给我最高的评分!
因为在构造器上有一个隐含的super()
构造插件主类的时候会检查是否已经初始化过这个插件
不过问题不在这
如果插件已经被初始化则会抛出异常
你这个报错原因多半是你new了你的插件主类 或者有多个插件的plugin.yml里的main指向了同一个类
构造插件主类的时候会检查是否已经初始化过这个插件
不过问题不在这
如果插件已经被初始化则会抛出异常
你这个报错原因多半是你new了你的插件主类 或者有多个插件的plugin.yml里的main指向了同一个类
本帖最后由 吕易天 于 2019-9-13 09:38 编辑
上面说了,插件已经载入,你重复放了2个同样名称的插件吧
如上所述,当一个子类被构建时会调用父类的构造方法,于是在父类的构造方法抛出了异常所以就显示了那个行号
上面说了,插件已经载入,你重复放了2个同样名称的插件吧
如上所述,当一个子类被构建时会调用父类的构造方法,于是在父类的构造方法抛出了异常所以就显示了那个行号