Android端Replit中Java调用Python计算器返回Null问题排查及解决
Android Replit中Java调用Python计算表达式返回Null的解决方法
问题背景
在Android设备上用Replit开发计算器,实现逻辑是:
- 用Java接收用户输入的表达式,写入
expression.txt文件 - 调用Python脚本读取该文件内容完成计算,返回结果
但实际运行后,返回的计算结果始终是Null
排查步骤
- 尝试切换用
ProcessBuilder执行命令、修改calculate.py的路径配置,都没解决问题 - 移除权限命令
chmod -R 777后,出现新错误:java.io.IOException: Cannot run program "python": error=2, No such file or directory - 测试
dir、ls、echo这类基础系统命令,都能正常执行,排除环境执行命令的基础问题
问题根源与修复
最终定位到Python脚本的文件读取模式错误:
- 最初脚本用
a+模式打开expression.txt,这个模式会自动将文件指针移到文件末尾,导致读取不到Java刚写入的表达式内容,自然返回Null - 将文件打开模式改为
r+后,Python脚本可以正常读取到文件中的表达式内容,计算结果也能正确输出
内容的提问来源于stack exchange,提问作者Ilarion
相关产品推荐
相关产品推荐

