我正在嘗試將一個簡單的PE添加到我的應用程序中。該PE擴展AbstractPE和覆蓋輸出方法(什麼都不做) 我也修改了XML文件,添加一個bean,像以下:S4啓動PE時數組索引超出界限
<bean id="rogerpe" class="cnu.roger.FPActor.RogerPE">
<property name="keys">
<list>
<value>RawTransaction *</value>
</list>
</property>
</bean>
但是,當我試圖運行平臺。發生一些異常。
Caused by: org.springframework.beans.BeanInstantiationException:
Could not instantiate bean class [cnu.roger.FPActor.RogerPE]:
Constructor threw exception; nested exception is java.lang.ArrayIndexOutOfBoundsException: -1
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877)
... 16 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(ArrayList.java:338)
at java.util.ArrayList.get(ArrayList.java:351)
at io.s4.processor.OverloadDispatcherGenerator.generate(OverloadDispatcherGenerator.java:209)
at io.s4.processor.AbstractPE.<init>(AbstractPE.java:126)
at cnu.roger.FPActor.RogerPE.<init>(RogerPE.java:22)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100)
... 18 more
該PE的代碼:
package cnu.roger.FPActor;
import java.util.Collections;
import java.util.List;
import io.s4.processor.AbstractPE;
class RogerPE extends AbstractPE
{
@Override
public void output()
{
// TODO Auto-generated method stub
}
}
我現在困惑。我不知道它意味着哪個數組。 任何幫助表示讚賞!
在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 ....
向我們展示'RogerPE'的代碼,一個答案肯定會跟着:-) – millhouse 2012-01-18 01:55:48
代碼被添加,thx。 – Qinghao 2012-01-18 02:39:43
即使沒有構造函數,這個異常仍然會發生。 – Qinghao 2012-01-18 02:41:05