使用matlabpool时出错 - 未定义的函数' distcomp.fileserializer'

时间:2014-07-04 00:07:25

标签: matlab

我正在尝试使用MATLAB中的并行计算工具箱来帮助加快我正在执行的一些密集计算。在我使用parfor之类的结构之前,我需要通过matlabpool创建一个工作池。首先,我只想通过自己调用local而不使用其他参数来使用默认的/ matlabpool配置文件。但是,当我这样做时,我收到以下错误消息:

>> matlabpool
Starting matlabpool using the 'local' profile ... 
Error using matlabpool (line 134)
Undefined function 'distcomp.fileserializer' for input arguments of type
'distcomp.filestorage'.

我在Mac OS X 10.9.3(Mavericks)上运行MATLAB R2013a。有没有人遇到过这个错误?这是如何解决的?

1 个答案:

答案 0 :(得分:4)

感谢@RTL在上面的评论中,他发现这是在将Java版本更新到1.6.0_39或更高版本后引入的错误。这个can be found here的主题。使用至少此版本或更高版本的任何Java版本运行任何Parallel Computing Toolbox代码可能会导致NullPointerException被抛出。此处出现distcomp.fileserializer错误。

因此,我在上面引用的帖子中发布了一个错误修复,其中必须更新MATLAB中的几个文件。以下是我为解决此错误而采取的步骤:

  1. 访问以下描述此错误修复的网站:http://www.mathworks.com/support/bugreports/919688

  2. .zip个可用文件,其中包含在MATLAB中覆盖所需的必要文件。每种.zip文件都与您使用的MATLAB版本有关。请务必下载与您的MATLAB版本对应的正确 .zip文件。上面提到的帖子中有一张海报,声称这些文件打破了他/她的MATLAB,所以他们需要重新安装。这不会发生在我身上。

    当我运行MATLAB R2013a时,这是我下载的.zip文件的链接:http://www.mathworks.com/support/bugreports/license/accept_license/5383?fname=attachment_919688_12b_13a_2013-03-08.zip&geck_id=919688

  3. 打开MATLAB,在命令提示符下键入以下内容:cd (matlabroot)并按 ENTER RETURN

  4. 在显示“当前文件夹”子窗口的GUI中,右键单击此区域中的任意位置,然后单击“在Finder中打开当前文件夹”。这将打开MATLAB在Finder中的系统上的位置。就我而言,我的MATLAB可以在这里找到:/Applications/MATLAB_R2013a.app

  5. 现在,关闭MATLAB

  6. 解压缩已下载的.zip文件的内容。您会看到解压缩档案中有三个文件夹:bugreportjavatoolbox。您只需担心javatoolbox

  7. 您需要做的只是使用解压缩的存档替换javatoolbox文件夹的内容,并找到相同的javatoolbox个文件夹在步骤#4的MATLAB上。在此之前,请转到步骤#8。

  8. 强烈建议您在执行此操作之前保存要覆盖的内容的副本。我只是重命名了我要用后缀old覆盖的文件和文件夹,以便我可以在必要时恢复它们。为了您的考虑,这些是需要使用.zip文件替换的文件和文件夹:

    • java/jarext/distcomp/jiini2/
    • toolbox/distcomp/private/initcommon.m
  9. 现在您已备份这些文件,请获取.zip文件的内容,并在您使用步骤4找到的文件夹中覆盖MATLAB程序中的文件。

  10. 重启MATLAB。这应该可以解决这个错误,它对我有用。