前提:下载dolphinscheduler源码时,一开始下的是dev版本,install没有问题,后来更改为其他版本,这时install就不好用了。在网上搜索一天后全是jdk版本问题,编译顺序问题,或者依赖配置,或者本地仓库等等原因,都没用。巧合的是,在一篇帖子的评论里说,先给每个类进行编译,然后再整体编译然后脑子乱乱的直接去那个类上进行编译,不出意外更多的找不到符号,找不到包的问题,也多亏了当时脑子不清醒,误打误撞的给那个类import了他所需要的,结果就好了。真是瞎猫碰上死耗子
错误展示:
解决办法:
在对应的类里加入
问题:原本的代码里面就没有对应的包导入了吗?
回答:我下的这个版本中,原本导入的包是这样子的:
这个问题就变成了,为什么导入*没办法install(debug是没有错误的),而指定以后却可以正常运行了呢?
在问gpt后,gpt给出的回答:
在Java中,import
语句用于导入其他包中定义的类、接口或其他成员。当你使用import java.util.*;
语句时,它会导入java.util
包下的所有类和接口,但是并不会导入这些类和接口的子包中的内容。
java.util
包中的Map
接口是一个顶层接口,并不属于java.util
包的直接成员。因此,在使用import java.util.*;
语句时,编译器无法识别Map
接口的存在,从而报错找不到符号。
当你使用import java.util.Map;
语句时,它会明确地导入java.util
包中的Map
接口,使编译器能够识别并正确处理代码中对该接口的使用,因此报错消失了。
需要注意的是,import
语句只是用于告诉编译器在代码中使用的类或接口的位置,它并不会实际引入任何类或接口的代码。它只是为了方便你在代码中使用全限定名(例如java.util.Map
)而不需要重复地写出完整的包名。因此,如果你没有导入需要的类或接口,仍然可以通过使用完整的包名来引用它们。
刚刚的错误消失,进度也增进了许多。
这种方法的缺点是这种错误很多,而且不能一次性全报完,而且每次修改都要进行mvn spotless:apply,太浪费时间了,不过好在起码管用了。(可以摸鱼的微笑)