title: Akka Actors fails, VerifyError: Inconsistent stackmap frames at branch target
body: <p>I have a Java application where I use Akka <a href="http://akka.io/docs/akka/1.2/java/typed-actors.html" rel="nofollow">Typed Actors</a>. The code has no errors in Eclipse, but when I start my application it crashes and prints this error:</p>
  
  <pre><code>Exception in thread "main" java.lang.VerifyError: Inconsistent stackmap frames at branch target 266 in method com.example.actors.DBActor.getItems(Lorg/joda/time/DateTime;Lorg/joda/time/DateTime;)I at offset 170
      at com.example.ui.Main$1.create(Main.java:31)
      at akka.actor.TypedActor$$anonfun$newInstance$3.apply(TypedActor.scala:677)
      at akka.actor.TypedActor$$anonfun$newInstance$3.apply(TypedActor.scala:677)
      at akka.actor.TypedActor$.newTypedActor(TypedActor.scala:847)
      at akka.actor.TypedActor$$anonfun$newInstance$1.apply(TypedActor.scala:601)
      at akka.actor.TypedActor$$anonfun$newInstance$1.apply(TypedActor.scala:601)
      at akka.actor.LocalActorRef.akka$actor$LocalActorRef$$newActor(ActorRef.scala:1084)
      at akka.actor.LocalActorRef$$anonfun$2.apply(ActorRef.scala:628)
      at akka.actor.LocalActorRef$$anonfun$2.apply(ActorRef.scala:628)
      at akka.util.ReentrantGuard.withGuard(LockUtil.scala:20)
      at akka.actor.LocalActorRef.&lt;init&gt;(ActorRef.scala:628)
      at akka.actor.Actor$.actorOf(Actor.scala:249)
      at akka.actor.TypedActor$.newInstance(TypedActor.scala:677)
      at akka.actor.TypedActor.newInstance(TypedActor.scala)
      at com.example.ui.Main.main(Main.java:29)
  </code></pre>
  
  <p>I don't understand what can be wrong. I have check my <code>com.example.actors.DBActor.getItems()</code> but there is no error in it. What could be wrong?</p>
  
  <hr>
  
  <p><strong>UPDATE</strong></p>
  
  <p>Below is example on code where I get this error.
  I have these jar-files on the "Build path" in Eclipse:</p>
  
  <ul>
  <li><code>derby.jar</code> (from JDK7) (only an in-memory database is used in this example)</li>
  <li><code>akka-actor-1.2.jar</code></li>
  <li><code>akka-typed-actor-1.2.jar</code></li>
  <li><code>aspectwerkz-2.2.3.jar</code></li>
  <li><code>scala-library.jar</code></li>
  </ul>
  
  <p>Here is the code:</p>
  
  <pre><code>import java.sql.Connection;
  import java.sql.DriverManager;
  import java.sql.PreparedStatement;
  import java.sql.ResultSet;
  import java.sql.SQLException;
  
  import akka.actor.TypedActor;
  import akka.actor.TypedActorFactory;
  
  
  public class App {
  
      public App() {
          TypedActor.newInstance(Backend.class, new TypedActorFactory() {
              public TypedActor create() {
                  return new DataActor();
              }
          });
      }
  
      class DataActor extends TypedActor implements Backend {
  
          @Override
          public void insertData(String msg) {
              final String sqlSelect = "SELECT msg FROM SESSION.messages "+
                                       "WHERE to_user_id = ? AND from_user_id = ?";
              final String connectionURL = "jdbc:derby:memory:memdatabase;create=true";
  
              /* if this declaration is moved to where the string is used 
                 in the conditional, the conditional can be used */
              String result;
  
              try(Connection conn = DriverManager.getConnection(connectionURL);) {
  
                  try(PreparedStatement ps = conn.prepareStatement(sqlSelect);
                      ResultSet rs = new QueryHelper(ps)
                                      .integer(13).integer(26).executeQuery();) {
  
                      /* this doesn't work */
  
                      result = (rs.next()) ? rs.getString("text")
                                           : null;
  
                      /* but this work:
  
                       String result = (rs.next()) ? rs.getString("text")
                                                   : null;
                       */
  
                      /* this works fine 
  
                      while(rs.next()) {
                          result = rs.getString("msg");
                      }                                   */
                  }
              } catch (SQLException e) {
                  e.printStackTrace();
              }
          }
      }
  
      class QueryHelper {
          private final PreparedStatement ps;
          private int index = 1;
  
          public QueryHelper(PreparedStatement ps) {
              this.ps = ps;
          }
  
          public QueryHelper integer(int param) throws SQLException {
              ps.setInt(index++, param);
              return this;
          }
  
          public ResultSet executeQuery() throws SQLException {
              return ps.executeQuery();
          }
      }
  
      public interface Backend {
          public void insertData(String text);
      }
  
      public static void main(String[] args) {
          new App();
      }
  }
  </code></pre>