58

我试图理解 jshell 并摸索着导入外部库。截至目前,我看不到任何建议/解决方案。

有人可以让我知道是否已经解决了这个问题。

4

6 回答 6

69

我尝试9 Build 162 Linux 64-bit了准备:

  • 下载到 guava-19.0.jar_commons-lang3-3.4.jar/opt/libs

可以使用以下选项:

  1. 指定CLASSPATH环境变量:

    $> CLASSPATH="/opt/libs/commons-lang3-3.4.jar:/opt/libs/guava-19.0.jar" bin/jshell

  2. 使用jshell选项指定类路径:

    $> bin/jshell --class-path /opt/libs/guava-19.0.jar:/opt/libs/commons-lang3-3.4.jar

  3. 使用 command 在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;

于 2017-03-30T08:50:06.463 回答
12

在此处输入图像描述

试一试并分享您的反馈。

于 2017-04-28T15:32:00.523 回答
10

在 Maven 中更简单的方法,请参阅在 JShell 中,如何从 Maven 项目中导入类路径:在您的项目目录中,运行:

mvn com.github.johnpoth:jshell-maven-plugin:1.0:run

如果你有一个 maven pom.xml,你可以使用https://github.com/bitterfox/jshell-maven-plugin。这使用所有依赖项作为类路径。该插件当前不在 maven 中,因此您需要克隆 repo: git clone https://github.com/bitterfox/jshell-maven-plugin.git那么

  1. mvn clean install
  2. 将以下内容添加到您的pom.xml

    <build>
    <plugins>
        <plugin>
            <groupId>net.java.openjdk.shinyafox</groupId>
            <artifactId>jshell-maven-plugin</artifactId>
            <version>1.0-SNAPSHOT</version>
        </plugin>
    </plugins>
    </build>
    
  3. 从...开始mvn jshell:compile

于 2018-02-23T06:28:10.020 回答
8

启动 Jshell 从一个目录导入所有 jars

让目录是~/app/java/jars/

jshell --class-path $(ls -d ~/app/java/jars/* | tr '\n' ':')
于 2018-11-05T06:47:16.293 回答
1

如果您使用的是 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' ':')"

这将加载类路径中的所有 jar。

注意:相应地更改 jshell 路径和 jars 存储库路径。

于 2019-09-01T07:31:44.077 回答
0

如果您使用 (find -name "*.jar" | tr '\n' ':') 之类的脚本来连接,那么您的别名将是我不喜欢的巨大字符串。

如果要包含所有 jar 的目录,诀窍是先使用冒号 (:),然后使用目录名称,如下所示 -

alias java-shell="~/jdk-10.0.2.jdk/Contents/Home/bin/jshell --class-path :<dir-name>/jars/* "

否则将无法正常工作。我希望他们应该让它更干净。

于 2019-11-07T02:30:10.360 回答