title: ArrayOutOfBoundsException on Bean creation while using Java 8 constructs
body: <p>I am getting an <code>ArrayIndexOutOfBoundsException</code> on service start up (Bean creation) when i use Java 8 features.</p>
  
  <p>Java 8 has been set up and has been working. The code compiles correctly. On service start, the service fails to listen to port as the beans don't get created. When i change the code (remove java 8 constructs) the service starts and everything works fine.</p>
  
  <p>This is the code i am using (the working code for which the service starts):</p>
  
  <pre><code>for (Item itemObject : response) {
      if (itemObject.hasId()) {
          idList.add(String.valueOf(itemObject.Id());
      }
  }
  </code></pre>
  
  <p>Same code using Java 8 constructs:</p>
  
  <pre><code>response.parallelStream()
          .filter(itemObject -&gt; itemObject.hasId())
          .map(itemObject -&gt; itemObject.getId())
          .forEach(id -&gt; idList.add(id));
  </code></pre>
  
  <p>The bean for the class containing this piece of code is created using component scan.</p>
  
  <p>The following is the exception message when the second code block is used in place of the first one:</p>
  
  <pre><code>Exiting with throwable: java.lang.IllegalArgumentException: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [jar:file:/workspace/.../GetContainerIdForFcSkuAdapter.class]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 51880
   java.lang.IllegalArgumentException: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: URL [jar:file:/workspace....Some.class]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 51880
  </code></pre>
  
  <p>What does not make sense to me is, why is the code inside a function (which is not the constructor of the bean class) being covered while creating the bean. I ask this, because the exception is not there when i use the normal for loop instead of the parallel stream. Shouldn't an <code>ArrayOutOfBoundsException</code> arise when the function is called and this code is actually used.</p>
  
  <p>How do i fix this? </p>