Question: Is it possible to invoke a private static method with `MethodUtils`? 

```
 LocalDateTime d = (LocalDateTime)MethodUtils.invokeStaticMethod(Service.class,
     "getNightStart",
      LocalTime.of(0, 0),
      LocalTime.of(8,0));

```

This code throws the exception:

```
java.lang.NoSuchMethodException: No such accessible method: getNightStart()

```

If I change method's access modifier to `public` it works.

Answer: 
No, because `MethodUtils.invokeStaticMethod()` calls `Class.getMethod()` under the hood. Even if you try to hack the modifier it won't be visible to the `MethodUtils` as it won't see the modified `Method` reference:

```
Service.class
  .getDeclaredMethod("getNightStart", LocalTime.class, LocalTime.class)
  .setAccessible(true);
MethodUtils.invokeStaticMethod(Service.class, 
   "getNightStart", LocalTime.of(0, 0), LocalTime.of(8, 0)); 

```

will still fail with `NoSuchMethodException` just like plain reflection:

```
Service.class
  .getDeclaredMethod("getNightStart", LocalTime.class, LocalTime.class)
  .setAccessible(true);
Method m = Service.class.getMethod("getNightStart", LocalTime.class, LocalTime.class);
m.invoke(null, LocalTime.of(0, 0), LocalTime.of(8, 0));

```

This will only work when the `Method` object is reused:

```
Method m = Service.class.getDeclaredMethod("getNightStart", LocalTime.class, LocalTime.class);
m.setAccessible(true);
m.invoke(null, LocalTime.of(0, 0), LocalTime.of(8, 0));

```
use method with `forceAccess`, and set `true`

[apidoc for common-lang3 MethodUtils.invokeMethod](https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/reflect/MethodUtils.html#invokeMethod-java.lang.Object-boolean-java.lang.String-java.lang.Object...-)