diff --git a/lisp/ob-ditaa.el b/lisp/ob-ditaa.el
index d3d76e5..63967de 100644
--- a/lisp/ob-ditaa.el
+++ b/lisp/ob-ditaa.el
@@ -86,13 +86,29 @@ This function is called by `org-babel-execute-src-block'."
 	 (java (cdr (assoc :java params)))
 	 (in-file (org-babel-temp-file "ditaa-"))
 	 (eps (cdr (assoc :eps params)))
+	 (jar-file-name (shell-quote-argument
+			 (expand-file-name
+			  (if eps org-ditaa-eps-jar-path org-ditaa-jar-path))))
+	 (emacs-p (string-match "cygwin" (emacs-version)))
+	 (jar-file-name-wrapped
+	  (if emacs-p
+	      ;; Cygwin doesn't have Jave, have to use Windows native Java.
+	      ;; So Cygwin paths must be converted to Windows paths.
+	      (format "`cygpath -w %s`" jar-file-name)
+	    jar-file-name))
+	 (in-file-wrapped
+	  (if emacs-p
+	      (format "`cygpath -w %s`" (org-babel-process-file-name in-file))
+	    (org-babel-process-file-name in-file)))
+	 (out-file-wrapped
+	  (if emacs-p
+	      (format "`cygpath -w %s`" (org-babel-process-file-name out-file))
+	    (org-babel-process-file-name out-file)))
 	 (cmd (concat "java " java " " org-ditaa-jar-option " "
-		      (shell-quote-argument
-		       (expand-file-name
-			(if eps org-ditaa-eps-jar-path org-ditaa-jar-path)))
+		      jar-file-name-wrapped
 		      " " cmdline
-		      " " (org-babel-process-file-name in-file)
-		      " " (org-babel-process-file-name out-file)))
+		      " " in-file-wrapped
+		      " " out-file-wrapped))
 	 (pdf-cmd (when (and (or (string= (file-name-extension out-file) "pdf")
 				 (cdr (assoc :pdf params))))
 		    (concat
