问题描述:Error when using uigetdir() in deployed MATLAB application (java.lang.IllegalArgumentException: eval requires a valid MCR id when running in standalone mode)
问题具体:
Error using matlab.ui.internal.dialog.FolderChooser/doShowDialog (line 70)
Java exception occurred:
java.lang.IllegalArgumentException: eval requires a valid MCR id when running in standalone mode.
at com.mathworks.jmi.NativeMatlab.PostMatlabMessage(Native Method)
at com.mathworks.jmi.NativeMatlab.postMatlabMessage(NativeMatlab.java:224)
at com.mathworks.jmi.NativeMatlab.postMatlabMessage(NativeMatlab.java:240)
at com.mathworks.jmi.MatlabLooper.postMatlabMessage(MatlabLooper.java:150)
at com.mathworks.jmi.MatlabMCR.postAsync(MatlabMCR.java:1542)
at com.mathworks.jmi.MatlabMCR.eval(MatlabMCR.java:518)
at com.mathworks.jmi.Matlab.eval(Matlab.java:1197)
at com.mathworks.jmi.MatlabPath$PathCallback.completed(MatlabPath.java:1449)
at com.mathworks.jmi.MatlabMCR$InterestHandler.messageReceived(MatlabMCR.java:1663)
at com.mathworks.jmi.NativeMatlab.ProcessPendingEvents(Native Method)
at com.mathworks.jmi.NativeMatlab.processPendingEvents(NativeMatlab.java:508)
at com.mathworks.jmi.AWTUtilities$MatlabLatch.safeWait(AWTUtilities.java:892)
at com.mathworks.jmi.AWTUtilities$MatlabLatch.waitFcn(AWTUtilities.java:907)
at com.mathworks.jmi.AWTUtilities$Latch.acquire(AWTUtilities.java:770)
at com.mathworks.jmi.AWTUtilities$Invoker.invoke(AWTUtilities.java:500)
at com.mathworks.jmi.AWTUtilities.invokeAndWaitInternal(AWTUtilities.java:250)
at com.mathworks.jmi.AWTUtilities.invokeAndWait(AWTUtilities.java:111)
Error in matlab.ui.internal.dialog.FolderChooser/show (line 48)
Error in uigetdir_helper (line 32)
Error in uigetdir (line 61)
Error in Settings_Window>Select_Output_Report_Callback (line 275)
Error in gui_mainfcn (line 95)
Error in Settings_Window (line 42)
问题截图:
问题不大但糟心的很
解决方法:
这是一个已知的bug(2018a仍然存在,希望在2018b可以解决)
去这个地方https://download.csdn.net/download/sinat_38679789/10972043下载这个文件,然后搜索一下matlab路径下的所有的uigetdir,让把下载的文件放在比所有原来的uigetdir更高级的目录下,原来的那几个都不用动,什么时候bug修复了,什么时候把这个文件删了就行啦
这是私人的解决方案是我遇到这个问题,解决这个问题,从matlab社区Nate Ellingson大神提供的脚本copy过来的,在matlab官方上这个问题没有解决方法。
Dear Nate:If you see this article and feel that what I have done is not appropriate, please contact me, I will give you a satisfactory answer。Thanks for your help.