2013-07-14 127 views
0

我试图运行一个可执行的jar在过去一小时,但我得到了标准错误Cannot access jarfile <jarpath>。过了一段时间,我确定这是一个报价问题,因为路径中包含空格。打开JarFile问题

但是,我将路径存储在一个字符串变量中,当我尝试连接包含带双引号的jar路径的字符串时,它仍然失败。我应该如何解决这个问题?

举例说明:

string path = /* %appdata% folder */ + ""\\Application Name\\" + "Application.jar"; 

//add the double quotes 
path = path + "\""; 
path += "\""; 

Process javaProcess = new Process() 

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = "javaw"; 
startInfo.Arguments = @"-jar " + path; 

//startInfo.Arguments = @"-jar" + "\"C:...\\Application\\Application.jar\""; 
//this one works, though 

javaProcess.StartInfo = startInfo; 
javaProcess.Start(); //Fails - cannot access jarfile! 

回答

0

当运行在命令行.jar文件,你在文件名末尾省略的.jar。

javaw -jar Application 
+0

实际上,没有文件必须有jar的扩展才能运行。刚刚检查了命令行。 – collielimabean

+0

我一定是在想别的东西。 – 2kan

0

我很愚蠢。真是愚蠢。

我解决了它们。在我的代码中,我使用了System.IO.Path来组合我的路径,但实际上搞砸了路径,使得javaw无法识别路径。因此,我把它改为:

string path = "\"" + %appdata% + fileName + "\"";

,它工作得很好。