From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from MTA-13-3.privateemail.com (mta-13-3.privateemail.com [198.54.118.204]) by sourceware.org (Postfix) with ESMTPS id 1ECFF3858004 for ; Thu, 5 Aug 2021 17:04:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1ECFF3858004 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=eatonphil.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=eatonphil.com Received: from mta-13.privateemail.com (localhost [127.0.0.1]) by mta-13.privateemail.com (Postfix) with ESMTP id 6CEE0180017F for ; Thu, 5 Aug 2021 13:04:09 -0400 (EDT) Received: from mail-vs1-f49.google.com (unknown [10.20.151.239]) by mta-13.privateemail.com (Postfix) with ESMTPA id 513EB18000A4 for ; Thu, 5 Aug 2021 13:04:09 -0400 (EDT) Received: by mail-vs1-f49.google.com with SMTP id x144so3494396vsx.3 for ; Thu, 05 Aug 2021 10:04:09 -0700 (PDT) X-Gm-Message-State: AOAM532LC9vBzV7272yx9QW+vimuL2uOjs7WD1s2T9ikC6UEtbnhWVRn zjdVGHcQ+f983p9xI5d4siP1hCf5sBZjj5+PNrY= X-Google-Smtp-Source: ABdhPJylhJGb83Rwp2B5lb3BUix2RxiV4J8JZ4aglgRXIOGFcGQq5FOkxjca080vaNCuu3vZ1n3Hx3oiHdYyxo19rjg= X-Received: by 2002:a67:2c44:: with SMTP id s65mr1274124vss.29.1628183048545; Thu, 05 Aug 2021 10:04:08 -0700 (PDT) MIME-Version: 1.0 References: <87zgtwv42v.fsf@L440.i-did-not-set--mail-host-address--so-tickle-me> In-Reply-To: From: Phil Eaton Date: Thu, 5 Aug 2021 13:03:57 -0400 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: Example of importing a jar (from ~/.m2/repository) To: Duncan Mak Cc: Arvydas Silanskas , kawa mailing list X-Virus-Scanned: ClamAV using ClamSMTP X-Spam-Status: No, score=-1.0 required=5.0 tests=BAYES_00, HTML_MESSAGE, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: kawa@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Kawa mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Aug 2021 17:04:13 -0000 > 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 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 ra=C5=A1=C4=97: >> >> > 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) i= n >> the >> > > Kawa REPL, then you can just copy or symlink all the needed JAR file= s, >> > > (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.1= 0.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.re= pl >> > > >> > > 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 fro= m >> > > 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 desir= ed >> > > 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 Mav= en >> > > plugin. >> > > >> > > >> > > Greetings. >> > > -- >> > > Alcides Flores Pineda. >> > > >> > > >> > > El mi=C3=A9, ago 04 2021, Phil Eaton escribi=C3=B3: >> > > >> > > > 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=3D"$(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. >