如何在jshell java 9中导入外部库?

时间:2017-03-30 07:17:10

标签: java-9 jshell

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

有人可以告诉我,如果已经弄明白的话。

6 个答案:

答案 0 :(得分:46)

我尝试使用9 Build 162 Linux 64-bit进行准备:

  • 已下载guava-19.0.jarcommons-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 选项指定classpath:

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

  3. 使用命令/env/reset/reload jshell 会话中配置评估上下文(这些命令不同,您可以查看帮助信息),以/env为例:

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

  4. 然后您就可以import org.apache.commons.lang3.StringUtilsimport com.google.common.base.Optional;

答案 1 :(得分:9)

  • 您可以通过this (modified) version of JShell maven artifacts 加载到JShell中。
  • 它还支持清除JShell控制台 / cls 命令。请参阅下面的Maven示例。

enter image description here

试一试并分享您的反馈意见。

答案 2 :(得分:7)

在maven中更简单的方法,请参阅In JShell, how to import classpath from a Maven project:在项目目录中,运行:

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.gitThen

  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

  4. 开头

答案 3 :(得分:3)

开始Jshell从目录导入所有jars

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

jshell --class-path $(ls -d ~/app/java/jars/* | tr '\n' ':')

答案 4 :(得分:0)

如果使用的是Fish shell,则可以在fish的配置文件中设置别名。这是您的操作方法。在您的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存储库路径。

答案 5 :(得分:0)

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

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

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

否则它将无法正常工作。我希望他们应该使它更清洁。 enter code here