Greetings,

For my case, I think I have found a perfect solution.  I created the
following bash script named run:

-------------------------------

#!/bin/bash

# This script allows the running of a Groovy file in the context of the
# entire system.

JAR_PATH=`dirname $0`/../lib
CLASSES_PATH=`dirname $0`/../build/web/WEB-INF/classes

THE_CLASSPATH=.
for i in `ls $JAR_PATH/*.jar`
do
    THE_CLASSPATH=${THE_CLASSPATH}:${i}
done

THE_CLASSPATH=${THE_CLASSPATH}:${CLASSES_PATH}

java -cp ${THE_CLASSPATH} groovy.ui.GroovyMain "$@"


------------------------------------

I am then able to run a groovy file in the context of the rest of my system
(this system has 9500 classes and 89 jar files).  I can now simply do:

run MyGroovyFile

Thanks!

Blake



On Mon, Nov 22, 2021 at 6:09 AM Blake McBride <blake1...@gmail.com> wrote:

> Hi Paul,
>
> That worked great.  Thank you!
>
> However, it would be very convenient if I could specify the -cp using the
> "java -jar" method like so:
>
> java -jar groovy-3.0.9-indy.jar -cp . TestGroovy
>
> The reason is that the example I gave you is a simplified example of what
> I am actually doing.  Although the method you gave me does work in my
> situation too, it is situationally somewhat awkward.  It would be very
> convenient if the groovy jar accepted and used the -cp command.  Is there
> any way I can do that?
>
> (Just FYI, I am working on https://github.com/blakemcbride/Kiss   In
> particular, see section 7 of
> https://htmlpreview.github.io/?https://github.com/blakemcbride/Kiss/blob/master/manual/man/index.html
> )
>
> Thanks!
>
> Blake
>
>
>
>
> On Mon, Nov 22, 2021 at 1:19 AM Paul King <pa...@asert.com.au> wrote:
>
>> Hi Blake,
>>
>> If you add the following line into your TestGroovy script:
>> println System.getProperty('java.class.path')
>> you will see that "." from the -cp commandline switch to java isn't
>> passed through to Groovy when using java -jar.
>>
>> You can instead use (semicolon would be the path separator on Windows):
>> java -cp /path/to/groovy/jar:. groovy.ui.GroovyMain TestGroovy
>>
>> or:
>> /path/to/groovy TestGroovy
>>
>>
>>
>> Cheers, Paul.
>>
>> On Mon, Nov 22, 2021 at 1:49 PM Blake McBride <blake1...@gmail.com>
>> wrote:
>> >
>> > Greetings,
>> >
>> > I can run a simple Groovy class (TestGroovy.groovy) without explicitly
>> compiling it as follows:
>> >
>> > java -jar groovy-3.0.9-indy.jar TestGroovy
>> >
>> > I have a compiled Java class file named TestJava.class
>> >
>> > I am not using any package declarations.  everything is in the current
>> directory.
>> >
>> > I changed TestGroovy.groovy to call my TestJava.class file, however,
>> this is what I am getting:
>> >
>> > $ java -jar groovy-3.0.9-indy.jar TestGroovy
>> > org.codehaus.groovy.control.MultipleCompilationErrorsException: startup
>> failed:
>> > /home/blake/groovy/TestGroovy.groovy: 7: Apparent variable 'TestJava'
>> was found in a static scope but doesn't refer to a local variable, static
>> field or class. Possible causes:
>> > You attempted to reference a variable in the binding or an instance
>> variable from a static context.
>> > You misspelled a classname or statically imported field. Please check
>> the spelling.
>> > You attempted to use a method 'TestJava' but left out brackets in a
>> place not allowed by the grammar.
>> >  @ line 7, column 3.
>> >     TestJava.javaMethod()
>> >      ^
>> >
>> > 1 error
>> >
>> > I also tried:   java -cp . -jar groovy-3.0.9-indy.jar -cp .  TestGroovy
>> > With the same error.
>> >
>> > Basically, I am trying to run a Groovy file and have it call a Java
>> class that I am supplying.
>> >
>> > I am attaching the Java and Groovy files.  Sure appreciate any help.
>> >
>> > Blake McBride
>> >
>>
>

Reply via email to