3

我有一个相当简单的 RESTEasy 客户端应用程序,我尝试使用 Maven Shade 和 Assembly 插件将其编译成一个自包含的 JAR 文件。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 文件如何导致这样的堆栈溢出。

4

0 回答 0