Java 从网络文件运行程序是否在本地运行该程序?

Java 从网络文件运行程序是否在本地运行该程序?,java,networking,batch-file,exe,Java,Networking,Batch File,Exe,这很简单。。。我有一个jar文件和两个exe文件,在整个部门共享。我让他们都位于一个网络驱动器上,然后让每个人将他们的路径变量指向该驱动器,这样当他们执行任务时,它就可以找到jar和exe文件 我在每台机器上都有以下设置 C:(本地) D:(磁盘驱动器) U:(网络驱动器) 和A.exe、B.exe和C.jar都在网络驱动器上 如果部门里的人解雇了一份看起来像这样的工作: U: cd automation java -jar C.jar jar使用可执行文件A和B,这些事件中哪些是实际发生的

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

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

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

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

如果部门里的人解雇了一份看起来像这样的工作:

U:
cd automation
java -jar C.jar
jar使用可执行文件A和B,这些事件中哪些是实际发生的

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

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

  • 完全不同的东西


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

    文件通过网络共享加载,与本地硬盘上的文件完全相同(尽管通常执行速度会稍慢)。然后它们在本地计算机上运行。

    jvm不知道它不是本地存储的,它会尝试运行文件,就像它是本地存储的一样


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

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


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

    Java将尝试从
    U:\automation\
    目录打开文件
    C.jar
    。它不在乎这是网络共享还是本地文件——当Java请求它读取该文件时,操作系统(即Windows)会做出这种区分。这同样适用于启动可执行文件


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

    Java将尝试从
    U:\automation\
    目录打开文件
    C.jar
    。它不在乎这是网络共享还是本地文件——当Java请求它读取该文件时,操作系统(即Windows)会做出这种区分。这同样适用于启动可执行文件


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

    在现代操作系统中,文件系统实现使用的是抽象结构。因此,用户空间(通常)无法确定连接的文件系统是“在盒子里”,还是位于地球另一端的某个网络访问资源上。
    因此,简单的回答是,操作系统负责“照常”启动java和exe程序(并在本地运行)。

    在现代操作系统中,文件系统实现使用抽象结构。因此,用户空间(通常)无法确定连接的文件系统是“在盒子里”,还是位于地球另一端的某个网络访问资源上。
    因此,简单的答案是,操作系统负责“照常”启动java和exe程序(并在本地运行)。

    1)就是答案。虽然“下载”不是我会选择的术语。本地计算机只是“加载”文件,就像它从本地硬盘加载.exe一样,作为windows上网络设计方式的补充,当您映射驱动器时,它会在您的计算机上创建一个结构,以便SO理解为是本地的(用于使用目的)。因此,当你有一个映射的网络驱动器时,它就像是在你的本地机器上一样,所以执行过程按原样进行。我认为不管它是本地驱动器、笔驱动器、cd还是网络驱动器。Java虚拟机将字节码从这个jar加载到内存,并在本地运行。本地/网络硬盘驱动器和本地/网络RAM之间需要分开。在这种情况下,这两个可执行文件与jar文件有什么关系?答案是1)。虽然“下载”不是我会选择的术语。本地计算机只是“加载”文件,就像它从本地硬盘加载.exe一样,作为windows上网络设计方式的补充,当您映射驱动器时,它会在您的计算机上创建一个结构,以便SO理解为是本地的(用于使用目的)。因此,当你有一个映射的网络驱动器时,它就像是在你的本地机器上一样,所以执行过程按原样进行。我认为不管它是本地驱动器、笔驱动器、cd还是网络驱动器。Java虚拟机将字节码从这个jar加载到内存中,并在本地运行。本地/网络硬盘驱动器和本地/网络RAM之间需要分开。在这种情况下,这两个可执行文件与jar文件有什么关系?你是对的。。。复制到本地内存可能是一个更好的描述符你是对的。。。复制到本地内存中可能是更好的描述符