0

Grails 1.1 プラグインで、次のコードを使用してメイン アプリケーションからクラスをロードしようとしています。

class MyClass {
  static Map getCustomConfig(String configName){
    return new ConfigSlurper().
      parse(ApplicationHolder.application.classLoader.loadClass(configName))                    
  }
}

構成情報を含むconfigNameクラスの名前はどこにありますか。$MAIN_APP/grails-app/confただし、上記のコードが単体テスト内で実行されるとapplicationHolder.applicationnull が返されるため、上記のメソッドはNullPointerException. この問題に対してGrails JIRA の問題が作成されましたが、問題がまだ存在しているように見えるにもかかわらず、修正済みとしてマークされています。

GrailsApplicationプラグイン記述子クラス内で、暗黙のapplication変数を介してメイン アプリケーション (のインスタンス) にアクセスできることを知っています。しかし、上記のコードはプラグイン記述子には含まれていません。

プラグイン内 (ただし、プラグイン記述子の外) のメイン アプリケーションからクラスをロードする方法はありますか?

ありがとう、ドン

4

1 に答える 1

0

考えられる答えは2つあります。

正解

GrailsApplicationは単体テストでは使用できないため、上記のコードが機能するには統合テストである必要があります

動作するハック

変化する

parse(ApplicationHolder.application.classLoader.loadClass(configName))

parse(MyClass.classLoader.loadClass(configName))
于 2009-05-26T17:31:16.933 に答える