我也遇到了同样的“info”消息。对于基本的Java类型(Boolean,String ...),我还没有修复它(但),但是对于我的自定义类,如果我添加@XmlRootElement注释和一个默认的无参构造函数,则该消息会消失。
深入研究jersey源代码后,我注意到类"WadlGeneratorJAXBGrammarGenerator"具有以下代码:
Object parameterClassInstance = null;
try {
Constructor<?> defaultConstructor = type.getDeclaredConstructor();
defaultConstructor.setAccessible(true);
parameterClassInstance = defaultConstructor.newInstance();
} catch (InstantiationException ex) {
LOGGER.log(Level.FINE, null, ex);
} catch (IllegalAccessException ex) {
LOGGER.log(Level.FINE, null, ex);
} catch (IllegalArgumentException ex) {
LOGGER.log(Level.FINE, null, ex);
} catch (InvocationTargetException ex) {
LOGGER.log(Level.FINE, null, ex);
} catch (SecurityException ex) {
LOGGER.log(Level.FINE, null, ex);
} catch (NoSuchMethodException ex) {
LOGGER.log(Level.FINE, null, ex);
}
if (parameterClassInstance==null) {
return null;
}
基本上,String、Boolean等一些类没有默认的构造函数,所以它会抛出NoSuchMethodException异常,因此返回null并记录信息消息。
所以仍然不知道为什么会发生这种情况,但在我的情况下,解决方案是禁用wadl生成,因为我没有使用它。只需将以下参数添加到您的web.xml文件即可。
<init-param>
<param-name>com.sun.jersey.config.feature.DisableWADL</param-name>
<param-value>true</param-value>
</init-param>