6

「Realease-2.0.4」と Grails 2.0.1 を使用してビルドした特定のプラグインをリリースすると、奇妙な例外が発生し、それを取り除くことができないようです。同様の設定のプラグインがたくさんありますが、これらのプラグインのどれもこの例外を生成しません。

| Error 2012-11-15 17:00:25,604 [main] ERROR plugins.DefaultGrailsPlugin  - Class not found loading plugin resource [spring.resources]. Resource skipped.
Message: spring.resources
   Line | Method
->> 202 | run       in java.net.URLClassLoader$1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|   190 | findClass in java.net.URLClassLoader
|   306 | loadClass in java.lang.ClassLoader
|   247 | loadClass in     ''
|   178 | doCall .  in _PluginDependencies_groovy$_run_closure5_closure23
|   176 | doCall    in _PluginDependencies_groovy$_run_closure5
|    60 | doCall .  in _GrailsPackage_groovy$_run_closure2
|    45 | doCall    in PublishPlugin$_run_closure1
^    62 | doCall .  in     ''
| Error 2012-11-15 17:00:25,977 [main] ERROR plugins.DefaultGrailsPlugin  - Class not found loading plugin resource [spring.resources]. Resource skipped.
Message: spring.resources
   Line | Method
->> 202 | run       in java.net.URLClassLoader$1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|   190 | findClass in java.net.URLClassLoader
|   306 | loadClass in java.lang.ClassLoader
|   247 | loadClass in     ''
|   178 | doCall .  in _PluginDependencies_groovy$_run_closure5_closure23
|   176 | doCall    in _PluginDependencies_groovy$_run_closure5
|    60 | doCall .  in _GrailsPackage_groovy$_run_closure2
|    45 | doCall    in PublishPlugin$_run_closure1
^    62 | doCall .  in     ''

これがスタックトレースのすべてです。

grails-app/conf/spring/resources 配下にリソースが定義されていません。

これを解決する方法はありますか?

4

1 に答える 1

0

1.コンテキスト

1 つのカスタム プラグインを開発し、それをアプリケーションで使用するために、grails 2.4.3 と Java 1.7 を使用しています。カスタム プラグインはspring-security-coreプラグインを使用し、いくつかの機能を追加します。アプリケーションはカスタム プラグインを使用し、別の機能を追加します。アイデアは、カスタム プラグインで spring-security およびその他の一般的な機能をセットアップし、それをいくつかのプロジェクトで使用することです。

conf/BuildConfig.groovyファイルで次の構成でアプリケーションを実行すると、問題はありません。

...
grails.plugin.location.'author-security-plugin' = "../AuthorSecurityPlugin"
...

ただし、プラグインをパッケージ化し、次のコマンドを使用して Maven ローカル リポジトリにインストールすると、次のようになります。

$ grails clean
$ grails refresh-dependencies
$ grails maven-install

conf/BuildConfig.groovyファイルで次の構成を使用します。

dependencies {
    // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes e.g.
    compile: ':domino-connection-lib:'
    runtime: 'postgresql:postgresql:9.2-1002.jdbc4'

    //custom plugin
    compile: "com.company:author-security-plugin:0.1"
}
...
//grails.plugin.location.'author-security-plugin' = "../AuthorSecurityPlugin"
...

そして「grails run-app」コマンドを実行すると、プロジェクトは次の例外をスローします:

| Packaging Grails application.....
2015-04-20 17:12:42,067 [main] ERROR plugins.DefaultGrailsPlugin  - Class not found loading plugin resource [spring.resources]. Resource skipped.
java.lang.ClassNotFoundException: spring.resources
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at _PluginDependencies$_run_closure2.doCall(_PluginDependencies.groovy:48)
at _GrailsPackage$_run_closure2.doCall(_GrailsPackage.groovy:57)
at RunApp$_run_closure1.doCall(RunApp.groovy:28)

注: spring/resources.groovyファイルには以下が含まれます。

// Place your Spring DSL code here
beans = {
    customAuthenticationProvider(CustomAuthenticationProvider){
        springSecurityService=ref('springSecurityService')
        customUserService=ref('customUserService')
    }
    ...
}

2.解決策

私の場合の解決策は、カスタムプラグインで grails-app/conf/spring/resources.groovy ファイルを削除し、その内容をアプリケーションで grails-app/conf/spring/resources.groovy に移動することでした。

これがお役に立てば幸いです。

于 2015-04-22T19:10:09.360 に答える