我面对这种奇怪的问题。

我试图阅读一个文件,该文件是位于另一台计算机作为一个共享的资源:

\\remote-machine\dir\MyFileHere.txt

当我运行一个独立的应用程序(16线java文件)的一切都是只是罚款。但是当我试图读取同样的文件与使用同一类和同样的方法从一个服务器"引擎"(这是一个应用程序的发动机,很像一个Java EE应用程序服务器在哪里可运行的java程序)的"FileNotFoundException"被抛出。

我虽然我会被某种权限,因此我的地图资源作为一个驱动器:K:\

再跑我java文件时,读,罚款。

再跑我java文件内的"引擎"->FileNotFoundException.

当我复制文件,进入地方机(C:\MyFileHere.txt )没有异常.

的问题

什么可能导致这FileNotFoundExcecption?

我使用的Java1.5

就我所知的动机很少使用java透明。

任何人都面临着类似的东西吗?

额外的问题吗?是什么将是一个很好的方法解决这个吗?我开始觉得有关tomcat安装服务的那些文件和阅读它们通过http,但我认为这太过分了,这就是为什么SMB协议是对于在第一位不是吗?可能我就不能打开插座。

不安全管理可能是导致(我从来没有使用之前,但是我知道它的存在)

伤口不SecurityException被抛弃,而不是如果这种情况?

非常感谢。

编辑

解决。谢谢你史蒂夫*W.

事实证明,这种发动机是推行了"LaunchAnywhere"从zerog提供.因此,一个.exe创建这反过来将运行JVM的指定应用程序。

这个应用程序自启动。当它开始发动机,以某种方式(我无法弄清楚为什么或如何)用户拥有JVM过程是系统。作为史蒂夫指出,这个用户没有网络访问,因此无法从中读取共享资源或映射驱动器。

的解决方法(同时我这报告给制造商)是创建一个.cmd文件上市手动引擎。由于这将是手动启动了用户访问的网络。

我使用了"过程Explorer"从微软知道到底命令线路用于运行的发动机应用程序。

什么乱七八糟的!

感谢那些发表的答复。

有帮助吗?

解决方案

是共享资源的保护通过一个用户名和密码?如果是,是你的应用程序的引擎运行为,用户?如果应用程序的引擎运行为Windows服务,Windows服务不能运行为的"当地的系统中的账户"。这个帐户不能访问的网络。你必须配置运行服务用户的访问权限的共享驱动器。

其他提示

双重检查,该文件是真的叫做"MyFileHere.txt"而不是"MyFileHere.txt.txt" 如果你是隐藏的扩展的文件,这是一个很容易犯的错误,小姐

你有没有检查的事件记录在服务器上看看它是否被拒绝?这可能是程序运行在不同的用户帐户比你想象的。

我不熟悉Java,但我知道有某些程序,我已经写了我必须允许网络服务访问的资源。

实际上我看见你现在已经勾一个答案,因为正确的。哦,这是同样作为我的答案:)酷!

我有一个类似的问题一次。我想它已经做的方式java解决的远程文件URI。试下看看它的工作:

File:////remote-machine/dir/MyFileHere.txt

我用以下示例中,检验是否存在一个文件共用文件夹,在我的箱和运作:

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()));
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top