这个问题可能已经在 SO 上得到了回答,但我自己没有设法让它工作......
我有一个 Liferay Portlet,我正在尝试在该 Portlet 初始化(重新部署)时读取一些 config.xml 文件。但是,我似乎无法从 Java 获得 portlet 的相对(或绝对)路径......这个问题有点接近我正在解决的问题,但 url 不再起作用......
当我打电话
String path = getPortletContext().getRealPath("someDirectoryExample");
在问题初始化后的方法中,它可以工作,但我想在 portlet 构造函数中执行它(= 在初始化阶段)。然而,这以这个极长的异常连续性结束:
09:43:43,905 INFO [STDOUT] Caused by: java.lang.IllegalStateException: Config is null, please ensure that your init(config) method calls super.init(config)
09:43:43,905 INFO [STDOUT] at javax.portlet.GenericPortlet.getPortletContext(GenericPortlet.java:463)
09:43:43,905 INFO [STDOUT] at com.logic.PortletVisual.<init>(PortletVisual.java:23)
09:43:43,905 INFO [STDOUT] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
...
如果我可以将 xml 文件放在 docroot 或任何其他目录中的某个位置并使用相对路径,那就完全没问题了,但是即使我将它复制到任何地方,java 类也找不到该文件......(默认路径是 bin 目录服务器的 - JBossAS,但我想将此文件保存在我的 portelt 目录中)。
感谢您的任何提示!
编辑:不要对异常感到困惑。当我不尝试在构造函数中调用 getRealPath() 函数时,一切正常!