Я считаю, что это своего рода конфликт пути класса. В Java 8 следующий код завершается с ClassNotFoundException: com/sun/xml/bind/v2/ContextFactory
, как указано в вопросе:
public class MyService {
@Get("/start")
public HttpResponse start() throws Exception {
final StandardServiceRegistryBuilder registryBuilder =
new StandardServiceRegistryBuilder().configure();
...
}
}
Однако проблема исчезает после обновления до более новой версии Java, такой как Java 11.
К счастью, проблему можно обойти, если явно указать загрузчик класса контекста:
@Get("/start")
public HttpResponse start() throws Exception {
Thread.currentThread().setContextClassLoader(MyService.class.getClassLoader());
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
final StandardServiceRegistryBuilder registryBuilder =
new StandardServiceRegistryBuilder().configure();
...
}