# Java Module Access Error

## Problem <a href="#problem" id="problem"></a>

JVM return an error like

{% code overflow="wrap" lineNumbers="true" %}

```
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError
accessible: module java.base does not "opens java.lang" to unnamed module @1d7acb34
```

{% endcode %}

## Cause <a href="#cause" id="cause"></a>

The issue at hand is caused by newer versions of Java restricting access to certain libraries. We can see that issues are occurring as SeaLights added support to Java 17.

## Solution <a href="#solution" id="solution"></a>

Adding the option `--add-opens java.base/java.lang=ALL-UNNAMED` to the `Maven Surefire plugin` and `Maven Failsafe plugin` configuration prevents exceptions like that.

Example for the `Maven Surefire plugin`

{% code overflow="wrap" lineNumbers="true" %}

```
"surefireArgLine": "-Xms1280m -Xmx1280m @{sealightsArgLine} ${surefireArgLine} --add-opens java.base/java.lang=ALL-UNNAMED"
```

{% endcode %}

Example for the `Maven Failsafe plugin`

{% code overflow="wrap" lineNumbers="true" %}

```
"failsafeArgLine": "-Xmx8192m @{sealightsArgLine} -Dsl.testStage=\"Integration Tests\" --add-opens java.base/java.lang=ALL-UNNAMED"
```

{% endcode %}
