java.lang.ClassCastException - Como depurar
2 respostas
Josué
2 anos atrás #282633
Estou trabalhando em alguns códigos de indicadores personalizados que quero incluir na geração de minha estratégia. Infelizmente, quando tento executar o construtor (v135.868), ele acaba parando devido a uma ClassCastException. Tenho certeza de que provavelmente cometi um erro bobo em algum lugar do meu código personalizado. No entanto, com o stacktrace que obtenho dos logs do SQ, não consigo ver de onde vem o problema. Existe alguma maneira de obter melhor visibilidade do bloco que está realmente causando esse problema? O exemplo de stacktrace está abaixo para referência. Obrigado!
22:17:23.578 [Nonblocking computeThread - 2 - Builder_2] ERROR GPGenerationalEngine - Error
java.lang.ClassCastException: a classe java.lang.Integer não pode ser convertida para a classe java.lang.Double (java.lang.Integer e java.lang.Double estão no módulo java.base do carregador 'bootstrap')
em SQ.Negater.ConditionsNegater.negate(ConditionsNegater.java:56) ~[na:na]
at com.strategyquant.tradinglib.NegatersList.negate(Unknown Source) ~[SQTradingLib.jar:na]
at SQ.Negater.AndOrNegater.negate(AndOrNegater.java:40) ~[na:na]
at com.strategyquant.tradinglib.NegatersList.negate(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.blocks.random.ReplacementsConfig.negateBlock(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.generator.StrategyGenerator.findAndReplaceNegatedBlocks(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.generator.StrategyGenerator.findAndReplaceNegatedBlocks(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.generator.StrategyGenerator.findAndReplaceNegatedBlocks(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.generator.StrategyGenerator.findAndReplaceNegatedBlocks(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.generator.StrategyGenerator.findAndReplaceNegatedBlocks(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.generator.StrategyGenerator.findAndReplaceNegatedBlocks(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.generator.StrategyGenerator.findAndReplaceNegatedBlocks(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.generator.StrategyGenerator.findAndReplaceNegatedBlocks(Unknown Source) ~[SQTradingLib.jar:na]
em com.strategyquant.tradinglib.generator.StrategyGenerator.generate(Unknown Source) ~[SQTradingLib.jar:na].
at com.strategyquant.tradinglib.gp.strategies.NodeFactory.generateStrategy(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.gp.strategies.NodeFactory.generateRandomCandidate(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.gp.strategies.NodeFactory.generateRandomCandidate(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.gp.GPGenerationalEngine.generateInitialPopulation(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.gp.GPGenerationalEngine.gpEvolution(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.gp.GPGenerationalEngine.evolve(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.gp.GPIslandJob.call(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.tradinglib.gp.GPIslandJob.call(Unknown Source) ~[SQTradingLib.jar:na]
at com.strategyquant.gridlib.compute.performer.MultithreadComputePerformer$1.run(Unknown Source) ~[SQGridLib2.jar:na]
em java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630) ~[na:na]
em java.base/java.lang.Thread.run(Thread.java:832) ~[na:na]
Josué
2 anos atrás #282692
Consegui descobrir qual bloco de sinal estava causando o problema desativando todos eles e, em seguida, ativando-os um de cada vez, até encontrar o que estava causando o erro.

tomas262
2 anos atrás #282711
Ok, obrigado por nos informar
Visualizando 2 respostas - 1 até 2 (de um total de 2)