Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos Mac上的Grails 2.3.1;ClassNotFound NonuniqueBeandDefinitionException异常_Macos_Spring_Grails - Fatal编程技术网

Macos Mac上的Grails 2.3.1;ClassNotFound NonuniqueBeandDefinitionException异常

Macos Mac上的Grails 2.3.1;ClassNotFound NonuniqueBeandDefinitionException异常,macos,spring,grails,Macos,Spring,Grails,最近,我将一个Grails项目从2.0.1升级到了2.3.1。该项目在我的Window机器和同事的Mac(通过Git拉取)上运行良好。不过,在我的Mac电脑上,当我尝试运行应用程序时,在它完成插件安装和编译后,我会遇到以下错误: ClassNotFoundException: org.springframework.beans.factory.NoUniqueBeanDefinitionException 完整的堆栈跟踪位于,但这是错误的症结所在 如果我在交互模式下运行grails,服务器就会

最近,我将一个Grails项目从2.0.1升级到了2.3.1。该项目在我的Window机器和同事的Mac(通过Git拉取)上运行良好。不过,在我的Mac电脑上,当我尝试运行应用程序时,在它完成插件安装和编译后,我会遇到以下错误:

ClassNotFoundException: org.springframework.beans.factory.NoUniqueBeanDefinitionException
完整的堆栈跟踪位于,但这是错误的症结所在

如果我在交互模式下运行grails,服务器就会启动,但当我浏览到控制器时,只会看到一个白色页面

Mac电脑上的环境与同事电脑上导致此错误的环境之间有什么不同?以下是我为解决此问题所做的尝试:

  • 删除my~/.grails文件夹的内容(以及清除特定子文件夹)
  • 删除项目并将其从git中拉回来
  • grails clean
  • 重新安装grails 2.3.1(使用gvm,因此我运行的命令是
    gvm uninstall grails 2.3.1
    gvm flush archives
    gvm install grails 2.3.1
  • 将项目内容克隆到其他目录中
  • 检查我的依赖关系报告以确保spring Pull的版本大于3.2.1,其中添加了NonuniqueBeandFinitionException类。有关完整报告,请参阅
  • 验证nouniquebeandDefinitionException.class文件是否在SpringBeans jar中,位于~/.gvm/grails/2.3.1/lib/org.springframework/spring-beans/jars/spring-beans-3.2.4.RELEASE.jar
  • grails刷新依赖项myApplicationDependencies.xml
    处的结果文件。
    • 从我的maven存储库中手动删除了3.1.2版本的Springbeans和其他Springjar,因为它们被列在依赖项中。Maven只是重新解决了这个问题
    • 将依赖项解析程序切换到ivy并获取依赖项报告。Spring的3.1.2版本被列为“收回”
我和我的同事都在运行MacOSXMavericks和最新版本的Java。欢迎有任何想法

更新 我还反复检查以确保我的项目不包含重复的类。为此,我运行了
grailsdevwar
,并使用-double标志来搜索重复的类。没有发现

同样,我非常确定系统实际上并没有试图抛出NonuniqueBeandFinitionException。我想它只是想找到那门课,但由于某种原因不能

----------------------------------------------
Scanned archives: 2 
Errors: 0
Archives with hits: 0

可能是文件名大小写有问题。检查所有源文件名的名称是否正确(驼峰大小写),并且不允许使用相同名称但大小写不同的文件

es:

如果做不到这一点,请查看grails依赖关系报告的输出。确保您的项目所使用的Spring版本高于或等于3.2.1,因为这是添加NonuniqueBeandFinitionException类的Spring版本。该类位于SpringBeans模块中。另外,确保您的其他依赖项都没有引入旧版本的Springbeans

如果是,您可以使用BuildConfig.groovy中的excludes配置选项告诉Grails忽略该可传递依赖关系。例如,假设您正在从mavenRepo“”中提取activiti引擎jar。更改依赖项声明以排除Springbeans,您应该是正确的

compile("org.activiti:activiti-engine:5.13") {
    excludes "spring-beans"
}

请参阅。

某些文件名的大小写可能有问题。检查所有源文件名的名称是否正确(驼峰大小写),并且不允许使用相同名称但大小写不同的文件

es:

如果做不到这一点,请查看grails依赖关系报告的输出。确保您的项目所使用的Spring版本高于或等于3.2.1,因为这是添加NonuniqueBeandFinitionException类的Spring版本。该类位于SpringBeans模块中。另外,确保您的其他依赖项都没有引入旧版本的Springbeans

如果是,您可以使用BuildConfig.groovy中的excludes配置选项告诉Grails忽略该可传递依赖关系。例如,假设您正在从mavenRepo“”中提取activiti引擎jar。更改依赖项声明以排除Springbeans,您应该是正确的

compile("org.activiti:activiti-engine:5.13") {
    excludes "spring-beans"
}
请参阅。

我有一个依赖项(activiti 5.13),它包含了SpringBeans模块的早期版本,作为它自己的依赖项。出于某种原因,这个版本在我的Mac上赢得了胜利,但在其他工作站上却被更新的SpringJar击败。解决方法是在BuildConfig.groovy文件中将Springbean从该依赖项中排除

...
dependencies {
    // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
    compile("org.activiti:activiti-engine:5.13") {
        excludes "spring-beans"
    }
    // runtime 'mysql:mysql-connector-java:5.1.16'
}
这会阻止Grails以传递方式解析我的依赖项的特定依赖项

请参阅位于的“禁用可传递依赖项解析”下的信息。

我有一个依赖项(activiti 5.13),该依赖项将SpringBeans模块的旧版本作为其自身的依赖项包含在内。出于某种原因,这个版本在我的Mac上赢得了胜利,但在其他工作站上却被更新的SpringJar击败。解决方法是在BuildConfig.groovy文件中将Springbean从该依赖项中排除

...
dependencies {
    // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
    compile("org.activiti:activiti-engine:5.13") {
        excludes "spring-beans"
    }
    // runtime 'mysql:mysql-connector-java:5.1.16'
}
这会阻止Grails以传递方式解析我的依赖项的特定依赖项


请参阅。

上“禁用可传递依赖项解析”下的信息,我确信这不是问题所在。否则,为什么在新的克隆之后,某些项目代码会在其他工作站上正常运行?此外,例外情况并不是存在非唯一Bean。例外情况是Java甚至找不到org.springframework.beans.factory.NoniqueBeandDefinitionException类。也就是说,它是一个ClassNotFoundException,而不是NonuniqueBeandDefinitionException