`
fff
  • 浏览: 31351 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java.awt.Color+spring autowire 问题解决

阅读更多
项目里用了开源验证码框架JCaptcha,它通过配置文件指定图片颜色,配置如下
	<bean id="softBlue" class="java.awt.Color" >
			<constructor-arg index="0"><value>0</value></constructor-arg>
			<constructor-arg index="1"><value>255</value></constructor-arg>
			<constructor-arg index="2"><value>0</value></constructor-arg>
	</bean>

问题1
在jdk 1.5.08下没有问题,但是当升级到jdk 1.6.10时,初始化失败,报错显示为
java.lang.IllegalArgumentException: Color parameter outside of expected range: Red Green Blue
	at java.awt.Color.testColorValueRange(Color.java:298)
	at java.awt.Color.<init>(Color.java:382)
	at java.awt.Color.<init>(Color.java:357)

java.awt.Color的constructor有两个
 public Color(int r, int g, int b)  //int
 public Color(float r, float g, float b)  //float

debug Color显示为,spring调用了//float 标识的构造方法,而不是期望的 //int
所以给参数加上类型参数 "type="java.lang.Integer",该解决了吧

	<bean id="softBlue" class="java.awt.Color" >
			<constructor-arg  type="java.lang.Integer" index="0" ><value>0</value></constructor-arg>。。。

出现新错误 问题2
...
.xml]: 3 constructor arguments specified but no matching constructor found in bean 'softBlue' (hint: specify index and/or type arguments for simple parameters to avoid type ambiguities)

大意是,请指定参数类型,避免类型混淆

////////////////////// 解决过程
问题1:google之,找到 一个先行者囧 ;里面说到jdk5和jdk6(win下)Color类文件里的两个构造方法(上面列举的//float,//int)位置不同,导致spring选择了//float代替了期望中的//int方法

那,问题2是怎么回事呢?指定类型为什么spring没认出来呢?

问题2:debug spring加载过程,到这一句,真相大白
	if (valueHolder.getType().equals(requiredType.getName())) {

valueHolder.getType()-->“java.lang.Integer”
requiredType.getName()-->"int"
不相同,导致spring autowire 失败。。。

由于我们用的还是spring1.2,所以怀疑spring2.0是否已经修复了

==========补充
spring2.0下也存在,看来指定primary类型需谨慎

分享到:
评论

相关推荐

    JAVA 程序 源代码 import java.applet.*;import java.awt.*

    JAVA 程序 源代码 import java.applet.*;import java.awt.*

    import java.awt.docx

    import java.awt.docx

    用Java.awt包中类写的记事本

    整合了java.awt.*;java.awt.event.*;javax.swing.*包中的类,结合布局与事件处理....这是本人自己写的哦

    JAVA API官方中文版手册chm文件文档

    java.awt.color java.awt.datatransfer java.awt.dnd java.awt.event java.awt.font java.awt.geom java.awt.im java.awt.im.spi java.awt.image java.awt.image.renderable java.awt.print java.beans ...

    Java的AWT包.pdf

    Java的AWT包.pdf 学习资料 复习资料 教学资源

    awt包java Android

    awt包java Android awt包java Android awt包java Android awt包java Android awt包java Android awt包java Android awt包java Android awt包java Android awt包java Android awt包java Android awt包java Android ...

    项目源码-java进销存管理系统

    import java.awt.Color; import java.awt.Image; import java.awt.Insets; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ComponentAdapter; import java.awt.event....

    Javaweb仓库管理系统项目源码+数据库.zip

    import java.awt.AlphaComposite; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt....

    jsb.zip_awt_event_import java.awt._java 记事本

    简单的记事本的JAVA程序,//导入awt包,event包 import java.awt.*

    java的.awt包和java.util包的区别

    了解Java的不同包功能

    阿基米德螺旋线java小实验

    import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentEvent; import java....

    awt中文乱码解决方法

    解决java软件中Myeclipse 中的awt乱码问题

    java贪吃蛇游戏源代码

    import java.awt.Color; import java.awt.Graphics; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java....

    Java Socket 操作 Demo

    import java.awt.Color; import java.awt.Dimension; import java.awt.Point; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.BufferedReader; import java.io.BufferedWriter;...

    JSP与Java2D Web图表编程

    本章介绍如何利用JSP与Java2D...该包与java.awt、java.awt.color、java.awt.image、java.awt.font、java.awt.print,以及java.awt.image.renderable包中的API相结合,就可以实现美观的、复杂的、丰富多彩的Web图表了。

    类qq聊天工具

    1. import java.awt.BorderLayout; 2. import java.awt.Component; 3. import java.awt.Dialog; 4. import java.awt.Dimension; 5. import java.awt.FlowLayout; 6. import java.awt.GridBagConstraints; 7. ...

    这是一个使用 Java 语言 ( java.awt + java.swing ) 实现的 2048 游戏程序.zip

    用java写的项目,适合新手入门学习,在这里免费提供给大家,欢迎大家下载学习。用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎下载使用。用java写的项目,适合初学者学习,在这里免费分享给大家,欢迎...

    Matlab_JavaAWTRobot​_Project.m:MATLAB 中的 java.awt.Robot 类-matlab开发

    该程序显示了 MATLAB.Mouse 中 java.awt.Robot 类的用法,随机改变屏幕上的位置,并同时为您提供鼠标所在的 rgb 值。 为了运行 Matlab_JavaAWRobot_Project.m 你必须下载我提交的 getRobotClass.m 和 JavaRobotClass...

    JAVA_API1.8中文文档(CHM版).rar

    java.awt.color 提供用于颜色空间的类。 java.awt.datatransfer 提供在应用程序之间和在应用程序内部传输数据的接口和类。 java.awt.dnd Drag 和 Drop 是一种直接操作动作,在许多图形用户界面系统中都会遇到它,...

Global site tag (gtag.js) - Google Analytics