public inbox for kawa@sourceware.org
 help / color / mirror / Atom feed
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


  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).