openapi-generator icon indicating copy to clipboard operation
openapi-generator copied to clipboard

[BUG][JAVA]- ${project.basedir} in the file path given for <inputSpec> throws java.net.URISyntaxException

Open dhanushrajcredenceid opened this issue 1 year ago • 2 comments

java.net.URISyntaxException: Illegal character in opaque part at index 2: C:\Users\Dhan\Documents\metadata-resolver/src/main/resources/openapi/status-list.yaml at java.net.URI$Parser.fail (URI.java:2995) at java.net.URI$Parser.checkChars (URI.java:3166) at java.net.URI$Parser.parse (URI.java:3202) at java.net.URI. (URI.java:645) at io.swagger.v3.parser.reference.ReferenceUtils.resolve (ReferenceUtils.java:29) at io.swagger.v3.parser.reference.ReferenceVisitor.resolveSchemaRef (ReferenceVisitor.java:227) at io.swagger.v3.parser.reference.ReferenceVisitor.visitSchema (ReferenceVisitor.java:141) at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseSchema (OpenAPI31Traverser.java:790) at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseSchema (OpenAPI31Traverser.java:856) at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseMediaType (OpenAPI31Traverser.java:603) at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseMap (OpenAPI31Traverser.java:933) at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseRequestBody (OpenAPI31Traverser.java:346) at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseOperation (OpenAPI31Traverser.java:229) at io.swagger.v3.parser.reference.OpenAPI31Traverser.traversePathItem (OpenAPI31Traverser.java:424) at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseMap (OpenAPI31Traverser.java:933) at io.swagger.v3.parser.reference.OpenAPI31Traverser.traversePaths (OpenAPI31Traverser.java:197) at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseOpenApi (OpenAPI31Traverser.java:124) at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverse (OpenAPI31Traverser.java:65) at io.swagger.v3.parser.reference.OpenAPIDereferencer31.dereference (OpenAPIDereferencer31.java:74) at io.swagger.v3.parser.OpenAPIV3Parser.resolve (OpenAPIV3Parser.java:227) at io.swagger.v3.parser.OpenAPIV3Parser.readContents (OpenAPIV3Parser.java:183) at io.swagger.v3.parser.OpenAPIV3Parser.readLocation (OpenAPIV3Parser.java:97) at io.swagger.parser.OpenAPIParser.readLocation (OpenAPIParser.java:16) at org.openapitools.codegen.config.CodegenConfigurator.toContext (CodegenConfigurator.java:686) at org.openapitools.codegen.config.CodegenConfigurator.toClientOptInput (CodegenConfigurator.java:744) at org.openapitools.codegen.plugin.CodeGenMojo.execute (CodeGenMojo.java:940) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289) at org.apache.maven.cli.MavenCli.main (MavenCli.java:193) at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103) at java.lang.reflect.Method.invoke (Method.java:580) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282) at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) [ERROR] Error resolving schema #/components/schemas/StatusVerificationResult

when removed ${project.basedir} from the file path it doesn't through exception is there any specific solution for this ?

dhanushrajcredenceid avatar Dec 17 '24 09:12 dhanushrajcredenceid

Hi, is there any Update on this topic.

My maven build breaks with the new openapi 3.1.0 Spec while using ${project.basedir} on Jenkins and local windows system.

Tholian avatar Jun 04 '25 09:06 Tholian

This seems to be recently fixed in #21300 - @wing328 would be great if you could release this. I expect that #15202 #14648 and some more are the same

jcjveraa avatar Jun 11 '25 11:06 jcjveraa

For those that find this from search, the issue seems to be that backslash characters in Windows paths aren't handled correctly. I was able to fix this by appending .replaceAll("\\\\", "/") to the end of the string parameter to inputPath.set and outputDir.set.

drognisep avatar Aug 18 '25 17:08 drognisep

converting file to uri also works to eliminate backslash, e.g. in my project i have this:

val resourceDir = layout.projectDirectory.dir("src/main/resources")
val openApiSpec = resourceDir.file("openapi.json")

openApiValidate {
    // openapi plugin cannot handle backslash file separators in windows paths
    inputSpec = openApiSpec.asFile.toURI().normalize().toString()
}

masterflitzer avatar Aug 18 '25 21:08 masterflitzer