Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.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
Java 为什么弃用警告会在SBT中导致编译错误_Java_Scala_Sbt - Fatal编程技术网

Java 为什么弃用警告会在SBT中导致编译错误

Java 为什么弃用警告会在SBT中导致编译错误,java,scala,sbt,Java,Scala,Sbt,我正在从事的项目使用Scala和SBT。我需要在我们的代码中引入不推荐使用的方法,而不仅仅是给我一个错误,sbt在我尝试编译代码时给了我一个编译错误 是否有一个标志或设置使这发生,我可以改变 method getDB in class Mongo is deprecated: see corresponding Javadoc for more information. [error] lazy val db: com.mongodb.DB = mongoClient.getDB("foo

我正在从事的项目使用Scala和SBT。我需要在我们的代码中引入不推荐使用的方法,而不仅仅是给我一个错误,sbt在我尝试编译代码时给了我一个编译错误

是否有一个标志或设置使这发生,我可以改变

method getDB in class Mongo is deprecated: see corresponding Javadoc 
for more information.
[error]   lazy val db: com.mongodb.DB = mongoClient.getDB("foo")
[error]                                             ^
[error] one error found
[error] (web/compile:compileIncremental) Compilation failed
[error] Total time: 9 s, completed Jun 2, 2017 7:20:53 AM

谢谢。

Scalac有一个标志
Xfatal warnings
,可以将警告变成错误。看到和

解决方法是定义一个不推荐使用的特性来调用该方法,并使其同伴对象实现该特性:

scala> @deprecated("","") def foo = "I am deprecated"
foo: String

scala> @deprecated("","") trait Foo { def safeFoo = foo }; object Foo extends Foo
defined trait Foo
defined object Foo

scala> foo
<console>:13: warning: method foo is deprecated:
       foo
       ^
res0: String = I am deprecated

scala> Foo.safeFoo
res1: String = I am deprecated
scala>@deprecated(“,”)def foo=“我不赞成”
foo:String
scala>@deprecated(“,”)trait Foo{def safeFoo=Foo};对象Foo扩展了Foo
定义特征Foo
定义对象Foo
scala>foo
:13:警告:不推荐使用方法foo:
福
^
res0:String=我已被弃用
scala>Foo.safeFoo
res1:String=我已被弃用

Scalac有一个标志
Xfatal warnings
,将警告转换为错误。看到和

解决方法是定义一个不推荐使用的特性来调用该方法,并使其同伴对象实现该特性:

scala> @deprecated("","") def foo = "I am deprecated"
foo: String

scala> @deprecated("","") trait Foo { def safeFoo = foo }; object Foo extends Foo
defined trait Foo
defined object Foo

scala> foo
<console>:13: warning: method foo is deprecated:
       foo
       ^
res0: String = I am deprecated

scala> Foo.safeFoo
res1: String = I am deprecated
scala>@deprecated(“,”)def foo=“我不赞成”
foo:String
scala>@deprecated(“,”)trait Foo{def safeFoo=Foo};对象Foo扩展了Foo
定义特征Foo
定义对象Foo
scala>foo
:13:警告:不推荐使用方法foo:
福
^
res0:String=我已被弃用
scala>Foo.safeFoo
res1:String=我已被弃用

SBT为您提供了许多选项,可以将折旧警告设置为错误

set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation", "-Xfatal-warnings")

您可以在build.sbt文件中配置相同的

如果正在使用,则必须删除上述任何选项。(检查编译器设置)

另外,请执行
sbt clean reload compile

这对我很有用。

SBT为您提供了很多选项,可以将折旧警告设置为错误

set scalacOptions in ThisBuild ++= Seq("-unchecked", "-deprecation", "-Xfatal-warnings")

您可以在build.sbt文件中配置相同的

如果正在使用,则必须删除上述任何选项。(检查编译器设置)

另外,请执行
sbt clean reload compile

这对我很有效。

该标志实际上是在我的build.sbt中设置的,但我已经删除了它,并且仍然得到了编译错误。您可以用您得到的错误编辑您的问题吗?@Kohl更改后是否重新加载了sbt配置(重新启动sbt或在sbt提示符下键入reload)?@jan0sch比我快了一秒钟。@Kohl可能你有一个多项目的构建,没有从有问题的子项目中删除
-Xfatal warnings
,而是从另一个子项目中删除?这个标志实际上是在我的build.sbt中设置的,但我已经删除了它,我仍然得到了编译错误。你能用你得到的错误编辑你的问题吗?@Kohl更改后重新加载sbt配置(重新启动sbt或在sbt提示下键入reload)?@jan0sch比我快了一秒钟。@Kohl可能您有一个多项目生成,并且没有从有问题的子项目中删除
-Xfatal warnings
,而是从另一个子项目中删除?