Skip to content

Classes with over 256 parameters throw a runtime exception  #293

@jplewa

Description

@jplewa

The resource aws:index/ProviderEndpoint:ProviderEndpoint has 384 parameters. JVM allows only 256 parameters. In Kotlin there's no compilation exception, but there is a runtime exception when trying to call its constructor in build:

Exception in thread "main" java.lang.ClassFormatError: Too many arguments in method signature in class file org/virtuslab/pulumikotlin/codegen/ProviderEndpointArgs
	at java.base/java.lang.ClassLoader.defineClass1(Native Method)
	at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013)
	at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
	at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862)
	at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681)
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	at org.virtuslab.pulumikotlin.codegen.MainKt.main(Main.kt:404)

Possible solutions:

  • using a mutable class,
  • replacing this class with a type alias over a map and creating extension methods for getters (I simply cannot take credit for this one, @prolativ).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions