Example of importing a jar (from ~/.m2/repository)

Alcides Flores Pineda alcides.fp@gmail.com
Thu Aug 5 05:43:52 GMT 2021


Hi Phil:

If you are just running Kawa from the command line and all that you want
is to use/test some library (from a local Maven repository or not) in the
Kawa REPL, then you can just copy or symlink all the needed JAR files,
(including `kawa.jar`) into a specific directory, and then tell java to
run them from there. 

For example, suppose I want to use the Apache Commons Codec
library from my local Maven repo ($HOME/.m2/repository) in a Kawa REPL,
then, what I do is the following:

1. I copy or symlink the required file along with `kawa.jar`)
($HOME/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar)
into a directory (say for example $HOME/lib).

2. From there run as:
cd $HOME/lib
java -cp $HOME/lib/commons-codec-1.10.jar:$HOME/lib/kawa.jar kawa.repl

3. Now I can use the DigestUtils class from the Kawa repl as:
#|kawa:1|# (import (class org.apache.commons.codec.digest DigestUtils))
#|kawa:2|# (DigestUtils:md5-hex "mystring")
169319501261c644a58610f967e8f9d0

The same stuff applies if you want to run/use it from a Kawa scheme script.

On the other side, if you need/want to use more than a library/JAR (say 
a framework like Spring) with Kawa in a Maven project and run it from 
there, then I suggest you to do the following:

1. Use the Kawa Maven plugin that Arvydas wrote last year to compile
   your Kawa scheme files:
   * https://github.com/arvyy/kawa-maven-plugin

2. Configure your POM (pom.xml) in such a way that it uses the desired
   libraries/dependencies and the `kawa.jar` to compile and run your Kawa scheme
   files, for example with the Maven Ant-Run plugin and the Exec Maven plugin.


Greetings.
-- 
Alcides Flores Pineda.


El mié, ago 04 2021, Phil Eaton escribió:

> Hey folks,
>
> New to Java and Kawa. I'm trying to import a web server library that I
> installed through maven.
>
> The minimal program I'm running is this (test.scm):
>
> (import (class io.jooby Context))
>
>
> And I run it by making all maven jars available in the CLASSPATH:
>
> CLASSPATH="$(find ~/.m2/repository -name '*.jar' | paste -sd ';');." kawa
> test.scm
>
>
> But I get:
>
> test.scm:2:16: no class found named io.jooby.Context
>
>
> The io.jooby:jooby jar is
> at ~/.m2/repository/io/jooby/jooby/2.10.0/jooby-2.10.0.jar.
>
> What more should I do for Kawa to find the class?
>
> Thanks!
> Phil



More information about the Kawa mailing list