gpt4 book ai didi

java - Liferay portlet 和相对路径

转载 作者:行者123 更新时间:2023-11-30 04:19:39 27 4
gpt4 key购买 nike

这个问题可能已经得到了回答,但我自己没能成功......

我有一个 Liferay Portlet,并且在该 Portlet 初始化(重新部署)时尝试读取一些 config.xml 文件。但是,我似乎无法从 Java 获取 portlet 的相对(或绝对)路径... This question有点接近我正在解决的问题,但网址不再起作用......

当我打电话时

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 类也找不到该文件...(默认路径是服务器 - JBossAS 的 bin 目录,但我想将此文件保留在我的 portelt 目录中)。

感谢您的任何提示!

编辑:不要对异常感到困惑。当我不尝试在构造函数中调用 getRealPath() 函数时,一切正常!

最佳答案

首先,“Portlet 构造函数”不是“=init 阶段”,init()是“初始化阶段”。

此外,请注意,没有人保证 getRealPath 实际上返回有意义的值 - 请参阅 its javadoc 。您在异常中给出的消息表明您的 init() 代码应该首先调用 super.init(),然后假设框架确实设置了 portletContext。

关于java - Liferay portlet 和相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17399654/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com