swagger-api / swagger-codegen

swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition.
http://swagger.io
Apache License 2.0
16.89k stars 6.02k forks source link

Does not compile with Java 9 #7976

Open JohannesHoppe opened 6 years ago

JohannesHoppe commented 6 years ago
Description

This is a friendly reminder that swagger-codegen fails on Java 9. Everything compiles as expected with Java 8.

Swagger-codegen version

all version 2.x and 3.x

Steps to reproduce

Install Java 9

java --version
java 9.0.4
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
mvn clean package
-------------------------------------------------------------------------------
Test set: TestSuite
-------------------------------------------------------------------------------
Tests run: 582, Failures: 128, Errors: 0, Skipped: 3, Time elapsed: 7.065 sec <<< FAILURE! - in TestSuite
checkOptionsHelp(io.swagger.codegen.lagomScalaApi.LagomScalaApiOptionsTest)  Time elapsed: 0.03 sec  <<< FAILURE!
java.lang.NoClassDefFoundError: javax/annotation/PostConstruct
Caused by: java.lang.ClassNotFoundException: javax.annotation.PostConstruct

....

This might be related to: https://stackoverflow.com/questions/34947994/neon-how-to-run-on-jdk9

Suggest a fix/enhancement

Right now it's fine to install Java 8 as instructed in the README. This issue hopefully helps other people when searching for a solution. But this should be fixed some day, too! 😉

In example, on my Mac I did the following:

brew cask install caskroom/versions/java8

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
export PATH=${JAVA_HOME}/bin:$PATH

java -version
karux commented 5 years ago

any status on this bug? this impacts java10 compatibility as well. java8 standard commercial public update support ends January 2019. JCP notice can be found at https://bugs.java.com/view_bug.do?bug_id=JDK-8049422

ghost commented 5 years ago

A generated Java client with

  "useBeanValidation": true,
  "performBeanValidation": true,

can't also be built with Gradle and Java 11.