From: Phil Eaton <phil@eatonphil.com>
To: Duncan Mak <duncanmak@gmail.com>
Cc: Arvydas Silanskas <nma.arvydas.silanskas@gmail.com>,
kawa mailing list <kawa@sourceware.org>
Subject: Re: Example of importing a jar (from ~/.m2/repository)
Date: Thu, 5 Aug 2021 13:03:57 -0400 [thread overview]
Message-ID: <CAByiw+oYtjBmeV=3c04Cwz1QN4UzxCYn4+NyZik9bZbZvFtihQ@mail.gmail.com> (raw)
In-Reply-To: <CABgWrqo12yVqw5vxpzxjc1TV6JkDsopYJ2Q8AgCcDrL5VRESpA@mail.gmail.com>
> You should use `:` as a classpath separator on linux, not `;`.
Doh! This was my issue. I must just have been looking at examples of people
using Windows. Thanks all.
On Thu, Aug 5, 2021 at 12:11 PM Duncan Mak <duncanmak@gmail.com> wrote:
> I find Arvydas's system to work quite well - I'm no fan of a lot of
> boilerplate, but it really wasn't too bad.
>
> I was experimenting with Kawa+JavaFX+GraalVM and I made a template here,
> really, it's just a pom.xml file:
>
> https://github.com/duncanmak/kawa-javafx-graalvm
>
> I saw that in the Clojure world, there's this deps this:
> https://clojure.org/guides/deps_and_cli
>
> I don't know quite how to design it, but I wonder if Arvydas' Maven work
> can be added on top of the R7RS module definitions to give us something
> similar in Kawa.
>
> What do you think?
>
>
> Duncan.
>
> On Thu, Aug 5, 2021 at 11:55 AM Arvydas Silanskas via Kawa <
> kawa@sourceware.org> wrote:
>
>> Hello,
>>
>> You should use `:` as a classpath separator on linux, not `;`.
>>
>> Arvydas
>>
>> 2021-08-05, kt, 17:02 Phil Eaton <phil@eatonphil.com> rašė:
>>
>> > Hey Alcides!
>> >
>> > Thanks for the response. Why do I need to _both_ cp or symlink a jar
>> into
>> > $HOME/lib and also set -classpath? Why can't I leave it in its current
>> > place and just set -classpath?
>> >
>> > Also, I already set $CLASSPATH to the location of the jar. Isn't that
>> the
>> > same thing as setting -classpath?
>> >
>> > Thanks!
>> > Phil
>> >
>> > On Thu, Aug 5, 2021 at 1:43 AM Alcides Flores Pineda <
>> alcides.fp@gmail.com
>> > >
>> > wrote:
>> >
>> > > 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
>> > >
>> > >
>> >
>>
>
>
> --
> Duncan.
>
prev parent reply other threads:[~2021-08-05 17:04 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
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 [this message]
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='CAByiw+oYtjBmeV=3c04Cwz1QN4UzxCYn4+NyZik9bZbZvFtihQ@mail.gmail.com' \
--to=phil@eatonphil.com \
--cc=duncanmak@gmail.com \
--cc=kawa@sourceware.org \
--cc=nma.arvydas.silanskas@gmail.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).