JB, Below are my changes, including added logging, that exposes the issue. ### From bin/karaf session karaf@root()> booking:list getEncoding() - Begin getEncoding() - get encoding from PS getEncoding() - getDeclaredField(): charOut getEncoding() - end ID | Flight | Customer ----+--------+--------- karaf@root()>
### From bin/client session karaf@root()> booking:list getEncoding() - Begin getEncoding() - get encoding from PS getEncoding() - getDeclaredField(): 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 getEncoding() - end IDz | Flight | Customer ----+--------+--------- karaf@root()> ### My changes to recreated and added logging GitHub Branch - https://github.com/paulsp/karaf/tree/pr-xxxx ListCommand.java - https://github.com/paulsp/karaf/blob/pr-xxxx/examples/karaf-command-example/karaf-command-example-command/src/main/java/org/apache/karaf/examples/command/command/ListCommand.java ShellTable.java - https://github.com/paulsp/karaf/blob/pr-xxxx/shell/core/src/main/java/org/apache/karaf/shell/support/table/ShellTable.java Paul Spencer > On Jan 19, 2026, at 12:32 PM, Paul Spencer <[email protected]> wrote: > > 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 >>> >>> >
