Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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 RMI服务器更新作为参数传递的集合,但在客户端中看不到更新_Java_Rmi - Fatal编程技术网

Java RMI服务器更新作为参数传递的集合,但在客户端中看不到更新

Java RMI服务器更新作为参数传递的集合,但在客户端中看不到更新,java,rmi,Java,Rmi,我的程序不工作,也就是说,它无法列出找到的文件。你可能会发现一个错误,否则,我不知道。程序不显示任何错误。如果要再现这种情况,请在管理员权限客户端和服务器下打开两个命令行,并生成javac ClientInterface.java javac client.java,然后在服务器中生成javac ServerImpl.java javac server.java start rmiregistry,然后通过java服务器运行服务器,通过java客户端运行客户端。非常感谢你试图帮助我 Client

我的程序不工作,也就是说,它无法列出找到的文件。你可能会发现一个错误,否则,我不知道。程序不显示任何错误。如果要再现这种情况,请在管理员权限客户端和服务器下打开两个命令行,并生成javac ClientInterface.java javac client.java,然后在服务器中生成javac ServerImpl.java javac server.java start rmiregistry,然后通过java服务器运行服务器,通过java客户端运行客户端。非常感谢你试图帮助我

ClientInterface.java

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());
    }