[ 
https://issues.apache.org/jira/browse/COMPRESS-687?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17945432#comment-17945432
 ] 

Alexis Jehan commented on COMPRESS-687:
---------------------------------------

After some months, I took the time to investigate the issue.

I found out that `System.out` does not print anything anymore after calling 
`new Pack200CompressorInputStream`.

I temporary fixed it using this code:


{code:java}
public final class Foo {

        public static void main(final String... args) throws IOException {
                System.out.println("start");
                final var out = System.out;
                System.setOut(new PrintStream(OutputStream.nullOutputStream()));
                try (var inputStream = 
Foo.class.getClassLoader().getResourceAsStream("foo.pack")) {
                        try (var compressInputStream = new 
Pack200CompressorInputStream(inputStream)) {
                                
compressInputStream.transferTo(OutputStream.nullOutputStream());
                        }
                }
                System.setOut(out);
                System.out.println("end"); // now reached
        }
}
{code}

The library should not alter `System.out`. The fix should be applied here:

{noformat}
        at 
org.apache.commons.compress.harmony.unpack200.Segment.setLogStream(Segment.java:456)
        at 
org.apache.commons.compress.harmony.unpack200.Archive.unpack(Archive.java:207)
        at 
org.apache.commons.compress.harmony.unpack200.Pack200UnpackerAdapter.unpack(Pack200UnpackerAdapter.java:186)
        at 
org.apache.commons.compress.compressors.pack200.Pack200CompressorInputStream.<init>(Pack200CompressorInputStream.java:140)
        at 
org.apache.commons.compress.compressors.pack200.Pack200CompressorInputStream.<init>(Pack200CompressorInputStream.java:174)
{noformat}


> Pack200CompressorInputStream unexpected process finished on Java 22
> -------------------------------------------------------------------
>
>                 Key: COMPRESS-687
>                 URL: https://issues.apache.org/jira/browse/COMPRESS-687
>             Project: Commons Compress
>          Issue Type: Bug
>          Components: Compressors
>    Affects Versions: 1.27.1
>            Reporter: Alexis Jehan
>            Priority: Major
>         Attachments: test-issue.7z
>
>
> Hello,
> Consider the following class:
> {code:java}
> public final class Foo {
>       public static void main(final String... args) throws IOException {
>               System.out.println("start");
>               try (var inputStream = 
> Foo.class.getClassLoader().getResourceAsStream("foo.pack")) {
>                       try (var compressInputStream = new 
> Pack200CompressorInputStream(inputStream)) {
>                               compressInputStream.transferTo(System.out);
>                       }
>               }
>               System.out.println("end"); // never reached
>       }
> }
> {code}
> Running it using Java 22, and the `--add-opens=java.base/java.io=ALL-UNNAMED` 
> VM option, the result is:
> {noformat}
> start
> Process finished with exit code 0
> {noformat}
> The process is interrupted without any error.
> I have attached files.
> Thank you in advance.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to