Java 数组索引超出边界异常-RMI DynamicClient
此代码应该动态地向web服务器的ClientDistance类收费并执行处理,但它会显示一条错误消息: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
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