这应该很简单,但花了我几个小时。我在此网站上找到的所有内容都表明我做得正确,但仍然找不到该文件。
在 jar 文件内,我在顶层有两个文件“CDAkeystore.jks”和“CDAtruststore.jks”。
然而当我打电话时
securityProps.setProperty("javax.net.ssl.keyStore","CDAkeystore.jks");
我收到系统找不到请求的文件错误。
调用此方法的类文件位于通常包排列中的同一个 jar 内。
jar文件如下:
com ..... (a lot more class files)
org ..... (lots of class files)
META-INF
CDAtruststore.jks
CDAkeystore.jks
这怎么这么难?!!
----------已添加信息------n
由于使用路径的对象是开源的,我找到了他们用来加载文件的例程。它是:
InputStream keystoreInputStream = preBufferInputStream(new FileInputStream(keyStoreName));
根据 FileInputStream(String name) 的文档,它是
通过打开到实际文件的连接来创建 FileInputStream,该文件由文件系统中的路径名“name”命名。那么这条路径应该如何表达呢?
最佳答案
使用YourClass.class.getResourceAsStream()
或this.getClass().getResourceAsStream()
。如果您处于多个类加载器环境中,您也可以使用类加载器。
关于java - 如何从 jar 'within' 访问 jar 内的非类文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13587578/