【发布时间】:2017-11-11 12:35:06
【问题描述】:
我在 Amazon EC2 实例 (Ubuntu) 上运行的 Spring Boot 应用程序中编写了以下代码:
String userFile = "myfile.txt";
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(userFile));
它在我的本地主机上运行良好,但是当我将 .jar 部署到产品服务器(如上所述)时,stream 是 null 而userFile 是有效的文件路径。有什么正当理由吗?与服务器空间或权限有关?与服务器配置文件有关吗?(application.yml 在我的情况下)
【问题讨论】:
-
stream不能返回null,因为它不是函数。你的意思是stream是 null,所以值null?在构造函数调用之后,如果没有忽略异常的 try-catch 块,这将是不可能的。 -
是的,
stream不能是null。即使是权限或驱动器空间问题,您也会遇到异常。也许您正在其他地方吞下异常。你能告诉我们一个完整的方法吗? -
您已经捕获并忽略了一个异常,而是返回了 null。有什么例外?答案就是您的问题的答案。
-
叹息。有一个prior 异常,阻止了对
stream的分配,因此它保持为空。 那个例外是什么? 这就是您问题的全部答案。当您在这里提出问题时,您应该始终发布所有相关代码。现在就做。 -
无论如何-问题不完整。 @Perry,您的代码 必须 包含发生 NullPointerException 的行。并解决您的问题:将您的 finally 块调整为 only 关闭流,当它不为空时。然后您将看到原始异常(如果您没有在任何地方忽略它)。
标签: java spring spring-boot amazon-ec2 stream