when i try to run my Application it gives me following error:
Compilation error
The file /app/models/setting.java could not be compiled. Error raised is : The type Setting is already defined
我在Windows上玩游戏。是否有可能播放有窗口不敏感的问题?所以它首先尝试编译models / Setting.java并在那个models / setting.java ??
之后这种奇怪行为还有什么其他原因?
/编辑: 既然我在这里写了这个问题,我没有在我的播放应用程序中编辑任何东西而且我没有重新启动它。现在我只是刷新页面并再次出现相同的错误 - 但是使用另一个模型!!
The file /app/models/staticsite.java could not be compiled. Error raised is : The type Staticsite is already defined
/ EDIT2: 在浏览器中刷新几页后,出现了这个错误:
The file /app/models/setting.java could not be compiled. Error raised is : The public type Setting must be defined in its own file
文件名为“Setting.java”,类名为Setting
答案 0 :(得分:3)
“类型已定义”当问题超出上述类时,可以引发异常。如果您的类名匹配(区分大小写)并且它在自己的文件中定义,则下一步是找出最近更改的引用此类的代码。对我来说,问题是我的文件“utils.Utils.java”已经通过“import utils.Utils;”导入到另一个文件中。当我在代码中引用“utils.Utils.someMethod()”时,它真的混淆了编译器。我将该行改为“Utils.someMethod()”,异常消失了。
我可能应该想出一个更好的命名方案。 :/
答案 1 :(得分:2)
重命名您尝试编译的类文件时会发生此错误。折射类名后,只需重新运行播放框架即可。这将解决问题。
答案 2 :(得分:1)
您是否有settings.java
并将其替换为Settings.java
?无论如何,请尝试play clean
。
如果不起作用,请仔细检查文件中是否有任何有问题的隐形字符。
答案 3 :(得分:1)
我认为你正在使用settings.someProperty而不是声明对象“settings”,而play认为它是“设置”类的静态方法,大写字母有错误。
答案 4 :(得分:0)
我在尝试解决git中的合并冲突时遇到了这个问题。我错过了一个更改,并且收到了这个编译错误。
问题是我有一个名为ClassName
的{{1}}类型的变量。该变量已被删除,但此特定行仍在尝试访问它。 Play没有报告className
变量不存在,而是做了一些黑魔法并最终报告了上面的名称冲突:“className
”。与Type ClassName is already defined
类和ClassName
变量存在某种名称冲突。
修复只是更改该行,删除对旧className
变量的错误访问。然后运行className
并重新启动服务器。