How to apply a patch

2019-04-15 21:33发布

问题:

I have this patch code which i downloaded from a web article (Calling Matlab from Java). http://www.cs.virginia.edu/~whitehouse/matlab/JavaMatlab.html

But I donot know how to apply it in my windowsXp running computer. What I'm trying to do is call Matlab script file from java. I have found the necessary source codes and every thing but this mater is holding be back. Any help is highly appreciated. Thank you.

Here's the patch code.

Index: MatlabControl.java
===================================================================
RCS file: /cvsroot/tinyos/tinyos-1.x/tools/java/net/tinyos/matlab/MatlabControl.java,v
retrieving revision 1.3
diff -u -r1.3 MatlabControl.java
--- MatlabControl.java 31 Mar 2004 18:43:50 -0000 1.3
+++ MatlabControl.java 16 Aug 2004 20:36:51 -0000
@@ -214,7 +214,8 @@
          matlab.evalConsoleOutput(command);
          }else{
-               matlab.fevalConsoleOutput(command, args, 0, null);
+               //     matlab.fevalConsoleOutput(command, args, 0, null);
+               matlab.fevalConsoleOutput(command, args);
          }
      } catch (Exception e) {
          System.out.println(e.toString());

回答1:

You need to apply that patch to the file MatlabControl.java. On Unix, you have the standard patch program to do that, but that ofcourse isn't normally present on Windows.

But looking at the patch file, it's very small and you could easily do the change by hand. Look at the patch file: The lines with a - in the left column must be removed. The lines with a + must be added.

So you must look in MatlabControl.java and remove this line:

matlab.fevalConsoleOutput(command, args, 0, null);

And add these lines:

//     matlab.fevalConsoleOutput(command, args, 0, null);
matlab.fevalConsoleOutput(command, args);

In other words, it's a very small and simple change, you just have to remove the last two arguments to the method call to fevalConsoleOutput().

If you want the patch command (and lots of other Unix utilities) on Windows, you could download and install Cygwin.



回答2:

I'd download the standard UNIX patch tool and use:

patch -p0 <my_patch.diff


回答3:

If you use dev tools like Eclipse you can easily apply it as it is an option in the contextual menu (right click) go to Team - > Apply Patch. It should work.



回答4:

This patch is so small, you can easily apply it by hand.

So simply open the file MatlabControl.java and change line 214 (the one prepended with -) to fit the lines prepended with +.

After that your code should look like:

    else{
//                    matlab.fevalConsoleOutput(command, args, 0, null);
        matlab.fevalConsoleOutput(command, args);
    }


回答5:

JMI (Java-to-Matlab Interface)'s Matlab class and its fevalConsoleOutput method are explained here: http://UndocumentedMatlab.com/blog/jmi-java-to-matlab-interface/



回答6:

By Tortoise SVN, we can apply patch by following the below way. Click on Apply patch and browse the patch file.

Tortoise SVN