2012-11-15 73 views
6

当我发布一个特定的插件,使用“Realease-2.0.4”和Grails 2.0.1时,我得到一个奇怪的异常,我似乎无法摆脱。我有很多类似的设置插件,并没有这些产生这种例外。grails发布插件错误“class not found loading plugin resource [spring.resources]”

| 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下没有定义资源。

任何想法如何解决这个问题?

+0

您是否找到解决方案? – whitenexx

+0

不,我没有... – Hoof

+0

你试图解决这个问题的任何钩子。 –

回答

0

1.Context

我使用的Grails 2.4.3和Java 1.7开发一个自定义插件和应用程序中使用它。该自定义插件使用弹簧安全核插件并添加了一些功能。该应用程序使用自定义插件并添加了其他功能。这个想法是在自定义插件中设置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) 

注:春/ 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。

我希望这可以帮助你。