Java getParameters()应该返回一个数组,这段代码应该在jdk 7 maven项目中获得成功

Java getParameters()应该返回一个数组,这段代码应该在jdk 7 maven项目中获得成功,java,maven,reflection,compiler-errors,Java,Maven,Reflection,Compiler Errors,所以这里的问题是它是一个带有JDK 7源配置的maven项目。它完美地构建在linux和windows机器上。在我的mac book pro上,它总是说上述方法不适用于类型方法 我确信这个方法应该在JDK 7的所有版本上都可用 有什么线索吗?方法.getParameters()是在JDK 8中引入的。也许您正在寻找方法.getParameterTypes() 源代码级别只控制编译器将接受哪些语言特性,而不是根据哪些JDK JAR进行编译 查看您在MBP上安装的Maven所使用的Java编译器版本

所以这里的问题是它是一个带有JDK 7源配置的maven项目。它完美地构建在linux和windows机器上。在我的mac book pro上,它总是说上述方法不适用于类型方法

我确信这个方法应该在JDK 7的所有版本上都可用

有什么线索吗?

方法.getParameters()是在JDK 8中引入的。也许您正在寻找方法.getParameterTypes()

源代码级别只控制编译器将接受哪些语言特性,而不是根据哪些JDK JAR进行编译

查看您在MBP上安装的Maven所使用的Java编译器版本。如果它正在查找1.7编译器,那么它可能正在查找包含JDK类1.7版本的JAR,其中
java.lang.reflect.Method
没有名为
getParameters()
的方法。getParameters()是在JDK 8中引入的。也许您正在寻找方法.getParameterTypes()

源代码级别只控制编译器将接受哪些语言特性,而不是根据哪些JDK JAR进行编译


查看您在MBP上安装的Maven所使用的Java编译器版本。如果它正在查找1.7编译器,那么它可能正在查找包含JDK类1.7版本的JAR,其中
java.lang.reflect.Method
没有名为
getParameters()的方法

请发布您得到的准确编译错误。请发布您得到的准确编译错误。那么它在JDK 7 maven项目上是如何工作的。。当maven项目中的源代码级别显式设置为7时?在上面的回答中添加了进一步的解释。那么它在JDK 7 maven项目中是如何工作的呢。。当maven项目中的源代码级别显式设置为7时,在上面添加了进一步的解释。
private void setPropertiesToBasePojoMarkerImpl(Object obj, Method[] methods) {
    for (Method method : methods) {
        if (method.getName().contains("get") 
                && !method.isAnnotationPresent(Worker.class)
                && !method.getName().contains("getClass") 
                && isPojoMarkerMethod(method)
                && method.getParameters().length == 0) {
            // in the above condition it says the method getParameters() is undefined for type Method
            try {
                Serializable result = (Serializable) method.invoke(obj, new Object[0]);
                if (result != null) {
                    if (staticRegistry.isReferencePresent(result) != null)
                        result = staticRegistry.isReferencePresent(result);
                }
                String propname = method.getName().toString().substring(3).toLowerCase();
                beanEnhancer.getServerBasePojoMarkerImpl().setProperty(propname, result);
            } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
                logger.log(Level.WARNING, "unable to invoke method with name" + method.getName() + " " + e);
            }
        }
    }
}