我在JBOSS上运行Java SEAM2中的webapp。
在我的应用程序中,我试图在运行/运行时创建目录。
那么会发生这些目录的创建,但是当我尝试将文件写入其中时,会抛出空指针异常。 所以重新启动我的服务器,一切运行良好,为什么呢?
if(ClassName.class.getClassLoader().getResource("roles/" + role ) == null)
{
//create directory with role name
String rolePath = ClassName.class.getClassLoader().getResource("roles").getPath();
rolePath = rolePath.substring(1, rolePath.length());
rolePath = rolePath.replace("/", "\\");
rolePath = rolePath + "\\" + role;
if( !(new File(rolePath).mkdir()))
{
this.addMessage(FacesMessage.SEVERITY_ERROR, "Error Creating Role Directory");
return;
}
}
if(ClassName.class.getClassLoader().getResource("roles/" + role + "/" + app ) == null)
{
String appPath = ClassName.class.getClassLoader().getResource("roles/" + role).getPath();
appPath = appPath.substring(1, appPath.length());
appPath = appPath.replace("/", "\\");
appPath = appPath + "\\" + app;
File appFolder = new File(appPath);
if( !(appFolder.mkdir()))
{
this.addMessage(FacesMessage.SEVERITY_ERROR, "Error Creating Role Directory");
return;
}
}
我的猜测是,因为我使用的是getClassLoader,所以没有使用创建的新文件进行更新
答案 0 :(得分:1)
从类加载器创建一个基于资源路径的文件夹是一个坏主意(你永远不会从srouce /文件夹到哪里) 更好的方法是,使用java.io.temp文件夹,或使用配置来了解系统中的获取存储库文件夹。