1

I'd like to use JShell to launch a Class which is contained in a Maven repository:

<dependency>
    <groupId>io.undertow</groupId>
    <artifactId>undertow-core</artifactId>
    <version>2.2.16.Final</version>
</dependency>

Looking at the docs, I can see you can specify the classpath using the following option:

jshell --class-path=

That however implies that you have the library locally. I wonder if it's possible to just specify the Maven GAV or an HTTP URL to pick up the Class from that dependency. Any idea ? Thanks

Carla
  • 3,064
  • 8
  • 36
  • 65

1 Answers1

1

If you don't have a pom.xml with all your dependencies listed, a simple solution is to symlink or copy the jars you need to a single directory, say $HOME/.java/lib and launch jshell like this:

CLASSPATH=$HOME/.java/lib/*:. jshell

If you do have a pom.xml in the current directory, you can do this:

CLASSPATH=`mvn dependency:build-classpath -DincludeTypes=jar -Dmdep.outputFile=/dev/stderr 2>&1 >/dev/null`:target/classes jshell

Note, because of JDK bug 8177650, you probably don't want to use the --class-path option.

Roger Keays
  • 3,117
  • 1
  • 31
  • 23