From: Alcides Flores Pineda <alcides.fp@gmail.com>
To: Phil Eaton <phil@eatonphil.com>
Cc: kawa@sourceware.org
Subject: Re: Example of importing a jar (from ~/.m2/repository)
Date: Thu, 05 Aug 2021 00:43:52 -0500 [thread overview]
Message-ID: <87zgtwv42v.fsf@L440.i-did-not-set--mail-host-address--so-tickle-me> (raw)
In-Reply-To: <CAByiw+rAHuNuTbD412WoW5bdsdOHg+wSF3cvOBfAa3Y5tKXhrw@mail.gmail.com> (Phil Eaton's message of "Wed, 4 Aug 2021 20:21:07 -0400")
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
next prev parent reply other threads:[~2021-08-05 5:43 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-05 0:21 Phil Eaton
2021-08-05 5:43 ` Alcides Flores Pineda [this message]
2021-08-05 14:02 ` Phil Eaton
2021-08-05 15:54 ` Arvydas Silanskas
2021-08-05 16:11 ` Duncan Mak
2021-08-05 17:03 ` Phil Eaton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87zgtwv42v.fsf@L440.i-did-not-set--mail-host-address--so-tickle-me \
--to=alcides.fp@gmail.com \
--cc=kawa@sourceware.org \
--cc=phil@eatonphil.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).