生成swagger.json

时间:2018-10-09 14:33:28

标签: java swagger

我有一个带有一些REST Api的Java项目(tomcat webapp)。我想为他们生成详尽的文档。我从tutorialgithub)开始。 我没有行家,我们使用蚂蚁任务。我包括了swagger-annotations-1.5.0.jar和swagger-jaxrs JAR 1.5.0版本附带的所有jar(如果有用,我可以包括完整的列表) 我已经注释了一些方法,并且有这样的配置类:

@ApplicationPath("/api")
public class Configurator extends Application {
public Configurator() {
    init();
}
private void init() {
    BeanConfig beanConfig = new BeanConfig();
    beanConfig.setVersion("1.0.0");
    beanConfig.setSchemes(new String[]{"http"});
    beanConfig.setHost("myserver.it:8080");
    beanConfig.setBasePath("/swagger-demo/api");
    beanConfig.setResourcePackage("myserver.rest");
    beanConfig.setTitle("RESTEasy, Swagger and Swagger UI Example");
    beanConfig.setScan(true);
}

}

当我再次在tomcat 9中部署它时,我可以在localhost.log文件中看到此日志

java.lang.NoSuchMethodError:io.swagger.util.Json.create()Lcom / fasterxml / jackson / databind / ObjectMapper;     在io.swagger.jaxrs.json.JacksonJsonProvider。(JacksonJsonProvider.java:30)     在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)处     在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)     在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)     在java.lang.reflect.Constructor.newInstance(Constructor.java:423)     在org.glassfish.hk2.utilities.reflection.ReflectionHelper.makeMe(ReflectionHelper.java:1375)     在org.jvnet.hk2.internal.ClazzCreator.createMe(ClazzCreator.java:272)     在org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:366)     在org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:487)     在org.jvnet.hk2.internal.SingletonContext $ 1.compute(SingletonContext.java:83)     在org.jvnet.hk2.internal.SingletonContext $ 1.compute(SingletonContext.java:71)     在org.glassfish.hk2.utilities.cache.Cache $ OriginThreadAwareFuture $ 1.call(Cache.java:97)     在java.util.concurrent.FutureTask.run(FutureTask.java:266)     在org.glassfish.hk2.utilities.cache.Cache $ OriginThreadAwareFuture.run(Cache.java:154)     在org.glassfish.hk2.utilities.cache.Cache.compute(Cache.java:199)     在org.jvnet.hk2.internal.SingletonContext.findOrCreate(SingletonContext.java:122)     在org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2126)     在org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:116)     在org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:90)     在org.glassfish.jersey.inject.hk2.AbstractHk2InjectionManager.lambda $ getAllServiceHolders $ 0(AbstractHk2InjectionManager.java:160)     在java.util.stream.ReferencePipeline $ 3 $ 1.accept(ReferencePipeline.java:193)     在java.util.LinkedList $ LLSpliterator.forEachRemaining(LinkedList.java:1235)     在java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)     在java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)     在java.util.stream.ReduceOps $ ReduceOp.evaluateSequential(ReduceOps.java:708)     在java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)     在java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)     在org.glassfish.jersey.inject.hk2.AbstractHk2InjectionManager.getAllServiceHolders(AbstractHk2InjectionManager.java:164)     在org.glassfish.jersey.inject.hk2.ImmediateHk2InjectionManager.getAllServiceHolders(ImmediateHk2InjectionManager.java:54)     在org.glassfish.jersey.internal.inject.Providers.getServiceHolders(Providers.java:337)     在org.glassfish.jersey.internal.inject.Providers.getCustomProviders(Providers.java:175)     在org.glassfish.jersey.message.internal.MessageBodyFactory.initialize(MessageBodyFactory.java:238)     在org.glassfish.jersey.message.internal.MessageBodyFactory $ MessageBodyWorkersConfigurator.postInit(MessageBodyFactory.java:136)处     在org.glassfish.jersey.server.ApplicationHandler.lambda $ initialize $ 2(ApplicationHandler.java:372)     在java.util.Arrays $ ArrayList.forEach(Arrays.java:3880)     在org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:372)     在org.glassfish.jersey.server.ApplicationHandler.lambda $ initialize $ 1(ApplicationHandler.java:316)     在org.glassfish.jersey.internal.Errors.process(Errors.java:316)     在org.glassfish.jersey.internal.Errors.process(Errors.java:298)     在org.glassfish.jersey.internal.Errors.processWithException(Errors.java:256)     在org.glassfish.jersey.server.ApplicationHandler.initialize(ApplicationHandler.java:315)     在org.glassfish.jersey.server.ApplicationHandler。(ApplicationHandler.java:282)     在org.glassfish.jersey.servlet.WebComponent。(WebComponent.java:335)     在org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:178)     在org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:370)     在javax.servlet.GenericServlet.init(GenericServlet.java:158)     在org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1124)     在org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:974)     在org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4813)     在org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5125)     在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)     在org.apache.catalina.core.StandardContext.reload(StandardContext.java:3700)     在org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:292)     在org.apache.catalina.core.StandardContext.backgroundProcess(StandardContext.java:5447)     在org.apache.catalina.core.ContainerBase $ ContainerBackgroundProcessor.processChildren(ContainerBase.java:1396)     在org.apache.catalina.core.ContainerBase $ ContainerBackgroundProcessor.processChildren(ContainerBase.java:1400)     在org.apache.catalina.core.ContainerBase $ ContainerBackgroundProcessor.processChildren(ContainerBase.java:1400)     在org.apache.catalina.core.ContainerBase $ ContainerBackgroundProcessor.run(ContainerBase.java:1368)     在java.lang.Thread.run(Thread.java:748)

如果我尝试到达http://myserver.it:8080/swagger-demo/api/,这会给我404错误。

我阅读了有关此错误(here)的文章,但我真的不能说出什么问题。我很挣扎。 任何提示将不胜感激

1 个答案:

答案 0 :(得分:0)

自从我终于找到解决方案以来,我对自己回答。问题是与库不一致。我使用此网站Jar download解决了问题,这给了我所有的依赖性。然后,我比较了我在项目中已经熟悉的一些库,为了避免冲突,我选择了最新的库。