当下面的行被执行时
String realPath = request.getSession().getServletContext().getRealPath("");
String imagePath = realPath/images/product/abc.jpeg;
System.out.println("ImagePath-> " + imagePath)
当我尝试打印 sys out 行时,我可以看到 realPath 在 weblogic 中返回 null 作为 null/images/product/abc.jpeg
当我用谷歌搜索解决方案时。我找到了两个解决方案:-
1.通过手动我可以转到 Weblogic 控制台 -> 域 -> Web 应用程序 -> 检查存档的真实路径
(我不想这样做)
2.我可以手动将以下条目添加到 weblogic.xml 中
<container-descriptor>
<show-archived-real-path-enabled>true</show-archived-real-path-enabled>
</container-descriptor>
我在 weblogic.xml
中添加并尝试重新部署,但 realPath 在添加 xml 文件后仍然返回 null。
当我通过更改控制台中的设置尝试第一种方法时,我可以看到 realPath 正在返回正确的路径。但我不希望用户不应该做任何更改。
除了上述两种用于 weblogic 的方法之外,还有其他替代方法吗?或者我可能遗漏了一些东西。
最佳答案
使用您的第二个选项,它在 WLS12.1.3 上对我有用。 Oracle 记录了这两种方法: 在存档的 Web 应用程序中调用 ServletContext.getRealPath() 会引发 NullPointerException(文档 ID 858783.1)
根据该说明,恐怕没有第三种选择。
关于java - getServletContext().getRealPath ("") 在 WebLogic 中返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26056989/