2009-10-22 212 views
1

我有一個通過tcp訪問java程序的c#程序。在我的C#程序中,我通過以下這行代碼啓動java程序:無法訪問jar文件

var process = new Process 
{ 
    StartInfo = 
    { 
     UseShellExecute = false, 
     CreateNoWindow = false, 
     FileName = "cmd.exe", 
     Arguments = (@"/c java -ms16m -mx512m -jar pathToJavaApp/javaApp.jar 3562") 
    } 
}; 

這工作正常我到現在沒有問題。我在同事的電腦上安裝了我的程序。現在我收到錯誤:無法訪問該jar文件。

因此,我嘗試在命令行「java -jar javaApp.jar」和javaApp立即啓動。

我試着以管理員身份啓動程序,發生同樣的錯誤。 (windows vista)

目前我不知道問題可能是什麼。

回答

2

我的猜測是jar文件的路徑中包含空格。你需要引用它。例如:

Arguments = "/c java -ms16m -mx512m -jar \"" + pathToJavaApp 
    + "\"/javaApp.jar 3562" 
+0

var pathJava = Application.StartupPath +「\\ pathToJavaApp \\ javaApp.jar」; 這是我的路徑被創建之前,將它傳遞給進程 – Gerbrand

+0

也許它是int他包含空間的application.startuppath – Gerbrand

+0

像你說的那樣,路徑中有一些空格。這些空間就像我在Application.StartupPath中想的那樣。 – Gerbrand

0

2東西 -

  • 它的-Xmx,和-Xms,不-MS,-mx。

  • 你的程序是否加載了任何附加的罐子?也許他們存在於你的同事電腦上,但不存在於它不能運行的電腦上。

(雖然喬恩斯基特的答案看起來更容易)

0

爲了能看到更多關於什麼是對改變你的論點要:

Arguments = (@"/c java -verbose -ms16m -mx512m -jar pathToJavaApp/javaApp.jar 3562") 

這樣,你可以看到它是什麼試圖加載並查看Jon Skeet是否正確。