【问题标题】:java.lang.NumberFormatException: For input string: "" (Error when running `sbt test`)java.lang.NumberFormatException:对于输入字符串:“”(运行`sbt test`时出错)
【发布时间】:2017-07-26 22:50:41
【问题描述】:

在我的本地 Mac OS (Mountain Lion) 上,我一直在运行 sbt test,并且使用 Play 2.3.x、Scala (2.10.x) 编译/通过了测试。我本地的 Java 版本是“1.8.0_131”。

重新映像我的 Mac OS X(10.12.3) 后,在为相同的代码库(Play、Scala、Java 版本仍然相同)运行“sbt test”时,我开始收到非常奇怪的错误。

这可能与我的 Mac 升级无关,但这是我现在能想到的唯一变量(更改)。

如果有人能快速指出可能的原因,我将不胜感激?

错误堆栈跟踪看起来像

[error]    NumberFormatException: : For input string: ""  (ProxyUtils.java:159)
[error] com.ning.http.util.ProxyUtils.createProxyServerSelector(ProxyUtils.java:159)
[error] com.ning.http.client.AsyncHttpClientConfig$Builder.build(AsyncHttpClientConfig.java:1132)
[error] play.api.libs.ws.ning.NingAsyncHttpClientConfigBuilder.build(NingAsyncHttpClientConfigBuilder.scala:37)
[error] play.api.libs.ws.ning.NingWSAPI.buildAsyncClientConfig(NingWS.scala:563)
[error] play.api.libs.ws.ning.NingWSAPI.newClient(NingWS.scala:520)
[error] play.api.libs.ws.ning.NingWSAPI$$anonfun$client$1.apply(NingWS.scala:543)
[error] play.api.libs.ws.ning.NingWSAPI$$anonfun$client$1.apply(NingWS.scala:540)
[error] play.api.libs.ws.ning.NingWSAPI.client(NingWS.scala:538)
[error] play.api.libs.ws.ning.NingWSAPI.url(NingWS.scala:553)
[error] play.api.libs.ws.WS$.url(WS.scala:129)

【问题讨论】:

  • 我知道我在某种程度上(故意)含糊其辞,我已经得到了答案。它是(在我的机器上)设置的系统代理,第三方库(以某种方式)使用它并导致此错误。 (我必须承认这是一种模糊的答案,我必须承认,但我只能在这里说。)

标签: java scala testing playframework-2.3


【解决方案1】:

如果有人能快速指出造成这种情况的原因,我将不胜感激?

您只需要查看堆栈跟踪。它可以为您提供原因的“指针”。

例如,这里的异常消息中指出了原因,即:

对于输入字符串:""

这表明有一行代码试图解析一个什么都不包含的字符串,并抛出异常表示从字符串到数字的转换失败

造成这种情况的可能原因是应用程序在某处检索了一些数据,并在重新映像计算机后发生了更改。一般来说,纠正这种情况的方法可能是重新安装应用程序

【讨论】:

  • 我说得不够清楚。更新了问题描述。感谢您的评论。
【解决方案2】:

正如@HatsuPointerKun 已经说明的那样。您仍然没有提供足够的信息。

但也许这会有所帮助。看起来,在您的代码库的某些点中,WebApplication 通过 Play WS 发送了一个请求。 因为它的 URL 有问题,所以我认为存在一些端口问题(我可能说错了)。

这是提供的信息所能达到的最远距离。我可以建议您在 Stacktrace 向您显示的位置调试代码并调试代码以查看导致问题的值。并且您可以更深入地了解堆栈并了解您的组件在哪里使用它。

希望这会有所帮助。

【讨论】:

    【解决方案3】:

    我知道问题已经解决。在这里粘贴我的解决方案,以防其他人遇到同样的问题。

    在我的案例中发生此错误之前,我已经看到了此错误,因为该项目使用的内部版本号应该在 buildinfo.properties 中设置。它被设置为空,因此设置 buildnumber 后 sbt 编译错误消失了

    cat buildinfo.properties 
    #Tue Nov 24 21:12:02 EST 2020
    buildnumber=
    
      [info] Set current project to dummy-project (in build file:/home/mly/workspace/dummy-project)
    java.lang.NumberFormatException: For input string: ""                                   
            at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
            at java.lang.Integer.parseInt(Integer.java:592)
            at java.lang.Integer.parseInt(Integer.java:615)
            at scala.collection.immutable.StringLike$class.toInt(StringLike.scala:229)
            at scala.collection.immutable.StringOps.toInt(StringOps.scala:31)
            at sbtbuildinfo.BuildInfoPlugin$.readProp$1(BuildInfoPlugin.scala:33)
            at sbtbuildinfo.BuildInfoPlugin$.buildNumberTask(BuildInfoPlugin.scala:39)
            at sbtbuildinfo.BuildInfoPlugin$$anonfun$buildInfoDefaultSettings$5.apply(BuildInfoPlugin.scala:89)
            at sbtbuildinfo.BuildInfoPlugin$$anonfun$buildInfoDefaultSettings$5.apply(BuildInfoPlugin.scala:89)
            at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
            at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:40)
            at sbt.std.Transform$$anon$4.work(System.scala:63)
            at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
            at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:228)
            at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:17)
            at sbt.Execute.work(Execute.scala:237)
            at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
            at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:228)
            at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:159)
            at sbt.CompletionService$$anon$2.call(CompletionService.scala:28)
            at java.util.concurrent.FutureTask.run(FutureTask.java:266)
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
            at java.util.concurrent.FutureTask.run(FutureTask.java:266)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
            at java.lang.Thread.run(Thread.java:748)
    [error] (dummy-project/*:buildInfoBuildNumber) java.lang.NumberFormatException: For input string: ""
    

    当buildnumber设置编译错误会消失

    cat buildinfo.properties 
    #Tue Nov 24 21:12:02 EST 2020
    buildnumber=123
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-16
      • 2013-06-27
      • 1970-01-01
      • 2012-12-05
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多