cla*_*amp 2 java deployment jar
当我将一些数据加载到我的java程序中时,我通常使用FileInputStream.但是我将程序部署为jar文件和webstart,所以我必须使用getRessource()或getRessourceAsStream()直接从jar文件加载数据.
现在总是在开发和部署之间切换这段代码很烦人吗?
有这种方法吗?即有没有办法知道代码是否从jar运行?
当我尝试像这样加载它时:
InputStream is = this.getClass().getResourceAsStream("file.txt");
Run Code Online (Sandbox Code Playgroud)
返回的输入流只是null,尽管该文件肯定在应用程序的根目录中.
谢谢!
你为什么FileInputStream在开发过程中使用?为什么不getResourceAsStream从一开始就使用?只要将文件放在类路径中的适当位置,就不会有任何问题.它仍然可以是本地文件系统中的文件,而不是jar文件中的文件.
在考虑最终部署环境的情况下开发是有帮助的.
编辑:如果你想在类路径的根目录中有东西,你应该使用:
InputStream x = getClass().getResourceAsStream("/file.txt");
Run Code Online (Sandbox Code Playgroud)
要么
InputStream x = getClass().getClassLoader().getResourceAsStream("file.txt");
Run Code Online (Sandbox Code Playgroud)
基本上Class.getResourceAsStream会将相关资源解析为包含该类的包; ClassLoader.getResourceAsStream解析相对于"root"包的所有内容.
| 归档时间: |
|
| 查看次数: |
423 次 |
| 最近记录: |