当前位置:  开发笔记 > 编程语言 > 正文

文件存在时抛出FileNotFoundException

如何解决《文件存在时抛出FileNotFoundException》经验,为你挑选了1个好方法。

我正面临这个奇怪的问题.

我正在尝试将位于另一台计算机上的文件作为共享资源读取:

\\remote-machine\dir\MyFileHere.txt

当我运行一个独立的应用程序(16行java文件)时,一切都很好.但是,当我尝试使用相同的类和相同的方法从服务器"引擎"(这是一个应用程序引擎,非常类似于Java EE Application Server,您可以运行Java程序)读取相同的文件时,"FileNotFoundException"被扔了.

我虽然我会获得某种权限,所以我将资源映射为驱动器:K:\

重新运行我的java文件,读取,很好.

在"引擎" - > FileNotFoundException中重新运行我的java文件.

当我将文件复制到本地计算机(C:\ MyFileHere.txt)时,不会抛出异常.

可能导致此FileNotFoundExcecption的原因是什么?

我正在使用Java 1.5

据我所知,引擎几乎透明地使用java.

任何人都面临类似的事情?

附加问题?什么是解决此问题的好方法?我开始考虑提供服务这些文件的tomcat安装并通过http读取它们,但我认为这太多了,这就是为什么SMB协议首先用于它的原因不是吗?也许我无论如何都无法打开插座.

安全管理器可能是原因(我之前从未使用过,但我知道它存在)

如果出现这种情况,是否会抛出SecurityException?

非常感谢.

编辑

解决了.谢谢史蒂夫W.

事实证明,该引擎是使用ZeroG的"LaunchAnywhere"启动的.因此,创建一个.exe,然后将使用指定的应用程序运行JVM.

它自己的这个应用程序是Launcher.当它启动引擎时,不知何故(我无法弄清楚为什么或如何)拥有JVM进程的用户是SYSTEM.史蒂夫指出,该用户没有NETWORK访问权限,因此无法从共享资源或映射驱动器中读取.

解决方法(当我向制造商报告时)是创建一个.cmd文件来手动启动引擎.由于它将手动启动,因此用户可以访问网络.

我使用了SysInternals的"Process Explorer"来确切地知道用于运行引擎应用程序的命令行.

真是一团糟!

感谢那些发布答案的人.



1> Steve Wranov..:

共享资源是否受用户名和密码保护?如果是这样,您的应用程序引擎是否以该用户身份运行?如果您的应用程序引擎作为Windows服务运行,则Windows服务无法作为"本地系统帐户"运行.此帐户无法访问网络.您必须将服务配置为以具有访问共享驱动器权限的用户身份运行.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有