文件存在时抛出FileNotFoundException
我正面临这个奇怪的问题。
我正在尝试将位于另一台计算机上的文件作为共享资源读取:
\\remote-machine\dir\MyFileHere.txt
当我运行一个独立的应用程序(16行java文件)时,一切都很好。 但是当我尝试使用相同的类和相同的方法从服务器“引擎”(这是一个应用程序引擎,就像你可以运行java程序的Java EE应用程序服务器)中读取相同的文件时,“FileNotFoundException”被抛出。
我虽然我会获得某种权限,所以我将资源映射为驱动器:K:\
重新运行我的java文件,读取,罚款。
在“引擎” – > FileNotFoundException中重新运行我的java文件。
当我将文件复制到本地计算机(C:\ MyFileHere.txt)时,不会抛出任何exception。
题
可能导致此FileNotFoundExcecption的原因是什么?
我正在使用Java 1.5
据我所知,引擎几乎透明地使用java。
有人遇到过类似的事吗?
补充问题? 这对解决方法有什么好处? 我开始考虑提供服务这些文件的tomcat安装并通过http读取它们,但我认为这太多了,这就是为什么SMB协议首先出现的原因不是吗? 也许我无论如何都无法打开sockets。
安全管理器可能是原因(我之前从未使用过,但我知道它存在)
如果出现这种情况,是否会抛出SecurityException?
非常感谢。
编辑
解决了。 谢谢史蒂夫W.
事实certificate,该引擎是与ZeroG的“LaunchAnywhere”一起发布的。 因此,创建一个.exe,然后将使用指定的应用程序运行JVM。
这个应用程序本身就是Launcher。 当它启动引擎时,以某种方式(我无法弄清楚为什么或如何)拥有JVM进程的用户是SYSTEM。 史蒂夫指出,该用户没有NETWORK访问权限,因此无法从共享资源或映射驱动器中读取。
解决方法(当我向制造商报告时)是创建一个.cmd文件来手动启动引擎。 由于它将手动启动,因此用户可以访问网络。
我使用了SysInternals的“Process Explorer”来确切地知道用于运行引擎应用程序的命令行。
真是一团糟!
感谢那些发布答案的人。
共享资源是否受用户名和密码保护? 如果是这样,您的应用程序引擎是否以该用户身份运行? 如果您的应用程序引擎作为Windows服务运行,则Windows服务无法作为“本地系统帐户”运行。 此帐户无法访问网络。 您必须将服务配置为以具有访问共享驱动器权限的用户身份运行。
仔细检查文件是否真的被称为“MyFileHere.txt”而不是“MyFileHere.txt.txt”如果你隐藏文件的扩展名,这是一个很容易错过的错误
您是否检查过服务器上的事件日志以查看它是否被拒绝? 可能是程序在不同的用户帐户下运行,而不是您的想法。
我不熟悉Java,但我知道我编写的一些程序我必须允许网络服务访问资源。
实际上,我看到你现在已经选择了正确的答案。 哦,这和我的答案一样:)很酷!
我有一次类似的问题。 我认为这与java解析远程文件URI的方式有关。 尝试以下操作,看看它是否有效:
文件:////remote-machine/dir/MyFileHere.txt
我使用下面的示例来validation我的框中共享文件夹中是否存在文件并且工作正常:
public static void main(String[] args) throws URISyntaxException{ URI uri = new URI(args[0]); //args[0] = File:////remote-machine/dir/MyFileHere.txt File f = new File(uri); System.out.print(String.format("File %1$s Exists? %2$s", args[0],f.exists())); }
- FileNotFoundException,该文件存在Java
- 引起:java.io.FileNotFoundException:无法打开ServletContext资源
- java.io.FileNotFoundException,找不到文件
- Java读取txt.file – 访问被拒绝?
- java.io.FileNotFoundException :(没有这样的文件或目录)从eclipse运行时
- 从内部存储获取映像时出现FileNotFoundException
- eclipse中的java.io.FileNotFoundException
- 在java中加载freemarker模板时出现FileNotFoundException
- 使用ExifInterface时的FileNotFoundException