Udi Cohen
08/13/2021, 10:14 PMsymbol-processing-cmdline
artifact to use KSP from the command line, but I'm getting a classpath related exception so I wanted to verify the command I'm using is correct.
I downloaded all the beta7 artifacts and the playground project, and I'm using the following command:
kotlinc -cp /Users/udinic/tmp/ksp-stuff/symbol-processing-api-1.5.21-1.0.0-beta07.jar:/Users/udinic/tmp/ksp-stuff/bug/playground/test-processor/build/libs/test-processor-1.0-SNAPSHOT.jar \
-Xplugin=/Users/udinic/tmp/ksp-stuff/symbol-processing-cmdline-1.5.21-1.0.0-beta07.jar \
-P plugin:com.google.devtools.ksp.symbol-processing:apclasspath=/Users/udinic/tmp/ksp-stuff/symbol-processing-api-1.5.21-1.0.0-beta07.jar \
-P plugin:com.google.devtools.ksp.symbol-processing:projectBaseDir=/Users/udinic/tmp/ksp-stuff/bug/playground/workload/src \
-P plugin:com.google.devtools.ksp.symbol-processing:classOutputDir=/Users/udinic/tmp/ksp-stuff/bug/playground/workload/build2/classes/kotlin/main \
-P plugin:com.google.devtools.ksp.symbol-processing:kotlinOutputDir=/Users/udinic/tmp/ksp-stuff/bug/playground/workload/build2/generated/ksp/main/kotlin \
-P plugin:com.google.devtools.ksp.symbol-processing:javaOutputDir=/Users/udinic/tmp/ksp-stuff/bug/playground/workload/build2/generated/ksp/main/java \
-P plugin:com.google.devtools.ksp.symbol-processing:resourceOutputDir=/Users/udinic/tmp/ksp-stuff/bug/playground/workload/build2/generated/ksp/main/resources \
-P plugin:com.google.devtools.ksp.symbol-processing:cachesDir=/Users/udinic/tmp/ksp-stuff/bug/playground/workload/build2/generated/ksp/main/cache \
-P plugin:com.google.devtools.ksp.symbol-processing:kspOutputDir=/Users/udinic/tmp/ksp-stuff/bug/playground/workload/build2/ksp \
/Users/udinic/tmp/ksp-stuff/bug/playground/workload/build2/generated/ksp/main/kotlin/ /Users/udinic/tmp/ksp-stuff/bug/playground/workload/src/
But I'm getting an exception:
exception: java.lang.NoClassDefFoundError: com/google/devtools/ksp/processing/KSPLogger
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.google.devtools.ksp.KotlinSymbolProcessingComponentRegistrar.registerProjectComponents(KotlinSymbolProcessingPlugin.kt:90)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.registerExtensionsFromPlugins$cli(KotlinCoreEnvironment.kt:609)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.registerExtensionsFromPlugins(KotlinCoreEnvironment.kt:130)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment.<init>(KotlinCoreEnvironment.kt:170)
....
This class is part of the symbol-processing-api
artifact that I already included in the plugin's classpath. Is there something I'm missing here?
I tried adding all the relevant symbol-processing articats into the kotlinc classpath and the plugin's classpath - still doesn't work :/Ting-Yuan Huang
08/13/2021, 11:12 PM-Xplugin=/Users/udinic/tmp/ksp-stuff/symbol-processing-api-1.5.21-1.0.0-beta07.jar
?Ting-Yuan Huang
08/13/2021, 11:17 PMapclasspath
should be set to the processor. and the compiler classpath -cp
shouldn't be needed.Ting-Yuan Huang
08/13/2021, 11:20 PM-P plugin:com.google.devtools.ksp.symbol-processing:apclasspath=/Users/udinic/tmp/ksp-stuff/bug/playground/test-processor/build/libs/test-processor-1.0-SNAPSHOT.jar
Udi Cohen
08/13/2021, 11:26 PMkotlinc -cp /Users/udinic/tmp/ksp-stuff/symbol-processing-api-1.5.21-1.0.0-beta07.jar:/Users/udinic/projects/ksp-playground4/test-processor/build/libs/test-processor-1.0-SNAPSHOT.jar \
-Xplugin=/Users/udinic/tmp/ksp-stuff/symbol-processing-api-1.5.21-1.0.0-beta07.jar \
-Xplugin=/Users/udinic/tmp/ksp-stuff/symbol-processing-cmdline-1.5.21-1.0.0-beta07.jar \
-P plugin:com.google.devtools.ksp.symbol-processing:apclasspath=/Users/udinic/tmp/ksp-stuff/bug/playground/test-processor/build/libs/test-processor-1.0-SNAPSHOT.jar:/Users/udinic/tmp/ksp-stuff/symbol-processing-api-1.5.21-1.0.0-beta07.jar \
-P plugin:com.google.devtools.ksp.symbol-processing:projectBaseDir=/Users/udinic/projects/ksp-playground4/workload/src/main/java \
-P plugin:com.google.devtools.ksp.symbol-processing:classOutputDir=/Users/udinic/projects/ksp-playground4/workload/build2/classes/kotlin/main \
-P plugin:com.google.devtools.ksp.symbol-processing:kotlinOutputDir=/Users/udinic/projects/ksp-playground4/workload/build2/generated/ksp/main/kotlin \
-P plugin:com.google.devtools.ksp.symbol-processing:javaOutputDir=/Users/udinic/projects/ksp-playground4/workload/build2/generated/ksp/main/java \
-P plugin:com.google.devtools.ksp.symbol-processing:resourceOutputDir=/Users/udinic/projects/ksp-playground4/workload/build2/generated/ksp/main/resources \
-P plugin:com.google.devtools.ksp.symbol-processing:cachesDir=/Users/udinic/projects/ksp-playground4/workload/build2/generated/ksp/main/cache \
-P plugin:com.google.devtools.ksp.symbol-processing:kspOutputDir=/Users/udinic/projects/ksp-playground4/workload/build2/ksp \
/Users/udinic/projects/ksp-playground4/workload/build2/generated/ksp/main/kotlin/ /Users/udinic/projects/ksp-playground4/workload/src/main/java
I built the test-processor
module using gradle so far, but now I'll check how to use command line for this too.Ting-Yuan Huang
08/13/2021, 11:27 PM