Hi, I'm trying to use the new `symbol-processing-c...
# ksp
u
Hi, I'm trying to use the new
symbol-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:
Copy code
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:
Copy code
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 :/
t
Have you tried adding
-Xplugin=/Users/udinic/tmp/ksp-stuff/symbol-processing-api-1.5.21-1.0.0-beta07.jar
?
BTW, although not contributing to this exception/stacktrace,
apclasspath
should be set to the processor. and the compiler classpath
-cp
shouldn't be needed.
i.e.,
-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
u
Cool that did the trick! Thanks for the prompt reply. Maybe it's a good idea to put a sample command in one of the READMEs. As a reference, here's the full command that's working for me now:
Copy code
kotlinc -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.
t
Will update the docs. Thanks for trying it out 😄