Ваш байт-код неверен. Давайте пройдем через это:
new #1 <xyzTestes/system/fraction/Fraction>
Стек : Fraction
экземпляр (не инициализирован, только указатель на память)
aload_0
Стек : Fraction
(еще не инициализирован), this
getfield #16 <xyzTestes/system/fraction/Fraction.den>
Стек : Fraction
(еще не инициализирован), this.den
aload_0
getfield #14 <xyzTestes/system/fraction/Fraction.num>
Стек : Fraction
(еще не инициализирован), this.den
, this.num
invokespecial #27 <xyzTestes/system/fraction/Fraction.<init>>
Stack
Это очень важно. Все invoke
методы требуют, чтобы в стеке содержалось this
+ все аргументы. И this
, и аргументы берутся из стека. После вызова в стек помещается только возвращаемое значение (если оно есть). <init>
имеет тип возврата void
.
Это означает, что вы позвоните:
areturn
В пустой пачке выдувается JVM.