diff --git a/autoload/SpaceVim/api/job.vim b/autoload/SpaceVim/api/job.vim
index 2bd8cb3bf..d07fa4511 100644
--- a/autoload/SpaceVim/api/job.vim
+++ b/autoload/SpaceVim/api/job.vim
@@ -8,6 +8,7 @@ let s:self.jobs = {}
 let s:self.nvim_job = has('nvim')
 let s:self.vim_job = !has('nvim') && has('job') && has('patch-8.0.0027')
 let s:self.vim_co = SpaceVim#api#import('vim#compatible')
+let s:self._message = []
 
 if !s:self.nvim_job && !s:self.vim_job
   augroup SpaceVim_job
@@ -78,6 +79,12 @@ function! s:self.start(argv, ...) abort
     if job > 0
       let msg = ['process '. jobpid(job), ' run']
       call extend(self.jobs, {job : msg})
+    else
+      if job == -1
+        call add(self._message, 'Failed to start job:' . (type(a:argv) == 3 ? a:argv[0] : a:argv) . ' is not executeable')
+      elseif job == 0
+        call add(self._message, 'Failed to start job: invalid arguments')
+      endif
     endif
     return job
   elseif self.vim_job
@@ -226,3 +233,7 @@ function! s:self.info(id) abort
     call self.warn()
   endif
 endfunction
+
+function! s:self.debug() abort
+  echo join(self._message, "\n")
+endfunction
diff --git a/autoload/SpaceVim/plugins/pmd.vim b/autoload/SpaceVim/plugins/pmd.vim
index f805d131c..bdbb49b3c 100644
--- a/autoload/SpaceVim/plugins/pmd.vim
+++ b/autoload/SpaceVim/plugins/pmd.vim
@@ -22,8 +22,8 @@ let s:options = {
       \ 'complete' : 'file',
       \ },
       \ '-cache' : {
-      \ 'description' : 'Set cache directory',
-      \ 'complete' : 'dir',
+      \ 'description' : 'Set cache file',
+      \ 'complete' : 'file',
       \ },
       \ }
 
@@ -31,10 +31,6 @@ if !exists('Pmd_Cmd')
     let g:Pmd_Cmd = ['pmd']
 endif
 
-if !exists('Pmd_Cache_Dir')
-  let g:Pmd_Cache_Dir = expand('~/.cache/pmd/')
-endif
-
 if !exists('Pmd_Rulesets')
     let g:Pmd_Rulesets = ["-R", "java-basic,java-design", "-property", "xsltFilename=my-own.xs"]
 endif
@@ -70,6 +66,7 @@ function! s:on_pmd_stdout(id, data, event) abort
 endfunction
 
 function! s:on_pmd_stderr(id, data, event) abort
+  let s:JOB._message += a:data
   if g:Pmd_silent_stderr == 0
     echom string(a:data)
   endif
@@ -82,11 +79,7 @@ function! s:on_pmd_exit(id, data, event) abort
 endfunction
 
 function! SpaceVim#plugins#pmd#run(...)
-  let argv = g:Pmd_Cmd
-  if isdirectory(g:Pmd_Cache_Dir) && index(a:000, '-cache') == -1
-    let argv += ['-cache', g:Pmd_Cache_Dir]
-  endif
-  let argv += a:000
+  let argv = g:Pmd_Cmd + a:000
   if index(a:000, '-R') == -1
     let argv += g:Pmd_Rulesets
   endif
@@ -105,6 +98,7 @@ endfunction
 
 function! SpaceVim#plugins#pmd#debug()
   call s:CMD.debug()
+  call s:JOB.debug()
 endfunction