• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】

已解决 开发paper插件时编译器无法解析Material.class

德MonteCristo

【Lv:2】

正式会员
注册
2025/10/17
消息
37
金粒
3,685.47金粒
我在Windows11 IDEA 2021.2.1中,开发Paper1.21.1插件时,遇到了问题
编译器无法解析依赖中的Material.class,导致代码无法编译
1770206211869.webp(Cannot find declaration to go to)
1770206228955.webp
我用这个类是为了创建一个经典GUI,需要用到代码 ItemStack diamond = new ItemStack(0,org.bukkit.Material(DIAMOND));

我在idea界面左侧文件管理器中的External Libraries中最终找到了Material.class文件,双击后它能够被反编译
1770206323570.webp
但是返回我写的java文件中,编译器依然无法解析这个类
其他大部分类都能够被解析,但是仍有其他文件显示为.class而非正常的类(见下图)
1770206478133.webp



已经尝试的解决办法
1.以多种方式重新导入gradle依赖,包括重新下载、将文件下载到本地并在build.gradle直接指向它的目录 以及 使用服务端作为依赖(这个失败了,服务端里并没有给开发用的源代码) 等等
2.在上文Material.class的界面上点击了Download source(没用),然后点击了choose source后出现以下界面:
1770207023926.webp
原本编译器选中了上面的.jar,但是我想source(源代码?)应当使用下面的.jar。所以我选择了下面的文件,点击了确定。
编译器响应了以后问题依然存在,我重新点击choose source后发现idea又重新选择了上面的文件,经多次尝试后我发现始终无法更改

3.在project structures和settings中检查各项依赖(SDKs等等),最终发现project structures-modules的language level选项中idea选择了:(见下图)
1770207317815.webp
而我使用的1.21.1应当使用java 21(language level似乎是语言版本的意思)
但是我打开小三角以后并未找到21,而我在SDKs等其他地方却可以正常加载。
我选择了最高版本17(见下图),但是仍然没有用
4.以及其他琐碎的排查方法和重试操作


这个问题已经困扰了我三四个晚上了,我恳请各位大佬能够帮我一把,我将不胜感激。
谢谢!
 
内容版权许可
作者保留一切权利,禁止转载
idea太旧了,建议更新到最新版或者2024
编辑器没有识别到java21
 
解决方案
另外,你截图中的 ItemStack 构造方法写错了,正确用法是
Java:
ItemStack diamond = new ItemStack(org.bukkit.Material.DIAMOND, 1);
// 或新版 API:ItemStack.of(Material.DIAMOND);
 

在线管理成员

在线会员

  • Ver_zhzh
  • Kaitohka
  • zikong
  • 小叶
  • gxi
  • I IKUN2004
  • 米悠MiYui
  • Mandysa
  • zky什么地点?
  • Allen_Linong
  • wed150
  • Acver
  • gqxastg
后退
顶部 底部