Hi everybody.
I updated Apache ISIS version to 1.11 and I have a Java Version Problem. Apache ISIS is compatible with Java 1.7 and 1.8, but in two changes (ISIS-1257: c6c3066e3b7e58dc1d338e44ba4ca926dc29d1ef and ISIS-1213: 6ec46332ef2ad50959148751e90222d13a8eecf3) you use a method that only exists in Java 1.8 ( <https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html#get ParameterCount--> getParameterCount()) We dont want to migrate to 1.8 because it requires so many changes on our app, so if you can change code to be compatible, these are the changes I made: isis\core\metamodel\src\main\java\org\apache\isis\core\metamodel\facets\Anno tations.java private static <T extends Annotation> void appendEvaluators( final Class<?> cls, final Class<T> annotationClass, final List<Evaluator<T>> evaluators) { for (Method method : cls.getDeclaredMethods()) { if(MethodScope.OBJECT.matchesScopeOf(method) && method.getParameterCount() method.getParameterTypes().length == 0) { final Annotation annotation = method.getAnnotation(annotationClass); if(annotation != null) { evaluators.add(new MethodEvaluator(method, annotation)); } } } isis\core\metamodel\src\main\java\org\apache\isis\core\metamodel\services\co ntainer\DomainObjectContainerDefault.java public <T> T mixin(final Class<T> mixinClass, final Object mixedIn) { final ObjectSpecification objectSpec = getSpecificationLoader().loadSpecification(mixinClass); final MixinFacet mixinFacet = objectSpec.getFacet(MixinFacet.class); if(mixinFacet == null) { throw new NonRecoverableException("Class '" + mixinClass.getName() + " is not a mixin"); } if(!mixinFacet.isMixinFor(mixedIn.getClass())) { throw new NonRecoverableException("Mixin class '" + mixinClass.getName() + " is not a mixin for supplied object '" + mixedIn + "'"); } final Constructor<?>[] constructors = mixinClass.getConstructors(); for (Constructor<?> constructor : constructors) { if(constructor.getParameterCount() constructor.getParameterTypes().length == 1 && constructor.getParameterTypes()[0].isAssignableFrom(mixedIn.getClass())) { final Object mixin; try { mixin = constructor.newInstance(mixedIn); return (T)injectServicesInto(mixin); } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { throw new NonRecoverableException(e); } } } This is the documentation of JAVA with allowed methods depending on version: https://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Method.html https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html Best regards and happy new year.
