Le code suivant lorsqu'il est exécuté sur certaines machines dans notre société provoque une IllegalArgumentException
d'être jeté:Java création couleur lance IllegalArgumentException lorsqu'il est utilisé avec des arguments entiers
Color sludge = new Color(133, 133, 78);
//throws IAE with message "Color parameter outside of expected range: Red Green Blue"
Un appel équivalent à l'aide float
arguments au lieu fonctionne:
Color sludge = new Color(0.522, 0.522, 0.306); // 133/255 = 0.522, 78/255 = 0.306
Pourquoi cela pourrait-il être le Cas? Et pourquoi cela affecterait seulement certaines machines?
pourrait-il avoir quelque chose à voir avec le fait que sont définis ces Color
objets au printemps comme ceci:
<bean id="sludge" class="java.awt.Color">
<constructor-arg value="133"/>
<constructor-arg value="133"/>
<constructor-arg value="78"/>
</bean>
Je viens d'essayer à la fois le java seulement ainsi que la version de printemps, et travaillent tous les deux pour moi. Je remarque que vous êtes message d'exception est incomplète, il devrait y avoir quelque chose après "gamme attendue". Quelle version de Java utilisez-vous? – skaffman
@skaffman, je vais éditer la question pour compléter le message. – butterchicken
L'IAE peut être lancé sur des valeurs int ou float de test. Pouvez-vous déboguer et attraper l'exception (ou regarder la stacktrace) que ce soit la méthode testColorValueRange (int, int, int, int) ou la méthode testColorValueRange (float, float, float, float) qui lance l'IAE? Bien que je suis assez sûr, que le constructeur 'float-type' est utilisé pour créer la couleur. Toutes les machines utilisent-elles la même version Java? –