GStringImpl 不能转换为 java.lang.String
Posted
技术标签:
【中文标题】GStringImpl 不能转换为 java.lang.String【英文标题】:GStringImpl cannot be cast to java.lang.String 【发布时间】:2015-05-18 17:30:35 【问题描述】:我在使用 Grails 和 Spring Security 时遇到了以下错误。有没有其他人遇到过这样的问题?如果是这样,您的解决方法是什么?
Error |
Exception in thread "Thread-15"
Error |
java.lang.ClassCastException: org.codehaus.groovy.runtime.GStringImpl cannot be cast to java.lang.String
Error |
at org.codehaus.groovy.grails.project.compiler.GrailsProjectWatcher.run(GrailsProjectWatcher.java:114)
还有
java.lang.IllegalArgumentException: Failed to evaluate expression 'User_name'
【问题讨论】:
grep
User_name
的代码并向我们展示它周围的代码
"$my_var".toString 对我有用,谢谢 CyberAleks
【参考方案1】:
您是否生成了所有类(用户、角色...)。
你的命令看起来如何?
喜欢这个grails s2-quickstart com.testapp User Role
?
检查您的配置并像本教程中一样尝试。
Spring Security Plugin Tutorials
实际上,这个错误意味着在 groovy 中您使用了像“$my_var”这样的 GString,而某些类需要 String。它不能自动施放。如果你有这样的代码,你必须把它转换成这样的字符串:"$my_var".toString()
。
【讨论】:
特别是,如果您尝试将 GString 分配给静态类型为 String 的内容(或为 String 类型的方法参数传递 GString),那么 Groovy 将为您进行转换,但如果您分配给键入为 Object 的东西,然后您必须自己转换它。 同意。我认为问题可能是像 def myvar = "$some value" 这样的代码,它将被委托给 spring 安全框架中的一些 java 类。 这个答案对我有用,但就我而言,它的用途是在build.gradle
文件中。以上是关于GStringImpl 不能转换为 java.lang.String的主要内容,如果未能解决你的问题,请参考以下文章
传入mybatis的xml为Long型时报There is no getter for property named 'accountId' in 'class java.la
Swift 3 转换获取 'Int1' 不能转换为 'Bool'