在Tomcat的7我的web應用程序,我得到使用servletContext.getResource("file.xml")
在應用程序的資源。這會以jndi:/localhost/app/file.xml
的形式返回一個URL。獲得一個真正的文件路徑爲資源在Tomcat中
但是,因爲我需要這個文件傳遞給庫,只能接受真正的文件路徑(它有一個嵌入式的Ruby腳本,我認爲)的網址不會做。
是否有一種方式來獲得真正的文件路徑?我知道這會讓應用程序無法從WAR運行,但沒關係。
在Tomcat的7我的web應用程序,我得到使用servletContext.getResource("file.xml")
在應用程序的資源。這會以jndi:/localhost/app/file.xml
的形式返回一個URL。獲得一個真正的文件路徑爲資源在Tomcat中
但是,因爲我需要這個文件傳遞給庫,只能接受真正的文件路徑(它有一個嵌入式的Ruby腳本,我認爲)的網址不會做。
是否有一種方式來獲得真正的文件路徑?我知道這會讓應用程序無法從WAR運行,但沒關係。
我有一個非常骯髒的解決方法:
// get resource
URL resU = servletContext.getResource("style.less");
// get scratch dir
File workDir = (File) servletContext.getAttribute("javax.servlet.context.tempdir");
// copy resource to scratch file
File newFile = new File(workDir, "style.less");
Files.write(Resources.toByteArray(resU), newFile); // Google Guava
我應該能夠與一些緩存/校驗加快這,但它不是漂亮。
File file = File.createTempFile("style", ".less");
// ...