每当我启动Scala应用程序时,都会收到以下警告:
WARN - 导入的“SVNProperties”被包核心中对象SVNProperties的定义永久隐藏,位于app / core / SVNResource.scala的第4行
这意味着什么?
答案 0 :(得分:38)
你可能有类似这样的代码:
object Hidden {
import scala.collection.immutable
object immutable { def x = 7 }
}
除了不太明显的方式。你正在导入一些东西 - 在我的例子中,包immutable
- 然后你去定义一些同名的东西,阻止你使用你导入的东西。
特别是,您似乎尝试将SVNProperties
导入SVNResource.scala
,但SVNResource.scala
定义了自己隐藏导入的SVNProperties
。
答案 1 :(得分:24)
我将一些类从一个包移到另一个包后遇到了这个警告。我想新位置和旧位置的二进制文件之间存在一些冲突。在我的情况下,这有助于:
sbt clean
答案 2 :(得分:7)
当我的班级在同一个包中导入类时,我收到了这个警告。
删除不必要的导入后,警告就被删除了。
答案 3 :(得分:1)
在将一个班级从一个包裹转移到另一个包裹之后发生了这种情况,就像在astasiak的情况下一样。我没有运气就跑了sbt clean
。对于我的生活,我无法在旧地点找到班级。
然而,我有其他错误阻止我建立。当我修复它们时,这个错误就消失了。我的猜测是,在你可以干净地构建之前,sbt
仍然认为你的类在旧包中,并且包含此错误以及阻止你构建的任何其他构建错误。
我的建议? 检查其他编译错误并修复 - 由于sbt
自上次成功构建以来,onPanResponderGrant: (evt, gestureState) => {
console.log('identifier', evt.nativeEvent.identifier);
}
包结构已过时,您可能会错误地收到此错误。
答案 4 :(得分:1)
请继续扩展Nick的评论,因为这对我来说就是这样:
另一个常见原因是SVNProperties位于同一软件包中,因此已经在范围内。尝试显式导入它会导致出现此警告。
更具体地说,您可能会:
package app.core
// No need to import the following - it is already visible as
// you are in the same package
import app.core.SVNProperties
object SVNResource {
改为使用:
package app.core
object SVNResource {
( Opinion )就编码风格而言,您可能希望像例如使用驼峰式大小写不同的变量。 SvnProperties
,SvnResource
。对于大多数人来说,它读起来更容易,另请参见this question。
答案 5 :(得分:0)
我有一个名为 Server 的主类,我正在以下列方式在主类中创建一个jetty服务器。
import org.eclipse.jetty.server.Server
var server:Server=new Server()
我在运行 sbt run
时收到以下警告 > [warn] /home/xxx/xxx/xxx/src/main/scala/com/xxx/xxx/main/Server.scala:3:
> imported `Server' is permanently hidden by definition of object Server in package main
[warn] import org.eclipse.jetty.server.Server
[warn] ^
[warn] one warning found
我重命名了我的主课程,警告消失了。
答案 6 :(得分:0)
如果您正在使用Scala Eclipse IDE,则可以执行以下操作:
项目>清理...
此后,所有警告将被删除。
答案 7 :(得分:0)
还要确保您导入的包的名称= / =对象名。
答案 8 :(得分:0)
我通过循环依赖来解决这个问题。我两个班的同学都在偶然地互相使用。
答案 9 :(得分:0)
如果警告来自导入具有相同名称的类,则您始终可以使用导入重命名。
package domain
case class Company (...
package models
import domain.{Company => _Company}
object Company extends SkinnyCRUDMapper[_Company] {
答案 10 :(得分:0)
问题与依赖冲突有关,当您在多个 Jars 编译器中有同一个类时,发现其中一个类被隐藏并给出错误。
检查您的 Jar 版本是否在整个项目中相同或尝试更改冲突类之一的名称/包