sort getMethods
diff --git a/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java b/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java
index 8c443e5..4de1e94 100644
--- a/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java
+++ b/plugins/json/src/main/java/org/apache/struts2/json/JSONUtil.java
@@ -35,6 +35,7 @@
 import java.util.Set;
 import java.util.regex.Pattern;
 import java.util.zip.GZIPOutputStream;
+import java.util.Arrays;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -410,7 +411,9 @@
     public static Method[] listSMDMethods(Class clazz, boolean ignoreInterfaces) {
         final List<Method> methods = new LinkedList<>();
         if (ignoreInterfaces) {
-            for (Method method : clazz.getMethods()) {
+            Method[] SMDMethods = clazz.getMethods();
+            Arrays.sort(SMDMethods, (a, b) -> a.toString().compareTo(b.toString()));
+            for (Method method : SMDMethods) {
                 SMDMethod smdMethodAnnotation = method.getAnnotation(SMDMethod.class);
                 if (smdMethodAnnotation != null) {
                     methods.add(method);
@@ -421,7 +424,9 @@
             // order encountered
             JSONUtil.visitInterfaces(clazz, new JSONUtil.ClassVisitor() {
                 public boolean visit(Class aClass) {
-                    for (Method method : aClass.getMethods()) {
+                    Method[] SMDMethods = aClass.getMethods();
+                    Arrays.sort(SMDMethods, (a, b) -> a.toString().compareTo(b.toString()));
+                    for (Method method : SMDMethods) {
                         SMDMethod smdMethodAnnotation = method.getAnnotation(SMDMethod.class);
                         if ((smdMethodAnnotation != null) && !methods.contains(method)) {
                             methods.add(method);