我有一个C#程序,可以更新然后启动Java应用程序。在实际启动Java之前,它会检查程序使用的.jar文件的更新。多个人可能一次在给定的计算机上运行应用程序(它可能是终端服务器),或者同一个用户正在运行该程序的多个实例。如果其他人正在运行该应用程序,则.jar文件将被使用且无法更新。我正在努力解决这个问题。
我的偏好是重命名.jar文件并更新它。当前运行该应用程序的所有人仍然可以使用重命名的jar文件。 Windows也不会让你重命名正在使用的文件(虽然我认为Unix系统会这样)。
我注意到,使用Windows资源管理器,您可以复制/粘贴jar文件并覆盖正在使用的.jar文件。这是如何工作的,我可以在更新程序/启动程序中以某种方式执行类似的操作吗?
我可以使用其他任何方法吗?
答案 0 :(得分:1)
我想说没有(简单的)方法来实现这一目标。我能想到的一些想法可能是;
答案 1 :(得分:0)
更新jar文件并将其放在新位置。然后更改类路径以从新位置而不是旧位置获取更新的jar。如果在两个地方都找到了文件,那么您可以根据您的要求决定偏好。另一个要点是,如果多次引用相同的jar,那么将首先加载在类路径中按顺序排在第一个jar的那个jar。
答案 2 :(得分:0)
创建两个文件夹:旧的和新的
它们都包含相同的文件。没有更新时,每个人都将使用新文件夹中的文件。当有更新时,将jar文件从新文件夹复制到旧文件夹,每个新连接将使用旧文件夹中的jar文件,直到与新文件夹中的jar文件的每个连接都消失。最后,当每个人都使用旧文件夹中的jar文件时,将更新复制到新文件夹中(当然,所有这些都应该是自动的),最后,在更新完成后,每个新连接都将使用新文件中的jar文件夹。我希望这会有所帮助。