-
Notifications
You must be signed in to change notification settings - Fork 125
Open
Description
I have a simple setup where packaging a script with a local dependency fails, because the local dependency is not included in the package. Here is the project:
$ tree .
.
├── libs
│ └── congocc.jar
└── pkgtest.ktsThe script just imports a class in congocc.jar and prints it:
import org.congocc.core.Grammar
println(Grammar::class.java)which runs fine when invoked like this:
$ KSCRIPT_DIRECTORY_ARTIFACTS=$PWD/libs kscript pkgtest.kts
class org.congocc.core.GrammarHowever, packaging it fails:
$ KSCRIPT_DIRECTORY_ARTIFACTS=$PWD/libs kscript -cp pkgtest.kts
Cleaning up cache...
[kscript] Packaging script 'pkgtest' into standalone executable...
[kscript] Packaged script 'pkgtest' available at path:
[ksript] /home/vinay/.cache/kscript/package_9c6421c9540b73cf0ccfbcfd1405be52/build/libs/pkgtest
$ /home/vinay/.cache/kscript/package_9c6421c9540b73cf0ccfbcfd1405be52/build/libs/pkgtest
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at Main_Pkgtest$Companion.main(Main_Pkgtest.kt:6)
at Main_Pkgtest.main(Main_Pkgtest.kt)
Caused by: java.lang.NoClassDefFoundError: org/congocc/core/Grammar
at kscript.scriplet.Pkgtest.<init>(Pkgtest.kts)
... 6 more
Caused by: java.lang.ClassNotFoundException: org.congocc.core.Grammar
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:527)
... 7 moreThis is because the build.gradle.kts is missing the dependency. Here is the relevant portion of build.gradle.kts:
dependencies {
implementation(files("/home/vinay/.cache/kscript/jar_9c6421c9540b73cf0ccfbcfd1405be52/scriplet.jar"))
implementation("org.jetbrains.kotlin:kotlin-stdlib")
implementation("org.jetbrains.kotlin:kotlin-script-runtime:1.7.21")
}There's no mention of congocc.jar, even though it is contained in the relevant dependencies file:
$ cat ~/.cache/kscript/dependencies_9c6421c9540b73cf0ccfbcfd1405be52/dependencies.content
/home/vinay/projects/scratch/kscript/libs/congocc.jarAdding implementation(files("/home/vinay/projects/scratch/kscript/libs/congocc.jar")) manually to the build script and rerunning gradle makeScript solves the problem, so it's just in the construction of build.gradle.kts where the problem seems to be.
Metadata
Metadata
Assignees
Labels
No labels