Java S4启动PE时数组索引超出范围
我现在正试图在我的应用程序中添加一个简单的PE。此PE扩展AbstractPE并重写输出方法。不执行任何操作 我还修改了xml文件,添加了一个bean,如下所示:Java S4启动PE时数组索引超出范围,java,spring,javabeans,Java,Spring,Javabeans,我现在正试图在我的应用程序中添加一个简单的PE。此PE扩展AbstractPE并重写输出方法。不执行任何操作 我还修改了xml文件,添加了一个bean,如下所示: <bean id="rogerpe" class="cnu.roger.FPActor.RogerPE">
<bean id="rogerpe" class="cnu.roger.FPActor.RogerPE">
<property name="keys">
<list>
<value>RawTransaction *</value>
</list>
</property>
</bean>
我现在很困惑。我不知道它的意思是哪个数组。
感谢您的帮助
在OverloadDispatcherGenerator.java中
InstructionHandle returnInstruction = il.append(InstructionFactory.createReturn(Type.VOID));
for (int i = 0; i < targetInstructions.size(); i++) {
branchInstructions.get(i).setTarget(targetInstructions.get(i));
}
branchInstructions.get(branchInstructions.size() - 1)
.setTarget(returnInstruction);
for (BranchInstruction gotoInstruction : gotoInstructions) {
gotoInstruction.setTarget(returnInstruction);
}
209行是:branchInstructions.get…首先,您需要首先调用超级构造函数 否则,您将使用尚未完全初始化的对象。这可能会解决您的问题 其次,如果您真正想要的只是一个空字符串数组,为什么要创建一个空列表并转换它呢
String[] sa = new String[0];
我认为错误代码是:
branchInstructions.get(branchInstructions.size() - 1)
.setTarget(returnInstruction);
如果branchInstructions.size==0,则branchInstructions.size-1得到-1,但-1是无效索引。向我们展示RogerPE的代码,答案肯定如下:-此异常仍然发生,即使没有构造函数。向我们展示AbstractPE的代码,我会解决问题。异常发生在io.s4.processor.OverloadDispatcherGenerator.generateOverloadDispatcherGenerator.java:209,在那一点上向我展示代码。我在那里附加了代码:-但是在我移除所有构造函数之后。这个例外仍然存在。我认为这不是关键。堆栈显示调用super方法时发生异常。这就是为什么我把它放在后面。我删除了整个构造函数,但这个异常仍然发生-但我不知道这个if语句会导致什么。我希望它能很好地工作-别担心,if语句没有副作用。
String[] sa = new String[0];
branchInstructions.get(branchInstructions.size() - 1)
.setTarget(returnInstruction);