Собственный Quarkus и org.kohsuke: github-api - неразрешенный метод во время синтаксического анализа - аннотированный метод @WithBridgeMethods - PullRequest
0 голосов
/ 09 мая 2020

Собственный Quarkus и org.kohsuke: github-api - неразрешенный метод во время синтаксического анализа - @WithBridgeMethods аннотированный метод

Это продолжение родного Quarkus и org.kohsuke: github-api - Не удалось десериализация исключения вопрос, я использую патч https://github.com/quarkusio/quarkus/pull/9182, чтобы преодолеть регистр для отражения проблемы с GHRepository.GHRepoPermission.class, который является частным внутренним классом.

Мне пришлось добавить GHLicense.class до @RegisterForReflection, и теперь мое примерное приложение не работает во время собственной компиляции, говоря: Обнаружен неразрешенный метод

[getting-started-1.0-SNAPSHOT-runner:42440]     analysis:  60,222.05 ms,  6.04 GB
Error: com.oracle.graal.pointsto.constraints.UnresolvedElementException: Discovered unresolved method during parsing: org.kohsuke.github.GHLicense.urlToString(java.net.URL, java.lang.Class). To diagnose the issue you can use the --allow-incomplete-classpath option. The missing method is then reported at run time when it is accessed the first time.
Detailed message:
Trace:
    at parsing org.kohsuke.github.GHLicense.getUrl(GHLicense.java)
Call path from entry point to org.kohsuke.github.GHLicense.getUrl():
    at org.kohsuke.github.GHLicense.getUrl(GHLicense.java)
    at com.oracle.svm.reflect.GHObject_getUrl_d595a42af79d3a07fda24477277adddcaeacd46d_608.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Method.java:566)
    at org.jboss.resteasy.core.ContextParameterInjector$GenericDelegatingProxy.invoke(ContextParameterInjector.java:122)

https://github.com/hub4j/github-api/blob/master/src/main/java/org/kohsuke/github/GHLicense.java#L84 метод getUrl () использует @WithBridgeMethods аннотацию

    @WithBridgeMethods(value = String.class, adapterMethod = "urlToString")
    public URL getUrl() {
        return GitHubClient.parseURL(url);
    }

Есть какие-нибудь советы по обходным путям? Или это чисто GraalVM штука?

1 Ответ

1 голос
/ 09 мая 2020

Это чисто проблема GraalVM, и единственный способ ее обойти (я знаю, кроме изменения кода в фактической библиотеке) - это создать расширение Quarkus, которое заменит оскорбительные части библиотеки.

...