この質問はおそらくSOですでに回答されていますが、自分でうまく機能させることができませんでした...
Liferay ポートレットがあり、このポートレットの初期化 (再デプロイ) 時に config.xml ファイルを読み込もうとしています。ただし、Java からポートレットへの相対 (または絶対) パスを取得できないようです...この質問は、私が解決している問題に近いものでしたが、URL が機能しなくなりました...
電話すると
String path = getPortletContext().getRealPath("someDirectoryExample");
問題が初期化された後のメソッドでは、機能しますが、ポートレットコンストラクター内で(=初期化フェーズ中に)実行したいと思います。ただし、これは次の非常に長い例外ストリークで終わります。
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() 関数を呼び出そうとしないと、すべて正常に動作します!