未定义的函数'distcomp.fileserializer'

我正在尝试使用MATLAB中的Parallel Computing Toolbox来帮助加速我正在执行的一些密集计算。 在我可以使用像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。 有没有人遇到过这个错误? 这是如何解决的?


在上面的评论中感谢@RTL,他发现这是在将Java版本更新到1.6.0_39或更高版本后引入的一个错误。 这个线程可以在这里找到。 使用任何版本的Java(至少此版本或更新版本)运行任何并行计算工具箱代码都可能导致引发NullPointerExceptiondistcomp.fileserializer错误是这里的错误之一。

因此,在上面引用的线程中发布了一个错误修复,其中需要更新MATLAB中的几个文件。 以下是我遵循的解决此错误的步骤:

  • 转到描述此错误修复程序的以下网站:http://www.mathworks.com/support/bugreports/919688

  • 有可用的.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

  • 打开MATLAB,并在命令提示符下键入以下内容: cd (matlabroot)然后按ENTER或RETURN。

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

  • 现在,关闭MATLAB

  • 解压下载的.zip文件的内容。 您将看到解压缩归档文件中有三个文件夹: bugreportjavatoolbox 。 你只需要担心javatoolbox

  • 你需要做的只是用解压后的压缩文件替换javatoolbox文件夹的内容,使用步骤#4中的MATLAB中找到的相同的javatoolbox文件夹。 在这之前,请转到步骤#8。

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

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

  • 重新启动MATLAB。 这应该解决这个错误,并且它对我有用。

  • 链接地址: http://www.djcxy.com/p/80313.html

    上一篇: Undefined function 'distcomp.fileserializer'

    下一篇: How to detect if Chrome tab is crashed