2012-09-22 43 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 
相关问题