`
fff
  • 浏览: 32372 次
  • 性别: 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.*

    2. **Java AWT(Abstract Window Toolkit)**: `java.awt.*` 导入的是Java的抽象窗口工具包,它是Java GUI的基础,提供了创建基本组件(如按钮、文本框)和布局管理器的能力。AWT组件是重量级的,它们依赖于操作系统...

    Java的AWT包.pdf

    Java的Abstract Window Toolkit(AWT)包是Java标准版(Java SE)的一部分,它提供了一组基本的组件和接口,用于创建图形用户界面(GUI)。在Java编程中,如果你需要开发带有窗口、按钮、文本框等元素的应用程序,AWT就是...

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

    ### Java的.awt包和.java.util包的区别 #### Java.util包详解 Java.util包是一个非常重要的标准库之一,其中包含了大量有用的类和接口,为开发者提供了丰富的功能。此包中的类和接口可以分为以下几大类别: 1. **...

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

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

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

    在这个项目中,开发者采用Java编程语言,结合java.awt和java.swing库,构建了一个可运行的2048游戏程序。下面我们将深入探讨这个项目的实现细节。 首先,java.awt和java.swing是Java GUI(图形用户界面)设计的主要...

    import java.awt.docx

    在我们的代码中,我们可以看到 import 语句中包含了 java.awt 和 javax.swing.*,这说明了我们使用的是 Java 的 AWT 和 Swing 工具包。 2. JFrame 和 JDialog 的使用 在我们的代码中,我们可以看到 MainWindow 类...

    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_CH.rar_java awt chm_java.awt.geom chm

    Java AWT(Abstract Window Toolkit)是Java平台的核心部分,它提供了创建和管理窗口以及与用户交互的基本组件。这个“JAVA_CH.rar”压缩包包含了关于Java AWT和`java.awt.geom`包的CHM(Compiled HTML Help)格式的...

    Java-AWT

    Java AWT(Abstract Window Toolkit)是Java平台早期的图形用户界面(GUI)工具包,它为开发者提供了构建桌面应用程序的基本组件,如按钮、文本框、菜单等。在Java的早期版本中,AWT是GUI编程的主要框架,但现在已经...

    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.awt实现的符合面向对象思想的贪吃蛇游戏.zip

    通过这个项目,Java初学者不仅可以掌握Java.awt的基本用法,还可以深入理解面向对象编程的思想,提升问题解决能力。对于教师来说,这是一个极好的教学案例,可以帮助学生直观地看到理论知识在实际项目中的应用。同时...

    项目源码-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小实验

    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 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;...

    项目源码-java网络五子棋游戏

    import java.awt.AlphaComposite; import java.awt.Composite; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.GridBagConstraints; import java.awt.Insets; import java.io.IOException;...

Global site tag (gtag.js) - Google Analytics