虚拟机里install时发生找不到符号的错误

前提:下载dolphinscheduler源码时,一开始下的是dev版本,install没有问题,后来更改为其他版本,这时install就不好用了。在网上搜索一天后全是jdk版本问题,编译顺序问题,或者依赖配置,或者本地仓库等等原因,都没用。巧合的是,在一篇帖子的评论里说,先给每个类进行编译,然后再整体编译然后脑子乱乱的直接去那个类上进行编译,不出意外更多的找不到符号,找不到包的问题,也多亏了当时脑子不清醒,误打误撞的给那个类import了他所需要的,结果就好了。真是瞎猫碰上死耗子

错误展示:

虚拟机里install时发生找不到符号的错误_第1张图片

 解决办法:

方法一:将文件放入到windows里面,使用notepad++打开,虚拟机里install时发生找不到符号的错误_第2张图片

双击这里修改为自己需要的,linux修改为LF,windows修改为CRLF,mac修改为CR

再放回虚拟机中

方法二:

 

在对应的类里加入 所需要的项

问题:原本的代码里面就没有对应的包导入了吗?

回答:我下的这个版本中,原本导入的包是这样子的:

虚拟机里install时发生找不到符号的错误_第3张图片

 这个问题就变成了,为什么导入*没办法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)而不需要重复地写出完整的包名。因此,如果你没有导入需要的类或接口,仍然可以通过使用完整的包名来引用它们。

虚拟机里install时发生找不到符号的错误_第4张图片

 刚刚的错误消失,进度也增进了许多。

这种方法的缺点是这种错误很多,而且不能一次性全报完,而且每次修改都要进行mvn spotless:apply,太浪费时间了,不过好在起码管用了。(可以摸鱼的微笑)

修改:

后来发现是本机在向虚拟机传输数据时,部分类中import  带*的那条语句不见,所以现在还是疑惑?

到底import *好不好用。

对最新出的进行测试:

虚拟机里install时发生找不到符号的错误_第5张图片

加入 

虚拟机里install时发生找不到符号的错误_第6张图片

在进行测试,还是不好用。

检查发现,代码中*的那条语句又不见了,初步判断是在编译过程中失效。虚拟机里install时发生找不到符号的错误_第7张图片

 还是只能将*改为具体指定

解决了这些问题后,找不到符号的问题解决,接下来是额外的问题:dolphinscheduler打包好后解压执行时会报错,\r’等命令不可用等问题,这个是因为我是在linux里面运行的,sh文件在windows和linux里不一样,需要使用dos2unix进行格式转换,dos2unix如果没有的话使用yum下载:

yum install dos2unix

dos2unix   需要修改的脚本名字

再次执行:bash ./bin/dolphinscheduler-daemon.sh start standalone-server

这个时候还是不可以进行,进入logs目录(仔细观察你的执行语句后面系统弹出的那几行,里面有logs的目录,进去后只有一个文件,打开看看是哪个文件出了问题,)

再次使用dos2unix对上一步找到的进行格式修改,

再次执行,bash ./bin/dolphinscheduler-daemon.sh start standalone-server

然后查看状态bash ./bin/dolphinscheduler-daemon.sh status standalone-server

如果是running,那么恭喜,成功,进入虚拟机ip:12345/dolphinscheduler/ui  就可以进入

如果不可以,那么在去日志里面查看是否还有有问题的文件:

如果是dolphinscheduler_env.sh 一直有问题,进入bin目录下的dolphinscheduler-daemon.sh,将其中对dolphinscheduler_env.sh重写的语句注掉

这下应该就没什么问题了

你可能感兴趣的:(linux,运维,服务器)