Je sais que c'est un problème courant et j'ai déjà lu certains messages, mais je n'ai pas encore trouvé la cause de l'erreur.Erreur de réception (IndexOutOfBoundsException) lorsque son nombre plus élevé d'objets dans la liste de tableaux
J'ai des périphériques qui obtiennent des paramètres à partir d'un fichier json et le code génère des topologies pour ces périphériques. J'ai une liste de piconets (petits groupes maître-esclave) et le problème est que le code fonctionne assez bien jusqu'à 45 nombre d'appareils. Quand j'augmente le nombre de périphériques, j'obtiens l'erreur ci-dessous;
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at KTHBleMesh.BleMeshDevice.construct(BleMeshDevice.java:508)
at KTHBleMesh.BleMeshDevice$2.run(BleMeshDevice.java:468)
at KTHBleMesh.Event.run(l2.java:21)
at KTHBleMesh.Simulator.doAllEvents(l2.java:50)
at KTHBleMesh.IteratorEngine.main(IteratorEngine.java:85)
et où l'affichage est;
List<BleMeshDevice> neighboringDevices =this.getTxManager().getNeighbouringDevices(this);
for (BleMeshDevice neighDevice : neighboringDevices) {
if (neighDevice.devMiddleware.getTopologyCtrlBlock().getDevPiconet().get(0).getDevRole()==1)
` getDevPiconet(). Get (0) est de donner l'erreur et voici le code de classe,
public BleMeshTopologyCtrlBlock() {
devPiconet = new ArrayList<BleMeshDevicePiconet>(2);
private void AddMastertoSlave(BleMeshDevice linkMaster,
BleMeshDevice linkSlave, int devRole) {
devPiconet.add(new BleMeshDevicePiconet(devRole, linkSlave));
devPiconet.get(devPiconet.size() -1).getDevSlaves().add(linkMaster);
for (BleMeshDevGatewayTable aRow : getDevPiconet().get(0)
.getGatewaytable()) {
if (aRow.getPicRemoteMaster().equals(aNeighPiconetMaster)
&& aRow.getPicLocalGatewayDev().getDevMiddleware()
.getTopologyCtrlBlock().getCapacity() > 0
&& aRow.getPicRemoteGatewayDev().getDevMiddleware()
.getTopologyCtrlBlock().getCapacity() > 0
On dirait qu'il échoue parce que le DevPiconet est vide, mais cela fonctionne pour d'autres nombre d'appareils ... Je ne comprends pas pourquoi cela ne fonctionne pas lorsque son nombre accru d'appareils.
S'il vous plaît laissez-moi savoir si vous avez une idée ou une suggestion,
Merci à l'avance,
BR
donc vous obtenez l'erreur si vous avez 46 ou plusieurs dispositifs? n'y at-il pas une erreur dans votre code au constructeur de 'BleMeshTopologyCtrlBlock'? Je ne peux pas voir le '{' être fermé avant la prochaine méthode – XtremeBaumer
Oui, je reçois une erreur après 45 appareils. Constructeur afer le dernier constructeur –
pouvez-vous poster le code complet de votre projet? – XtremeBaumer