如何在jshell中导入外部库java 9?
How to import external libraries in jshell java 9?
我试图理解 jshell,但无法导入外部库。到目前为止,我看不到任何 suggestion/solution 的内容。
如果有人已经解决了这个问题,请告诉我。
我尝试了 9 Build 162 Linux 64-bit
准备工作:
- 已将
guava-19.0.jar
和 commons-lang3-3.4.jar
下载到
/opt/libs
以下选项可用:
指定CLASSPATH
环境变量:
$> CLASSPATH="/opt/libs/commons-lang3-3.4.jar:/opt/libs/guava-19.0.jar" bin/jshell
使用 jshell 选项指定类路径:
$> bin/jshell --class-path /opt/libs/guava-19.0.jar:/opt/libs/commons-lang3-3.4.jar
在 jshell 会话中使用命令 /env
、/reset
或 /reload
配置评估上下文(这些命令是不同的,可以查看帮助信息),以/env
为例:
jshell> /env -class-path /opt/libs/commons-lang3-3.4.jar:/opt/libs/guava-19.0.jar
然后您可以 import org.apache.commons.lang3.StringUtils
或 import com.google.common.base.Optional;
。
- 您可以通过 this (modified) version of JShell 将 maven 工件 加载到 JShell 中。
- 它还支持 /cls 命令来 清除 JShell 控制台 。请参阅下面的 Maven 示例。
尝试一下并分享您的反馈。
maven 中更简单的方法,请参阅 :在您的项目目录中,运行:
mvn com.github.johnpoth:jshell-maven-plugin:1.0:run
如果你有maven pom.xml
,你可以使用https://github.com/bitterfox/jshell-maven-plugin. This uses all dependencies as the classpath. The plugin is not currently in maven, so you need to clone the repo: git clone https://github.com/bitterfox/jshell-maven-plugin.git
. Then,
mvn clean install
将以下内容添加到您的 pom.xml
中:
<build>
<plugins>
<plugin>
<groupId>net.java.openjdk.shinyafox</groupId>
<artifactId>jshell-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
</plugin>
</plugins>
</build>
开始于mvn jshell:compile
启动 Jshell 从目录导入所有 jar
让目录为~/app/java/jars/
jshell --class-path $(ls -d ~/app/java/jars/* | tr '\n' ':')
如果您使用的是 Fish shell,则可以在您的 fish 配置文件中设置别名。这是你如何做到的。在你的鱼配置中( ~/.config/fish/config.fish ),添加
alias jshell "~/.jenv/versions/12.0.1/bin/jshell --class-path (find ~/.m2/repository/ -name \"*.jar\" | tr '\n' ':')"
这将加载您的 class 路径中的所有 jar。
注意:相应地更改 jshell 路径和 jars 存储库路径。
如果你使用像 (find -name "*.jar" | tr '\n' ':') 这样的脚本来连接,那么你的别名将是我不喜欢的巨大字符串。
如果你想包含一个包含所有 jar 的目录,技巧是先使用冒号 (:),然后是目录名称,如下所示 -
alias java-shell="~/jdk-10.0.2.jdk/Contents/Home/bin/jshell --class-path :<dir-name>/jars/* "
否则无法正常使用。我希望他们应该让它更干净。
我试图理解 jshell,但无法导入外部库。到目前为止,我看不到任何 suggestion/solution 的内容。
如果有人已经解决了这个问题,请告诉我。
我尝试了 9 Build 162 Linux 64-bit
准备工作:
- 已将
guava-19.0.jar
和commons-lang3-3.4.jar
下载到/opt/libs
以下选项可用:
指定
CLASSPATH
环境变量:$> CLASSPATH="/opt/libs/commons-lang3-3.4.jar:/opt/libs/guava-19.0.jar" bin/jshell
使用 jshell 选项指定类路径:
$> bin/jshell --class-path /opt/libs/guava-19.0.jar:/opt/libs/commons-lang3-3.4.jar
在 jshell 会话中使用命令
/env
、/reset
或/reload
配置评估上下文(这些命令是不同的,可以查看帮助信息),以/env
为例:jshell> /env -class-path /opt/libs/commons-lang3-3.4.jar:/opt/libs/guava-19.0.jar
然后您可以 import org.apache.commons.lang3.StringUtils
或 import com.google.common.base.Optional;
。
- 您可以通过 this (modified) version of JShell 将 maven 工件 加载到 JShell 中。
- 它还支持 /cls 命令来 清除 JShell 控制台 。请参阅下面的 Maven 示例。
尝试一下并分享您的反馈。
maven 中更简单的方法,请参阅
mvn com.github.johnpoth:jshell-maven-plugin:1.0:run
如果你有maven pom.xml
,你可以使用https://github.com/bitterfox/jshell-maven-plugin. This uses all dependencies as the classpath. The plugin is not currently in maven, so you need to clone the repo: git clone https://github.com/bitterfox/jshell-maven-plugin.git
. Then,
mvn clean install
将以下内容添加到您的
pom.xml
中:<build> <plugins> <plugin> <groupId>net.java.openjdk.shinyafox</groupId> <artifactId>jshell-maven-plugin</artifactId> <version>1.0-SNAPSHOT</version> </plugin> </plugins> </build>
开始于
mvn jshell:compile
启动 Jshell 从目录导入所有 jar
让目录为~/app/java/jars/
jshell --class-path $(ls -d ~/app/java/jars/* | tr '\n' ':')
如果您使用的是 Fish shell,则可以在您的 fish 配置文件中设置别名。这是你如何做到的。在你的鱼配置中( ~/.config/fish/config.fish ),添加
alias jshell "~/.jenv/versions/12.0.1/bin/jshell --class-path (find ~/.m2/repository/ -name \"*.jar\" | tr '\n' ':')"
这将加载您的 class 路径中的所有 jar。
注意:相应地更改 jshell 路径和 jars 存储库路径。
如果你使用像 (find -name "*.jar" | tr '\n' ':') 这样的脚本来连接,那么你的别名将是我不喜欢的巨大字符串。
如果你想包含一个包含所有 jar 的目录,技巧是先使用冒号 (:),然后是目录名称,如下所示 -
alias java-shell="~/jdk-10.0.2.jdk/Contents/Home/bin/jshell --class-path :<dir-name>/jars/* "
否则无法正常使用。我希望他们应该让它更干净。