Java RMI服务器更新作为参数传递的集合,但在客户端中看不到更新
我的程序不工作,也就是说,它无法列出找到的文件。你可能会发现一个错误,否则,我不知道。程序不显示任何错误。如果要再现这种情况,请在管理员权限客户端和服务器下打开两个命令行,并生成javac ClientInterface.java javac client.java,然后在服务器中生成javac ServerImpl.java javac server.java start rmiregistry,然后通过java服务器运行服务器,通过java客户端运行客户端。非常感谢你试图帮助我 ClientInterface.javaJava RMI服务器更新作为参数传递的集合,但在客户端中看不到更新,java,rmi,Java,Rmi,我的程序不工作,也就是说,它无法列出找到的文件。你可能会发现一个错误,否则,我不知道。程序不显示任何错误。如果要再现这种情况,请在管理员权限客户端和服务器下打开两个命令行,并生成javac ClientInterface.java javac client.java,然后在服务器中生成javac ServerImpl.java javac server.java start rmiregistry,然后通过java服务器运行服务器,通过java客户端运行客户端。非常感谢你试图帮助我 Client
public interface ClientInterface extends Remote
{
public List<String> search(final String pattern, final File folder, List<String> result) throws RemoteException;
}
我重新制作了功能搜索:
public List<String> search(final String pattern, final File folder, List<String> result) {
for (final File f : folder.listFiles()) {
if (f.isDirectory()) {
search(pattern, f, result);
}
if (f.isFile()) {
if (f.getName().matches(pattern)) {
result.add(f.getAbsolutePath());
}
}
}
return result;
}
公共列表搜索(最终字符串模式、最终文件夹、列表结果){
对于(最终文件f:folder.listFiles()){
if(f.isDirectory()){
搜索(模式、f、结果);
}
if(f.isFile()){
如果(f.getName().matches(模式)){
添加(f.getAbsolutePath());
}
}
}
返回结果;
}
在Client.java中,执行以下操作:
List<String> res=remobj.search(".*\\.*", folder, result);
for (String s : res) {
System.out.println("File:"+s);
}
System.out.println("Count of Files: "+ res.size());
}
List res=remobj.search(“.\\.*”,文件夹,结果);
for(字符串s:res){
System.out.println(“文件:+s”);
}
System.out.println(“文件计数:+res.size());
}
这是否回答了您的问题?tl;dr:您不能在服务器中修改参数,而希望在客户端中看到更改。返回列表。@您可以更改函数搜索,使其在具有所有不同的数据类型时返回,还是不可能?您可以返回字符串列表。我不知道你的意思是“所有不同的数据类型”。@在我的函数中,不同的数据类型是字符串,文件,列表,我不能用返回来写这个函数。你可以写这个函数吗?
public class Server
{
public static void main(String args[])
{
try{
ServerImpl locobj=new ServerImpl();
Naming.rebind("rmi:///ClientInterface",locobj);
}
catch(RemoteException re){
re.printStackTrace();
}
catch(MalformedURLException mfe){
mfe.printStackTrace();
}
}
}
public List<String> search(final String pattern, final File folder, List<String> result) {
for (final File f : folder.listFiles()) {
if (f.isDirectory()) {
search(pattern, f, result);
}
if (f.isFile()) {
if (f.getName().matches(pattern)) {
result.add(f.getAbsolutePath());
}
}
}
return result;
}
List<String> res=remobj.search(".*\\.*", folder, result);
for (String s : res) {
System.out.println("File:"+s);
}
System.out.println("Count of Files: "+ res.size());
}