Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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 S4启动PE时数组索引超出范围_Java_Spring_Javabeans - Fatal编程技术网

Java S4启动PE时数组索引超出范围

Java S4启动PE时数组索引超出范围,java,spring,javabeans,Java,Spring,Javabeans,我现在正试图在我的应用程序中添加一个简单的PE。此PE扩展AbstractPE并重写输出方法。不执行任何操作 我还修改了xml文件,添加了一个bean,如下所示: <bean id="rogerpe" class="cnu.roger.FPActor.RogerPE">

我现在正试图在我的应用程序中添加一个简单的PE。此PE扩展AbstractPE并重写输出方法。不执行任何操作 我还修改了xml文件,添加了一个bean,如下所示:

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