从网络文件运行程序在本地运行程序?

时间:2013-12-06 13:37:29

标签: java networking batch-file exe

这很简单......我有一个jar文件,以及两个部门共享的exe文件。我把它们都放在网络驱动器上,然后让每个人将它们的PATH变量指向该驱动器,这样当它们执行任务时,它可以找到jar和exe文件。

我在每台机器上都有以下设置

C :(当地) D :(磁盘驱动器) U :(网络驱动器)

和A.exe,B.exe和C.jar都在网络驱动器上。

如果该部门的人员发起了这样的工作:

U:
cd automation
java -jar C.jar

可执行文件A& B使用了B,这些事件实际发生了哪些?

  1. Java从服务器下载jar并执行它,当jar想要使用exe文件时,它会将它们下载到本地计算机(可能是内存)并执行它们

  2. Java创建到网络驱动器的套接字连接,然后通过网络驱动jar,当jar想要使用exe文件时,操作系统创建套接字连接并通过网络驱动exe。

  3. 完全不同的东西?

4 个答案:

答案 0 :(得分:2)

Java将尝试从C.jar目录中打开文件U:\automation\。它不关心这是网络共享还是本地文件 - 当Java请求它读取该文件时,这种区别是由操作系统(即Windows)进行的。这同样适用于启动可执行文件。

这意味着您的事件(1)是最准确的描述,但“下载”并不一定意味着将整个文件复制到某个下载目录。

答案 1 :(得分:1)

jvm不知道它没有存储在本地,它尝试运行该文件就像它本地存储一样。

这会导致您机器上的软件(可能是samba)将这些读取调用转换为网络通信,根据jvms的意愿检索可执行文件,将其存储在本地内存中,然后让jvm知道读取已经完成。

答案 2 :(得分:1)

在现代操作系统中,文件系统实现使用抽象结构。因此,用户空间(通常)不能确定附加文件系统是“在框中”,还是存在于行星另一侧的某个网络访问资源上。 简而言之,操作系统负责“像往常一样”启动java和exe程序(并在本地运行)。

答案 3 :(得分:0)

该文件通过网络共享加载,与本地硬盘驱动器上的文件完全相同(尽管通常情况下执行速度稍慢)。然后他们在您的本地计算机上运行。