triplea-game / triplea

TripleA is a turn based strategy game and board game engine, similar to Axis & Allies or Risk.
https://triplea-game.org/
GNU General Public License v3.0
1.3k stars 387 forks source link

2.5.22294: ConcurrentBattleCalculator#calculate:246 - java.lang.ClassCastException #12691

Closed tripleabuilderbot closed 2 weeks ago

tripleabuilderbot commented 2 weeks ago

Map

world_war_ii_v4

TripleA Version

2.5.22294

Java Version

11.0.6

Operating System

Windows 10

Memory

Heap utilization statistics [MB] Used Memory: 846 Free memory: 1133 Total memory: 1979 Max memory: 1979

Stack Trace

Exception: java.lang.ClassCastException
java.lang.Exception
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:603)
    at java.base/java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:678)
    at java.base/java.util.concurrent.ForkJoinTask.invoke(ForkJoinTask.java:737)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateParallel(ReduceOps.java:919)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:233)
    at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
    at games.strategy.triplea.odds.calculator.ConcurrentBattleCalculator.calculate(ConcurrentBattleCalculator.java:246)
    at games.strategy.triplea.ai.pro.util.ProOddsCalculator.callBattleCalc(ProOddsCalculator.java:224)
    at games.strategy.triplea.ai.pro.util.ProOddsCalculator.callBattleCalc(ProOddsCalculator.java:200)
    at games.strategy.triplea.ai.pro.util.ProOddsCalculator.calculateBattleResults(ProOddsCalculator.java:133)
    at games.strategy.triplea.ai.pro.util.ProOddsCalculator.calculateBattleResults(ProOddsCalculator.java:116)
    at games.strategy.triplea.ai.pro.ProNonCombatMoveAi.moveUnitsToBestTerritories(ProNonCombatMoveAi.java:2267)
    at games.strategy.triplea.ai.pro.ProNonCombatMoveAi.doNonCombatMove(ProNonCombatMoveAi.java:152)
    at games.strategy.triplea.ai.pro.ProNonCombatMoveAi.simulateNonCombatMove(ProNonCombatMoveAi.java:69)
    at games.strategy.triplea.ai.pro.AbstractProAi.purchase(AbstractProAi.java:230)
    at games.strategy.triplea.ai.AbstractAi.start(AbstractAi.java:507)
    at games.strategy.engine.framework.ServerGame.waitForPlayerToFinishStep(ServerGame.java:537)
    at games.strategy.engine.framework.ServerGame.runStep(ServerGame.java:407)
    at games.strategy.engine.framework.ServerGame.startGame(ServerGame.java:297)
    at games.strategy.engine.framework.startup.launcher.LocalLauncher.launchInternal(LocalLauncher.java:82)
    at games.strategy.engine.framework.startup.launcher.LocalLauncher.lambda$launch$0(LocalLauncher.java:56)
    at java.base/java.lang.Thread.run(Thread.java:834)

Exception: java.lang.ClassCastExceptionclass org.triplea.java.collections.IntegerMap cannot be cast to class java.lang.Integer (org.triplea.java.collections.IntegerMap is in unnamed module of loader 'app'; java.lang.Integer is in module java.base of loader 'bootstrap')
java.lang.Exception
    at java.base/java.util.stream.Sink$OfInt.accept(Sink.java:189)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
    at java.base/java.util.stream.IntPipeline.reduce(IntPipeline.java:491)
    at java.base/java.util.stream.IntPipeline.sum(IntPipeline.java:449)
    at games.strategy.triplea.attachments.TechAbilityAttachment.sumIntegerMap(TechAbilityAttachment.java:133)
    at games.strategy.triplea.attachments.TechAbilityAttachment.getAttackRollsBonus(TechAbilityAttachment.java:738)
    at games.strategy.triplea.attachments.UnitAttachment.getAttackRolls(UnitAttachment.java:1560)
    at games.strategy.triplea.delegate.power.calculator.MainOffenseCombatValue$MainOffenseRoll.getRoll(MainOffenseCombatValue.java:85)
    at games.strategy.triplea.delegate.power.calculator.TotalPowerAndTotalRolls.getUnitTotalPowerAndTotalRollsMap(TotalPowerAndTotalRolls.java:297)
    at games.strategy.triplea.delegate.power.calculator.TotalPowerAndTotalRolls.getUnitPowerAndRollsForNormalBattles(TotalPowerAndTotalRolls.java:351)
    at games.strategy.triplea.delegate.power.calculator.TotalPowerAndTotalRolls.getUnitPowerAndRollsForNormalBattles(TotalPowerAndTotalRolls.java:331)
    at games.strategy.triplea.delegate.DiceRoll.rollDiceNormal(DiceRoll.java:450)
    at games.strategy.triplea.delegate.DiceRoll.rollDice(DiceRoll.java:220)
    at games.strategy.triplea.delegate.battle.Fire.rollDice(Fire.java:160)
    at games.strategy.triplea.delegate.battle.Fire$1.execute(Fire.java:114)
    at games.strategy.triplea.delegate.ExecutionStack.execute(ExecutionStack.java:34)
    at games.strategy.triplea.delegate.battle.MustFightBattle.fight(MustFightBattle.java:841)
    at games.strategy.triplea.odds.calculator.BattleCalculator.calculate(BattleCalculator.java:128)
    at games.strategy.triplea.odds.calculator.ConcurrentBattleCalculator.lambda$calculate$4(ConcurrentBattleCalculator.java:234)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195)
    at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
    at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:952)
    at java.base/java.util.stream.ReduceOps$ReduceTask.doLeaf(ReduceOps.java:926)
    at java.base/java.util.stream.AbstractTask.compute(AbstractTask.java:327)
    at java.base/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
    at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)