Class 我如何修复Grails错误:";找不到名称PrivacyOptions的域类。请重试并输入一个有效的域名类名称;

Class 我如何修复Grails错误:";找不到名称PrivacyOptions的域类。请重试并输入一个有效的域名类名称;,class,grails,dns,Class,Grails,Dns,我刚刚开始使用Groovy/Grails 我在我的项目中添加了一个新的域控制器,但generate controller不喜欢它 还有其他一些迹象表明有问题:如果我运行应用程序,数据库中不会为此创建任何表 我已经将DomainController简化为一个字符串字段,并且没有任何约束,只是为了确保我的规范没有问题。我还试着给它改名,以防它的原名(隐私)与其他东西发生冲突 我确信我有正确的名称,并且该文件名为PrivacyOptions.groovy,类内部也被称为PrivacyOptions 以

我刚刚开始使用Groovy/Grails

我在我的项目中添加了一个新的域控制器,但generate controller不喜欢它

还有其他一些迹象表明有问题:如果我运行应用程序,数据库中不会为此创建任何表

我已经将DomainController简化为一个字符串字段,并且没有任何约束,只是为了确保我的规范没有问题。我还试着给它改名,以防它的原名(隐私)与其他东西发生冲突

我确信我有正确的名称,并且该文件名为PrivacyOptions.groovy,类内部也被称为PrivacyOptions

以下是错误:

Running script /opt/local/grails/scripts/GenerateController.groovy
Environment set to development
Domain class not found in grails-app/domain, trying hibernate mapped classes...
No domain class found for name PrivacyOptions. Please try again and enter a valid domain class name

我不知道你是怎么做到这一点的,但也许能帮你渡过难关

假设您使用“grails创建域类”来创建PrivacyOptions域对象,并且Groovy脚本显示在grails应用程序/域目录中,这对吗?您在测试/单元中获得PrivacyOptionTests权限了吗?通过了吗?是否添加了程序包?

运行:

grails clean
然后重新运行
generateall
命令


参考:

有关堆栈跟踪未清除缺少属性的相关问题:

在模型名称之前添加项目名称(即模型文件第一行中的包名称)

grails generate-all projectname.Class
经过一个小时的挠头和谷歌搜索,这是一个最终对我有效的方法

参考:

从1.2.2开始,Grails在默认为 项目名称-请参阅 因此,您需要运行
grails生成所有srapp.Srmodel
-伯特


不是projectname.Class,它必须是dirname.classname


例如:您的项目名是Helloworld,目录是“grails app/domain/Helloworld/User.groovy”。因此,命令是“grails生成所有helloworld.User”,而不是“helloworld.User”

非常有帮助。我遇到了同样的问题,将项目命名为“trip planner”,Grails将域目录生成为“~/trip/planner/”而不是“~/trip planner/”。那么Trip类的generateall命令应该是'grailsgeneratealltrip.planner.Trip'


以防有人在项目名称中添加“-”字符。

是的。。。也为我工作。我只是在我试图为其生成所有内容的类前面加上了包名,结果成功了。所以

生成所有赛道。用户


由于所有其他grails命令都不需要包含包名,因此确实存在一些错误:-)

生成所有域名将无法工作,因为需要完整的包名。 我想第一次添加一个*,然后您将看到其他调用的域类应该是什么样子

generate-all *

它必须是dirname.classname

如果您创建了一个域类Book,比如“grails app/domain/Book/Book.groovy”


它应该是:grails generate app book.book

如果您正在使用Groovy/grails工具套件,只需右键单击您创建的控制器即可查看域名,注意域名的确切大小写,然后右键单击视图并生成视图并键入domainname.viewname


例如,您的控制器名为RegistrationController,域名为helloworld,您可以右键单击视图,然后在“生成视图”对话框中输入值helloworld.Registration

我是从NetBeans IDE完成的。我发现问题在于,当我创建文件时,我选择了选项“创建groovy类”,而不是选项“创建域类”。我猜在某个秘密配置文件中的某个地方有一个类列表,这些类是域,create domain类执行必要的内务管理。是的,create domain类是关键。Groovy文件必须位于grails app/domain文件夹中。没有秘密配置file@Scott沃伦-这是不对的。我的域位于grails app/domain文件夹中,由于没有使用create domain类,我遇到了相同的问题。请参见底部“注意,这个命令只是为了方便起见,如果您选择,您也可以在您喜欢的文本编辑器或IDE中创建域类。”我遇到了类似的问题。我需要在调用“grails generate all packagename.domain”时包含包名。如果您处于交互模式,在键入
generate all
后,点击tab,它将自动填充包名并显示可能要使用的类。省去了一些打字和记忆的时间。自从我发布这篇文章以来的三年里,有多少人被这篇文章绊倒并投了更高的票。这是我第一次也是最后一次接触grails,因为此时我对grails作为一个平台失去了信心。非常感谢所有的代表:-)当一个SO搜索没有帮助,我做了一个谷歌搜索,这个弹出。省得我问一个重复的问题!工作得很有魅力。