Skip to content

Commit acc9e18

Browse files
committed
#59: Do not use the SystemClassLoader in Android.
The system classloader is used to dynamically load classes downloaded by maven. This is not yet supported in Android anyhow.
1 parent aef2da6 commit acc9e18

File tree

1 file changed

+17
-1
lines changed
  • java/src/main/java/org/astonbitecode/j4rs/utils

1 file changed

+17
-1
lines changed

java/src/main/java/org/astonbitecode/j4rs/utils/Utils.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,18 @@
1919
import java.util.Arrays;
2020

2121
public class Utils {
22+
23+
private static boolean IsAndroid;
24+
25+
static {
26+
try {
27+
Class.forName("android.os.Build");
28+
IsAndroid = true;
29+
} catch (ClassNotFoundException e) {
30+
IsAndroid = false;
31+
}
32+
}
33+
2234
public static Class<?> forNameEnhanced(final String className) throws ClassNotFoundException {
2335
switch (className) {
2436
case "boolean":
@@ -40,7 +52,11 @@ public static Class<?> forNameEnhanced(final String className) throws ClassNotFo
4052
case "void":
4153
return void.class;
4254
default:
43-
return Class.forName(className, true, ClassLoader.getSystemClassLoader());
55+
if (!IsAndroid) {
56+
return Class.forName(className, true, ClassLoader.getSystemClassLoader());
57+
} else {
58+
return Class.forName(className);
59+
}
4460
}
4561
}
4662

0 commit comments

Comments
 (0)