Java 数组索引超出边界异常-RMI DynamicClient

Java 数组索引超出边界异常-RMI DynamicClient,java,rmi,Java,Rmi,此代码应该动态地向web服务器的ClientDistance类收费并执行处理,但它会显示一条错误消息: import java.rmi.Naming; import java.rmi.Remote; import java.rmi.RMISecurityManager; import java.rmi.server.RMIClassLoader; import java.util.*; import java.lang.reflect.Constructor; public class Dyn

此代码应该动态地向web服务器的ClientDistance类收费并执行处理,但它会显示一条错误消息:

import java.rmi.Naming;
import java.rmi.Remote;
import java.rmi.RMISecurityManager;
import java.rmi.server.RMIClassLoader;
import java.util.*;
import java.lang.reflect.Constructor;

public class DynamicClient {
    public DynamicClient (String[] args) throws Exception {
        Properties p = System.getProperties(); 
        String url = p.getProperty("java.rmi.server.codebase"); 
        Class ClasseClient = RMIClassLoader.loadClass(url,"ClientDistant");
        Constructor [] C = ClasseClient.getConstructors();
        C[0].newInstance( new Object[] {args} );
    }

    public static void main (String[] args) {
        System.setSecurityManager( new RMISecurityManager() );
        try {
            DynamicClient cli = new DynamicClient(args);
        } catch (Exception e) {
            System.out.println(e.toString());
        }
    }
}
其中RMI是java web应用程序中名为RMI的目录(我使用的是GlassFish服务器)。
是否有加载ClientDistance并执行其处理的解决方案?

您需要调试并查看是否得到任何构造函数。相同的错误没有改变,或者您应该打印实际的stacktrace(例如printStackTrace()),因此您现在知道异常的来源。也许这不是因为C是空的,我找到了解决办法。您应该用argv替换出现的每个args,并使类ClientDistance成为公共的。在stackoverflow中格式化代码时,请不要使用制表符。结果缩进的格式不正确。我已经帮你修好了。
 C:\Users\DELL\Desktop>java -Djava.security.policy=client.policy  -Djava.rmi.serv
 er.useCodebaseOnly=false  -Djava.rmi.server.codebase=http://localhost:8080/RMI/
 DynamicClient

 java.lang.ArrayIndexOutOfBoundsException: 0