Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Jar中读取外部文件_Java_File Io_Fileinputstream - Fatal编程技术网

Java 从Jar中读取外部文件

Java 从Jar中读取外部文件,java,file-io,fileinputstream,Java,File Io,Fileinputstream,我使用下面提到的代码从java类读取文件(.cer文件)。java类将被捆绑在一个Jar中,然后包含在一个EAR中 FileInputStream inStream = new FileInputStream ("/home/test/foo.cer"); 我也试过了 FileInputStream inStream = new FileInputStream ("home/test/foo.cer"); 但它们都抛出FileNotFoundException。EAR部署在Unix系统的

我使用下面提到的代码从java类读取文件(
.cer
文件)。java类将被捆绑在一个Jar中,然后包含在一个EAR中

FileInputStream inStream = new FileInputStream ("/home/test/foo.cer"); 
我也试过了

FileInputStream inStream = new FileInputStream ("home/test/foo.cer"); 
但它们都抛出FileNotFoundException。EAR部署在Unix系统的Weblogic中。我已经验证了路径和文件名


如果我遗漏了什么,有什么想法吗?

我建议在应用程序服务器的类路径中包含.cer文件的位置,然后使用ClassLoader的方法加载它

如果将目录
/home/test
添加到类路径,则相应的代码应为:

this.getClass().getClassLoader().getResourceAsStream("foo.cer");

我发现,在appserver中运行时,这是一种更可靠的加载外部资源的方法,而且它使测试更加容易。

不过,现有的方法应该仍然有效,除非出现了一些奇怪的安全问题。事实上——我希望安全问题的表现与FileNotFoundException不同——你在@skaffman之前见过吗?是的,你通常会得到
SecurityException
,not
IOException
。您确定该文件存在于指定路径中吗?您需要验证该文件是否存在,以及运行Weblogic进程的用户是否具有/home/test的rx访问权限,以便能够读取foo。Cer不鼓励人们在没有内容的情况下编写这样的catch块,特别是在处理I/O时。@prunge我写的不是没有内容的,而是让他知道(万一他不知道)在文件处理过程中会发生什么2 IO要求的异常。有空的try/catch还有什么意义?如果我想做一个空的,我当然会做
catch(异常e){}
。。。。
try {
    BufferedReader reader = new BufferedReader(new FileReader(FILE_NAME_REL_OR_ABSOLUTE));
    reader.readLine();
} catch (IOException e) { 

} catch (FileNotFoundException ex) {

}