Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在运行时未反映的两个java项目之间更改公共变量值_Java_Eclipse - Fatal编程技术网

在运行时未反映的两个java项目之间更改公共变量值

在运行时未反映的两个java项目之间更改公共变量值,java,eclipse,Java,Eclipse,我在eclipse工作区中有3个相关的java项目。我在第三个项目中有一个类,比如说ClassCommon,它可以从项目1和项目2中访问,因为我在其中导入了必要的包。我在本地机器的同一个jvm上运行项目1和项目2 我的问题是这个。我在第三个项目的“ClassCommon”类中编写了项目1和项目2之间的一些常用变量和方法。公共变量被声明为公共静态变量。但是,当我在运行时访问公共变量并在project1进程中设置一个值时,project2进程仍然只有第一个初始化值。我在一个项目的过程中对公共变量所做

我在eclipse工作区中有3个相关的java项目。我在第三个项目中有一个类,比如说ClassCommon,它可以从项目1和项目2中访问,因为我在其中导入了必要的包。我在本地机器的同一个jvm上运行项目1和项目2


我的问题是这个。我在第三个项目的“ClassCommon”类中编写了项目1和项目2之间的一些常用变量和方法。公共变量被声明为公共静态变量。但是,当我在运行时访问公共变量并在project1进程中设置一个值时,project2进程仍然只有第一个初始化值。我在一个项目的过程中对公共变量所做的更改不会反映在其他项目的过程中。我仅以ClassCommon.variable\u名称访问两个项目中的变量。这两个项目如何具有公共静态变量的不同副本?当我通过单步调试时,project1和project2进程都使用相同的类方法,但是变量有自己的值,尽管它们是公共静态的。有人能澄清这个问题吗?

在公共类中为所有变量生成getter和setter,然后通过这些方法获取和设置它们


希望它能有所帮助

您要解决的问题是,您正在实现一个客户机和一个服务器。最常见的情况是,客户机和服务器运行在不同的物理机器上,因此运行在不同的Java虚拟机上


因此,尽管它们访问相同的类及其静态字段,但它们都有自己的运行时实例,因为它们在不同的VM中运行。如果试图修改客户机和服务器项目中的相同值,则必须通过典型的客户机/服务器通信将这些更改分别传播到其他客户机/服务器。否则,客户端和服务器都会为静态字段保留它们自己的值,这些值可能会随着时间的推移而不同。

服务器和客户端是否在同一个JVM上运行?如果不是在同一个JVM上运行,它们是否在同一个类加载器上运行?是的,两个项目都在同一台机器上运行,并且在同一个JVM类加载器上运行如果客户端,服务器名称混淆假设两个任意项目访问第三个项目的公共静态变量,并且两个项目都在同一台机器上运行。请澄清:您正在使用对
java
(或等效)的单个命令行调用启动客户端和服务器,以启动同时充当客户端和服务器的程序。(另外:你应该编辑你的问题以包含此类信息;潜在的回答者不必阅读评论;你的最后两条评论包含足够重要的信息,可以包含在问题本身中)我确信这不会有帮助。毕竟,它只是从不同的方法设置字段的值。如果不建立客户机-服务器通信,则另一端的更改将不可见。使用getter和setter并不能改变这一点。我已经尝试过了。但是值还是不同的。当我步进到公共getter setter方法中进行调试时,客户机和服务器进程都执行公共文件和公共方法,但是公共静态变量中的值在客户机和服务器中是不同的,客户端处理GUI,服务器是连接到实际数据库服务器的本地应用程序服务器。在部署时,我的客户端和服务器都将在同一台机器上运行。如果这让您感到困惑,那么假设这些项目没有客户机和服务器这样的关系。