Я пытался понять jshell и возился с импортом внешней библиотеки. На сегодняшний день я не видел никаких предложений/решений для этого.
Может кто-нибудь, пожалуйста, дайте мне знать, если уже понял это.
Я пытался понять jshell и возился с импортом внешней библиотеки. На сегодняшний день я не видел никаких предложений/решений для этого.
Может кто-нибудь, пожалуйста, дайте мне знать, если уже понял это.
Я пробовал с 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;
.
\\
, либо пути с прямой косой чертой /
, разделенные точкой с запятой ;
, например, /env --class-path c:/path/to/jars/file.jar;c:\\another\\path\\to\\jars\\file.jar
- person Thomas Taylor; 30.06.2020
Попробуйте и поделитесь своим мнением.
Более простой способ в maven, см. В JShell, как импортировать classpath из проекта Maven: в каталоге вашего проекта запустите:
mvn com.github.johnpoth:jshell-maven-plugin:1.0:run
Если у вас есть maven pom.xml
, вы можете использовать https://github.com/bitterfox/jshell-maven-plugin. Это использует все зависимости в качестве пути к классам. Плагин в настоящее время не находится в maven, поэтому вам нужно клонировать репо: git clone https://github.com/bitterfox/jshell-maven-plugin.git
. Затем,
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, импортируя все банки из каталога
Пусть каталог ~/app/java/jars/
jshell --class-path $(ls -d ~/app/java/jars/* | tr '\n' ':')
Если вы используете оболочку Fish, вы можете установить псевдоним в файле конфигурации fish. Вот как вы можете это сделать. В конфигурации вашей рыбы ( ~/.config/fish/config.fish ) добавьте
alias jshell "~/.jenv/versions/12.0.1/bin/jshell --class-path (find ~/.m2/repository/ -name \"*.jar\" | tr '\n' ':')"
Это загрузит все банки в вашем пути к классу.
Примечание. Измените путь jshell и путь к репозиторию jars соответствующим образом.
jshell --class-path $(find ~/.m2/repository/ -name "*.jar" | tr '\n' ':')
убедитесь, что у вас не слишком много банок, иначе вы получите bash: /usr/bin/jshell: Argument list too long
- person prayagupd; 08.02.2020
Если вы используете скрипт типа (find -name *.jar | tr '\n' ':') для объединения, то ваш псевдоним будет огромной строкой, которая мне не нравится.
Если вы хотите включить каталог со всеми jar-файлами, хитрость заключается в том, чтобы сначала использовать двоеточие (:), а затем имя каталога, как показано ниже:
alias java-shell="~/jdk-10.0.2.jdk/Contents/Home/bin/jshell --class-path :<dir-name>/jars/* "
В противном случае он не будет работать должным образом. Я бы хотел, чтобы они сделали его чище.