2012-09-22 72 views
2

我想單擊幫助按鈕時打開help.chm文件。目前,當點擊幫助按鈕時,它從桌面打開。我複製並粘貼了我的項目中的一個包中的文件。有沒有辦法從這個軟件包中打開這個文件?從同一個軟件包中打開一個文件

這是我做的,從桌面

private void helpActionPerformed(java.awt.event.ActionEvent evt)  
{            
    try 
    { 


     Runtime.getRuntime().exec("hh.exe C:/Users/toshiba/Desktop/help2.chm"); 
    }  
    catch (Exception ex) 
    { 
     ex.printStackTrace(); 
     System.out.println(ex.getMessage()); 
    }    
}   
+0

如果你想要解決你的問題的答案,你需要更具體。從你寫下你的問題的方式來看,我很想說明問題。你有沒有試過指定chm文件的絕對路徑?例如,如果您的文件位於驅動器C的包com.abc中,是否嘗試將路徑指定爲C:\ com \ abc? – CKing

+0

@bot對不起,如果我不是特定的。是的,我試圖使用絕對路徑。但我的問題的重點是如果我將jar文件移動到另一個地方,那麼文件將無法打開。 –

+0

'help2.chm'很可能是這個部署時的[tag:embedded-resource],並且我懷疑'hh.exe'可以訪問這個資源。 –

回答

2

使用getResourceAsStream(String name)getResources(String name)並提供包名和重源名稱分隔並以「/」作爲前綴。

例如,如果資源是在封裝測試:

/Test/help.chm:

您要訪問的資源,從你會做的類中( getResourceAsStream(String name)):

InputStream is=getClass().getResourceAsStream("/Test/help.chm"); 

或使用getResources(String name)

URL file=getClass().getResource("/Test/help.chm"); 

爲進一步的幫助看看this偉大的教程。

+0

謝謝。有沒有辦法打開一個文件,而不是 Runtime.getRuntime().exec(「文件名」) –

+1

@CalmSea是看看[ProcessBuilder](http://docs.oracle.com/javase/7/文檔/ API /爪哇/郎/ ProcessBuilder.html) –

2

打開該文件,如果你的文件是jar包裏面,你可以通過這種方式獲得網址:

URL resource = getClass().getResource("yourFile.chm"); 
System.out.println("URL to resource: " + resource); 

,或者你可以嘗試類似:

//it return the relative path 

ResourcesLoader.class.getClassLoader().getResource("package1/resources/repository/yourFile.chm").toString(); // if file is inside package 
相關問題