如何在MacOS High Sierra下抑制MATLAB 2010的Java报错?
解决MacOS High Sierra上MATLAB 2010 Java错误弹窗的抑制方法
我之前帮同事处理过一模一样的问题——旧版MATLAB和新MacOS的Java兼容性bug确实烦人,虽然没法彻底修复,但有几个靠谱的办法能把这些错误弹窗/输出给压下去,让Command Window恢复正常使用:
方法1:通过Java日志配置抑制错误输出
这个方法是从根源上调整Java的日志级别,让它只显示最严重的错误,忽略那些RuntimeException:
- 新建一个文本文件,命名为
logging.properties,把下面的内容复制进去:
handlers=java.util.logging.ConsoleHandler .level=WARNING java.util.logging.ConsoleHandler.level=SEVERE java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
- 把这个文件存到你方便找的地方,比如
~/Documents/MATLAB/logging.properties - 修改MATLAB的启动脚本:
- 找到MATLAB的安装路径,比如
/Applications/MATLAB_R2010b/bin/matlab - 用文本编辑器(比如TextEdit)打开这个脚本,找到
JAVA_OPTS相关的行 - 在后面加上:
-Djava.util.logging.config.file=/Users/你的用户名/Documents/MATLAB/logging.properties(替换成你实际的文件路径)
- 找到MATLAB的安装路径,比如
- 或者更简单,直接在终端里启动MATLAB时用这个命令:
matlab -Djava.util.logging.config.file=/Users/你的用户名/Documents/MATLAB/logging.properties
方法2:把Java错误输出重定向到空设备
这个方法更直接,让MATLAB把Java的错误信息直接扔到“黑洞”里,不会显示在Command Window:
- 找到MATLAB的
startup.m文件:打开MATLAB后输入userpath命令,返回的路径就是存放startup.m的地方(如果没有就自己新建一个) - 在
startup.m里添加这一行代码:
java.lang.System.setErr(java.io.PrintWriter(java.io.FileWriter('/dev/null')));
- 保存文件,重启MATLAB。以后每次启动时,这个命令会自动执行,把Java的错误输出重定向到MacOS的空设备
/dev/null,你就看不到那些烦人的错误了。
注意事项
这些方法都是抑制错误显示,没法彻底解决兼容性问题——毕竟MATLAB 2010是十多年前的版本,和High Sierra的Java环境不匹配是硬伤。但至少能让你正常使用Command Window,代码也能继续运行。如果某个方法对你没用,可以试试另一个,不同环境下可能效果不一样。
内容的提问来源于stack exchange,提问作者maezawi
相关产品推荐
相关产品推荐

