Hi Paul, I'm not a Groovy expert, but I think the issue is in this line:
java(classname: NCStart.name, fork: true, clonevm: true) As far as I know, the 'clonevm' option only clones the bootstrap classpath (jre/lib folder) and does not clone the system classpath. I think you should somehow explicitly add 'all-deps jar' to the forked JVM. Regards, Sergey On Thu, Dec 3, 2020 at 8:24 AM Paul King <[email protected]> wrote: > > Thanks everyone, > > I could build/download the all-deps jar but it didn't help my example - it > is possibly a classloader issue related to trying to run a forked server > via Ant. > > Just some background, I wanted a single script newbies could run to try out > NLPCraft for a "Data Science with Groovy" workshop I am giving next week. > The script forks a new process via Ant for the server to save the students > having to do that separately. The fork/Ant piece is probably the issue. > I will probably remove that since it is a bit problematic (interleaving > logs etc.) and I don't have the issue when starting the server separately > in the normal way. > But it is working for now, so I'll probably leave it as is for next week. > > There is still an issue with using Gradle dependency management and > IntelliJ with error as shown in earlier email. Using the all-dep jars gets > past that but then hits the (what I think is a) classloader issue: > [java] Error: Could not find or load main class > org.apache.nlpcraft.NCStart > [java] Caused by: java.lang.ClassNotFoundException: > org.apache.nlpcraft.NCStart > [java] Java Result: 1 > > Cheers, Paul. > P.S. Total script (just running light switch example) below: > > import org.apache.nlpcraft.NCStart > import groovy.ant.AntBuilder > import org.apache.nlpcraft.examples.lightswitch.LightSwitchModel > import org.apache.nlpcraft.model.tools.test.NCTestClientBuilder > > import static org.apache.nlpcraft.model.tools.embedded.NCEmbeddedProbe.start > import static org.apache.nlpcraft.model.tools.embedded.NCEmbeddedProbe.stop > > def t = Thread.start { new AntBuilder().with { > java(classname: NCStart.name, fork: true, clonevm: true) { > arg(value: '-server') > } > }} > sleep 35000 // allow server to start up > > start(LightSwitchModel) > > def cli = new NCTestClientBuilder().newBuilder().build() > > cli.open("nlpcraft.lightswitch.ex") > println cli.ask('Turn on the lights in the master bedroom') > println cli.ask("Light 'em all up") > println cli.ask('Make it dark downstairs') // expecting no match > if (cli) { > cli.close() > } > > stop() > t.interrupt() > t.join() > > > With output extracted from logs being: > > [java] Lights are [on] in [master bedroom]. > [java] Lights are [on] in [entire house]. > [java] No matching intent found. > > > > On Thu, Dec 3, 2020 at 1:01 PM Nikita Ivanov <[email protected]> wrote: > > > Paul, > > I believe you can either (a) download source zip, and 'mvn clean package' > > to get this all-deps JAR, (b) download binary ZIP that includes it already, > > and (c) use maven dependency management to get all that sorted out > > automatically. > > Thanks, > > -- > > Nikita Ivanov > > > > > > > > On Wed, Dec 2, 2020 at 2:29 PM Paul King <[email protected]> wrote: > > > >> > >> Hi all, > >> > >> I noticed that the documentation refers to an all jar: > >> > >> apache-nlpcraft-0.7.2-all-deps > >> > >> Is that available somewhere? Or is it something I should build from the > >> sources? > >> > >> I tried a hello world on windows just referencing the normal jar and it > >> fails from Intellij: > >> > >> [image: image.png] > >> > >> I am presuming that this error is due to too many dependencies, I don't > >> have that problem from the command-line. > >> > >> Cheers, Paul. > >> > >>
