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
>>> 
>>> 
> 

Reply via email to