Maven Shade と Assembly プラグインの両方を使用して、自己完結型の JAR ファイルにコンパイルしようとした合理的に単純な RESTEasy クライアント アプリケーションがあります。Maven はアプリケーションを正常にパッケージ化し、正常に起動しますが、最終的に次のエラーが発生します。
Exception in thread "main" java.lang.StackOverflowError
at java.util.regex.ASCII.getType(ASCII.java:199)
at java.util.regex.ASCII.isType(ASCII.java:203)
at java.util.regex.Pattern$Ctype.isSatisfiedBy(Pattern.java:3832)
at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3715)
at java.util.regex.Pattern$Curly.match(Pattern.java:4125)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556)
at java.util.regex.Pattern$Branch.match(Pattern.java:4502)
at java.util.regex.Pattern$BmpCharProperty.match(Pattern.java:3715)
at java.util.regex.Pattern$Start.match(Pattern.java:3408)
at java.util.regex.Matcher.search(Matcher.java:1199)
at java.util.regex.Matcher.find(Matcher.java:618)
at java.util.Formatter.parse(Formatter.java:2517)
at java.util.Formatter.format(Formatter.java:2469)
at java.util.Formatter.format(Formatter.java:2423)
at java.lang.String.format(String.java:2845)
at org.jboss.resteasy.client.core.BaseClientResponse.readFrom(BaseClientResponse.java:384)
at org.jboss.resteasy.client.core.BaseClientResponse.getEntity(BaseClientResponse.java:346)
at org.jboss.resteasy.client.core.BaseClientResponse.getEntity(BaseClientResponse.java:319)
at org.jboss.resteasy.client.core.BaseClientResponse.getEntity(BaseClientResponse.java:442)
at org.jboss.resteasy.client.core.BaseClientResponse.copyFromError(BaseClientResponse.java:94)
at org.jboss.resteasy.client.ClientResponseFailure.<init>(ClientResponseFailure.java:32)
at org.jboss.resteasy.client.core.BaseClientResponse.createResponseFailure(BaseClientResponse.java:488)
at org.jboss.resteasy.client.core.BaseClientResponse.createResponseFailure(BaseClientResponse.java:479)
org.jboss.resteasy.client.core.BaseClientResponse.readFrom(BaseClientResponse.java:384) の後の呼び出しスタックは、メモリがなくなるまで何度も繰り返されます。
私のコードは問題ではありません。アプリケーションは、 Maven 依存関係プラグインを使用してパッケージ化すると正常に動作します。
私のコードは正規表現の名前付きグループ (Java 1.7 に依存) に依存していますが、Maven とアプリケーション自体が正しい JDK を使用してコンパイルおよび実行されていることを確認できます。
自己完結型の JAR ファイルがこのようなスタック オーバーフローを引き起こす可能性があることを誰でも説明できますか?