Win10启动Apache Livy0.8.0报错找不到LivyServer主类
Windows 10 环境启动 Livy 0.8.0 报错修复
你碰到的两个报错分别由shell兼容问题和classpath配置错误导致,按以下步骤处理即可正常启动:
报错根因说明
ps: unknown option -- o错误:Livy官方启动脚本默认针对Linux环境编写,进程检测环节调用ps命令时使用了Linux版本ps支持的-o参数,Git Bash自带的ps是简化移植版,不支持该参数,会导致启动流程的进程校验步骤异常中断。Could not find or load main class org.apache.livy.server.LivyServer错误:Windows环境下JVM识别的classpath分隔符为分号;,但启动脚本默认用Linux环境的冒号:拼接classpath,直接在Git Bash下运行时不会自动替换分隔符,JVM无法扫描到jars目录下的Livy服务核心包,自然找不到主类。
修复操作
- 优先选择Windows原生CMD命令提示符启动,从根源规避类Unix shell的兼容问题:进入Livy源码根目录,直接执行
bin\livy-server.cmd start即可。 - 如果必须使用Git Bash启动,需要手动修改启动脚本:
- 注释掉脚本中所有
ps -o相关的进程预检查逻辑,或者替换为Git Bash兼容的进程检测写法 - 找到脚本中拼接classpath的代码段,把路径分隔符从冒号
:替换为Windows支持的分号;,如果你的安装路径包含空格(比如Program Files目录),需要给对应路径整体包裹双引号避免解析错误
- 注释掉脚本中所有
- 启动前提前校验环境配置:
- 确认
JAVA_HOME指向JDK8安装根目录,不要追加bin后缀 - 确认
SPARK_HOME指向本地Spark 3.1.2安装根目录 - 确认
HADOOP_CONF_DIR指向Hadoop 3.2.1的etc/hadoop配置目录 - 检查
server/target/jars目录下是否存在livy-server-0.8.0-incubating.jar核心包,如果目录为空说明编译打包未完成,回到源码根目录重新执行编译命令:mvn clean package -DskipTests -Pspark-3.1 -Phadoop-3.2
- 确认
补充提示:如果启动时抛出Hadoop native库加载相关报错,属于Windows环境运行Hadoop生态组件的常见问题,将对应Hadoop 3.2版本的winutils.exe放到Hadoop安装目录的bin文件夹下即可解决。
内容的提问来源于stack exchange,提问作者Mirza Asad
相关产品推荐
相关产品推荐

