FitNesse Slim适配Java版本及类构造调用异常问题咨询
FitNesse测试问题排查
一、JDK 1.8下构造器调用失败的原因及解决
出现Could not invoke constructor for SlimVarDbl[0]错误,核心是FitNesse无法定位到你的fixture类,问题出在包名或路径配置:
- 补全类的包名声明
你的.class文件位于C:\Users\Cheng\Documents\Proj\VarianceArithemtic\Java\bin\fitnesse\目录下,说明该类的包声明应为package fitnesse;。测试页面必须指定完整类名(包名+类名),否则FitNesse会在默认包下查找,自然找不到目标类。
修改测试表格的类名定义,两种写法均可:
!|fitnesse.Slim Var Dbl| |value tolerance|dev tolerance|comment| |3E-15 |3E-15 |52-bit |
或直接使用完整驼峰类名:
!|fitnesse.SlimVarDbl| |value tolerance|dev tolerance|comment| |3E-15 |3E-15 |52-bit |
- 修正
!path路径!path需要指向包结构的根目录,而非包目录本身。你的类文件路径是bin\fitnesse\SlimVarDbl.class,因此!path应指向bin目录:
!path C:\Users\Cheng\Documents\Proj\VarianceArithemtic\Java\bin\
若原路径指向bin\fitnesse\,FitNesse会尝试在该目录下再次查找fitnesse子目录,导致类路径匹配失败。
二、JDK 20下的错误原因
出现UnsupportedOperationException: The Security Manager is deprecated错误,是因为FitNesse v20230503依赖已废弃的Security Manager功能,而JDK 16后该API被标记为废弃,JDK 20直接移除了相关支持,导致兼容性冲突。
解决方式:
- 降级到JDK 8或JDK 11(推荐JDK 8,与你的fixture编译版本匹配);
- 升级到更高版本的FitNesse(后续版本已移除对Security Manager的依赖)。
总结
- JDK 8下的错误是配置问题,与Java版本无关,修正包名和路径即可解决;
- JDK 20下的错误是版本兼容性问题,属于FitNesse旧版本与高版本JDK的API冲突。
内容的提问来源于stack exchange,提问作者user747562
相关产品推荐
相关产品推荐

