Question

I want to render a simple page in Play framework the page is at localhost:9000/upload

but when I try to load this page I am getting this weird stack trace. The error is not compilation nor run time. here is some lines of stack trace. --- (Running the application from SBT, auto-reloading is enabled) ---

  [info] play - Listening for HTTP on /0.0.0.0:9000

  (Server started, use Ctrl+D to stop and go back to the console...)

  [info] play - database [default] connected at jdbc:mysql://192.168.2.250:3306/DP
  AU
  [info] play - Application started (Dev)
  [error] application -

  ! Internal server error, for (GET) [/indicatorupload] ->

  java.lang.VerifyError: Stack map does not match the one at exception handler 563

  Exception Details:
  Location:
  controllers/IndicatorUploadController.updateIndicatorTable(Lcontrollers/Indi
  catorUploadController$ExcelInd;I)V @563: astore_3
  Reason:
  Type 'controllers/IndicatorUploadController$ExcelInd' (current frame, locals
  [5]) is not assignable to 'models/Indicators' (stack map, locals[5])
  Current Frame:
  bci: @463
  flags: { }
  locals: { 'controllers/IndicatorUploadController$ExcelInd', integer, 'models
  /Indicators', top, top, 'controllers/IndicatorUploadController$ExcelInd', 'java/
  lang/String' }
  stack: { 'java/lang/NumberFormatException' }
  Stackmap Frame:
  bci: @563
  flags: { }
  locals: { 'controllers/IndicatorUploadController$ExcelInd', integer, 'models
  /Indicators', top, top, 'models/Indicators', 'java/lang/Object' }
   stack: { 'java/lang/NumberFormatException' }
  Bytecode:
  0000000: bb00 8e59 b700 8f4d b800 9057 2c1b 85b8
  0000010: 0091 3a06 3a05 1905 1906 b602 d92c 2a3a
  0000020: 0501 3a06 1905 b602 b23a 0619 063a 063a
  0000030: 0519 0519 06b6 02dc 2c2a 3a05 013a 0619
  0000040: 05b6 02b8 3a06 1906 3a06 3a05 1905 1906
  0000050: b602 df2c 2a3a 0501 3a06 1905 b602 be3a
  0000060: 0619 063a 063a 0519 0519 06b6 02e2 2c2a
  0000070: 3a05 013a 0619 05b6 02c7 3a06 1906 3a06
  0000080: 3a05 1905 1906 b602 e52c 2a3a 0501 3a06
  0000090: 1905 b602 e83a 0619 063a 063a 0519 0519
  00000a0: 06b6 02eb 2c2a 3a05 013a 0619 05b6 02ee
  00000b0: 3a06 1906 3a06 3a05 1905 1906 b602 f12c
  00000c0: 2a3a 0501 3a06 1905 b602 c13a 0619 063a
  00000d0: 063a 0519 0519 06b6 02f4 2c2a 3a05 013a
  00000e0: 0619 05b6 02c4 3a06 1906 3a06 3a05 1905
  00000f0: 1906 b602 f72c 2a3a 0501 3a06 1905 b602

I have tried setting _JAVA_OPTION = -XX:-UseSplitVerifier in my project directory and then tried running. The cmd line should show "Picked up _JAVA_OPTIONS: -XX:-UseSplitVerifier" but I am not getting that as well. (I am confused is it JAVA_OPTION OR _JAVA_OPTION). I have even set the same JAVA_OPTION in environment variables

Was it helpful?

Solution 2

From the Javadoc for VerifyError:

Thrown when the "verifier" detects that a class file, though well formed, contains some sort of internal inconsistency or security problem.

This error can be caused by compiling against one version of a class or library and then running against a different version of the class/library. This answer gives quite a good explanation.

Exception Details:

Location: controllers/IndicatorUploadController.updateIndicatorTable(Lcontrollers/IndicatorUploadController$ExcelInd;I)V @563: astore_3
Reason:
Type 'controllers/IndicatorUploadController$ExcelInd' (current frame, locals
[5]) is not assignable to 'models/Indicators' (stack map, locals[5])

It looks like your controller has an inner class called ExcelInd, which is a subclass of your Indicators model class. It also looks like there is a line in your updateIndicatorTable method that attempts to assign a value of actual type ExcelInd to a reference of type Indicators. This sounds valid, but in the code that is actually running there doesn't seem to be an inheritance relationship between the two classes.

If you've recently introduced this inheritance relationship, I would try running the clean task in your Play console and seeing whether a clean sorts out your issue.

OTHER TIPS

The error was caused by a bug on javaassist. With a new release 3.18.2 is solved. Add it to project/plugins.sbt as follows

libraryDependencies += "org.javassist" % "javassist" % "3.18.2-GA"

More about that issue here

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top