2012-12-03 111 views
0

我想在Java中運行.jar文件,但出現異常,它不起作用。在目錄C:/Users/Administrator/Desktop/apache-solr-4.0.0/example,我有一個文件叫做start.jar。 我最後一個例子,但它引發了一個異常。我需要做些什麼才能解決問題?在Java中運行.jar

public void runStart() { 
    try { 
     Runtime rt = Runtime.getRuntime(); 
     Process p = rt.exec("C:\\Users\\Administrator\\Desktop\\apache-solr-4.0.0\\example\\start.jar"); 
    } catch (IOException ex) { 
     Logger.getLogger(SolrForm.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 
+1

什麼是錯誤? Post stacktrace .. –

+0

java.io.IOException:無法運行程序「C:\ Users \ Administrator \ Desktop \ apache-solr-4.0.0 \ example \ start.jar」:CreateProcess錯誤= 193,%1不是有效的Win32應用程序 \t在java.lang.ProcessBuilder.start(ProcessBuilder.java:1029) – user527

+0

你應該運行它作爲一個Java應用程序而不是一個.exe – wxyz

回答

3

您需要在命令行中使用java -jar執行,否則您並未真正執行任何操作。

例如rt.exec("java -jar myjar.jar");

哦,您需要等待該過程完成;否則當它超出範圍時可能會意外終止。

1

您只傳遞一個文件,即注意可執行應用程序。假設您的Java環境配置,您應將行改成這樣:

Process p = rt.exec("java - jar C:\\Users\\Administrator\\Desktop\\apache-solr-4.0.0\\example\\start.jar"); 
+0

我試了一下,我沒有得到異常,但沒有奏效... – user527

+0

如果它沒有引發異常,那是因爲找到了「java」命令。當您啓動應用程序時,可能發生的情況是一個例外。罐子不存在也是可能的。我建議你在SO中運行這個命令,看看會發生什麼。 –

+0

我使用這個命令的另一個jar文件,我沒有得到異常,但應用程序不工作... – user527

0

嘗試用這樣的事情:

rt.exec("c:\\java_path\\bin\\java -jar C:\\Users\\Administrator\\Desktop\\apache-solr-4.0.0\\example\\start.jar"); 

確保您的實際絕對路徑替換c:\\java_path\\bin\\java到Java二進制。

+0

我試過了,我沒有得到例外,但它沒有再次工作。 .. – user527

2

當您嘗試在控制檯中運行該命令時,該功能無法正常工作。 jar文件本身不是可執行文件,但它可以由Java執行。

嘗試做這樣的:

public void runStart() { 
    try { 
     Runtime rt = Runtime.getRuntime(); 
     Process p = rt.exec("java -jar C:\\Users\\Administrator\\Desktop\\apache-solr-4.0.0\\example\\start.jar"); 
    } catch (IOException ex) { 
     Logger.getLogger(SolrForm.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

這樣,您就啓動Java,說你給它一個罐子。如果Java在你的路徑中(或在當前目錄中),它應該工作。