jshell 使用来自 Maven 存储库的外部依赖

jshell use external dependency from Maven repository

我想使用 JShell 启动一个 Class,它包含在 Maven 存储库中:

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

查看文档,我发现您可以使用以下选项指定类路径:

jshell --class-path=

然而,这意味着您在本地拥有图书馆。我想知道是否可以仅指定 Maven GAV 或 HTTP URL 来从该依赖项中获取 Class。任何的想法 ?谢谢

如果您没有列出所有依赖项的 pom.xml,一个简单的解决方案是符号链接或将您需要的 jar 文件复制到一个目录,例如 $HOME/.java/lib 并启动 jshell,例如这个:

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

如果你在当前目录中确实有pom.xml,你可以这样做:

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

请注意,由于 JDK bug 8177650,您可能不想使用 --class-path 选项。