Rat*_*tha 2 java windows-services classpath
我的应用程序中有以下代码块;
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(FilePath);
Run Code Online (Sandbox Code Playgroud)
这里'FilePath'是文件的绝对路径.
当我在正常模式下运行应用程序时,上面的代码在linux和windows中工作正常.(即:在命令提示符下)但是当我将应用程序作为Windows服务运行时,这不起作用.我将输入流作为'null'.
有人遇到过这样的问题吗?除了java类加载器之外,我找不到任何关于此的信息.这里我们使用"ContextClassLoader",它是正确使用的类加载器.
这有什么线索吗?
我认为这是因为你有"." 类路径上的(当前文件夹).这是一个坏主意,b)让你的应用以奇怪的方式突破.
您需要了解的是文件和资源之间的区别.文件是类路径之外的东西.
您应该使用File和FileReader访问它们.
资源是类路径上的东西.资源的路径始终/用作文件分隔符,而不是File.separator.
另一种解决方法是添加$HOME/repository/(Linux)或%HOME%/repository/类路径并使用加载资源"resources/api_templates/api.xml".为此工作,resources必须是一个文件夹$HOME/repository/.
如果不这样做,那么主目录中的所有文件(或启动应用程序的任何目录)都将作为资源添加到类路径中.
| 归档时间: |
|
| 查看次数: |
13860 次 |
| 最近记录: |