java.io.IOException:系统找不到指定的路径



在一个特定的服务器(Windows 2012服务器R2)上,我在创建临时文件时遇到了麻烦。每次我尝试,我得到以下错误。

java.io.IOException: The system cannot find the path specified
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createTempFile(Unknown Source)
etc..

每次运行以下代码时都会发生错误:

InputStream inputStream = portalBean.createPDF( sessionID, foCode );

我尝试过的事情

  1. 动态更改java.io.tmpdir变量。System.setProperty("java.io.tmpdir", "C:\");

  2. -Djava.io.tmpdir=c:\temp添加到webnetwork lax文件到一个不受限制的位置

  3. 我尝试将webNetwork服务设置为以具有临时文件权限的指定用户(例如管理员)运行。

  4. 确保我有空闲的磁盘空间,我清理了c:windowstemp文件夹

  5. 确保tmp环境变量被设置为默认值

  6. 我还尝试从命令提示符中运行服务,该命令提示符是用Run As Administrator选项打开的。

IOException仍然徘徊。我有另一个服务器运行相同的代码没有问题(Windows server 2012)。

还有谁知道我还可以尝试什么方法来解决这个问题吗?或者关于如何更彻底地调试问题以掌握发生了什么,有什么建议吗?

可以用来调试这个问题的一个工具是来自系统内部工具包的进程监视器。步骤是:添加一个过滤器,只监视您的进程(我认为在您的情况下是javaw.exe),错误发生后,通过进程监视日志中的文件活动,您可以找到进程如何查找文件以及进程搜索了哪些目录。如果进程在错误的目录中搜索,您可以从日志中找到它。

我今天刚刚用这个工具解决了一个JVM崩溃的问题。

根据你的问题的描述,我猜进程的路径变量是在你的代码中间改变的,用另一个工具进程探索你可以查看进程的路径变量,它可能会有所帮助。

试着在你的主目录下创建一个目录:

final Path tmpdir = Paths.get(System.getProperty("user.home"), "tmp");
Files.createDirectories(tmpdir);
System.setProperty("java.io.tmpdir", tmpdir.toAbsolutePath().toString());

然后尝试在那里添加Files.createTempFile()

注意,如果Files.createDirectories()引用的是一个现有的文件,而不是一个目录,那么您将得到一个FileAlreadyExistsException

相关内容

  • 没有找到相关文章

最新更新