JB,
I have confirmed the issued existing 4.4.10-SNAPSHOT rebase on January 19, 2026
Tested with Java 17, I get the following error:
Unable to make field private java.io.OutputStreamWriter
java.io.PrintStream.charOut accessible: module java.base does not "opens
java.io" to unnamed module @5a157034
Another way to recreate the issue is to update ListCommand in artifact
karaf-command-example-command to used Session.getConsole() for the outputStream
in table.print()
…
import org.apache.karaf.shell.api.console.Session;
…
@Reference
private Session session;
…
table.print(session.getConsole());
...
Paul Spencer
> On Jan 19, 2026, at 10:20 AM, Paul Spencer <[email protected]> wrote:
>
> JB,
> I have not, but ShellTable in 4.4.9 is the same as 4.4.3. Line 190 is the
> source of the illegal access warning.
>
>
> Passing a non-null CharSet to table.print() avoids the encoding calculation
> and warning
> Paul Spencer
>
>> On Jan 19, 2026, at 10:00 AM, Jean-Baptiste Onofré <[email protected]> wrote:
>>
>> Hi Paul
>>
>> Did you try with Karaf 4.4.9 ?
>>
>> Regards
>> JB
>>
>> Le ven. 16 janv. 2026 à 16:10, Paul Spencer <[email protected]> a
>> écrit :
>> To recreated:
>> 1. In session #1, Start Karaf using the command bin/karaf
>> 2. In session #2, Start Karaf using the command bin/client
>> 3. In session #2, execute the command writing the table, bugdata:display in
>> this case.
>> 4. In session #1, The warning will be displayed only once.
>>
>> Additional behavior notes:
>> - `table.print(System.out)` does not generate the warning
>> - `table.print(session.getConsole())` will generate the warning on first use.
>>
>> Paul Spencer
>>
>>
>> > On Jan 16, 2026, at 9:48 AM, Paul Spencer <[email protected]>
>> > wrote:
>> >
>> > Karaf: 4.4.3
>> > Java Virtual Machine: OpenJDK 64-Bit Server VM version 11.0.2+9
>> >
>> > I am seeing the following error when using ShellTable.print() to shell's
>> > session console.
>> >
>> > WARNING: An illegal reflective access operation has occurred
>> > WARNING: Illegal reflective access by
>> > org.apache.karaf.shell.support.table.ShellTable
>> > (jar:bundle://e299aef6-746a-44e6-b810-da872d8d9244_44.0:0/!/) to field
>> > java.io.PrintStream.charOut
>> > WARNING: Please consider reporting this to the maintainers of
>> > org.apache.karaf.shell.support.table.ShellTable
>> > WARNING: Use --illegal-access=warn to enable warnings of further illegal
>> > reflective access operations
>> > WARNING: All illegal access operations will be denied in a future release
>> >
>> > The default for --illegal-access changes to deny in Java 16 and the
>> > functionality is remove in Java 17.
>> > https://docs.oracle.com/en/java/javase/16/docs/specs/man/java.html#extra-options-for-java
>> >
>> > The offending code appears in getEncoding() for
>> > shell/core/src/main/java/org/apache/karaf/shell/support/table/ShellTable.java
>> > Since the Should I create an issue in GitHub?
>> >
>> > ### Example Code
>> > import org.apache.karaf.shell.api.console.Session;
>> > import org.apache.karaf.shell.support.table.ShellTable;
>> > @Service
>> > @Command(scope = "bugdata", name = "appt-display", description = "Display
>> > an appoiment schedule")
>> > public class MyCommand implements Action {
>> > @Reference
>> > private Session session;
>> >
>> > @Override
>> > public Object execute() throws Exception {
>> > final var output = session.getConsole();
>> > final var table = new ShellTable();
>> > ...
>> > table.print(output);
>> > }
>> > }
>> >
>> >
>> > Paul Spencer
>>
>>