From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x102d.google.com (mail-pj1-x102d.google.com [IPv6:2607:f8b0:4864:20::102d]) by sourceware.org (Postfix) with ESMTPS id 23225386EC42 for ; Thu, 5 Aug 2021 16:12:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 23225386EC42 Received: by mail-pj1-x102d.google.com with SMTP id cl16-20020a17090af690b02901782c35c4ccso6936989pjb.5 for ; Thu, 05 Aug 2021 09:12:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=f4ndNozlCoTyY97TpbVWZv0ZEWgQLd4V43mYLLxPZks=; b=VyZ9AB/HgH9WCQO0h33FtU2DSP0m9fzO2j4Duo7YIM6ARC5cPIPvbxp0FdVOPAzRNv XBvIBfUlsxiDFM3K2aRn1H72eDOvBwQcuTWpp1Jys5JUEylTxupTTFf6Xi/MIi3K+580 wdYUHrFOUFt3WfYVguBBbsWrpEXYnz9i++0mc3rUOKCR2Og/eKXzKCzlrLuJWSvyr43/ 7iodAynUJiTxyDGIPQLRwtFn9M9qAs4xeSj7JenCUsP93cuyBH30kP+tyCS4lZ1yxg0L H51NWQGHRsoqvlmo11Ordl5rxqYAe1EyUCOM5jD2aUOxhPzgQzqVcP6zCrQ9muPoeOl6 EYeA== X-Gm-Message-State: AOAM532MXmRzPX2UPFDL79CR0joyIM7zAt311bvEADRZXC0ecNjNZwp5 KjKs2CUPxnzKTFJnn8IlSXOIgYy/PGEodTA5k10= X-Google-Smtp-Source: ABdhPJw2kSw4Jpk45xZPfiVWAx/75LlP01Pk47+6kCSAD5QUG+o9SxJW+YBq1hCOIYPZPoteFqBBW4ORdD+Rbl4f4nM= X-Received: by 2002:a17:90a:6b0e:: with SMTP id v14mr12707369pjj.189.1628179938043; Thu, 05 Aug 2021 09:12:18 -0700 (PDT) MIME-Version: 1.0 References: <87zgtwv42v.fsf@L440.i-did-not-set--mail-host-address--so-tickle-me> In-Reply-To: From: Duncan Mak Date: Thu, 5 Aug 2021 12:11:41 -0400 Message-ID: Subject: Re: Example of importing a jar (from ~/.m2/repository) To: Arvydas Silanskas Cc: Phil Eaton , kawa mailing list X-Spam-Status: No, score=-0.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, FREEMAIL_REPLY, HTML_MESSAGE, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=no 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 16:12:21 -0000 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 in= to > > $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 t= he > > 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 REP= L, > > > 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.rep= l > > > > > > 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 (s= ay > > > 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 desire= d > > > 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 Mave= n > > > 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 tha= t > 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 > > > > > > > > > --=20 Duncan.