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 选项。
我想使用 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 选项。