Как импортировать внешние библиотеки в jshell java 9?
Я пытался понять jshell и шарил, чтобы импортировать внешнюю библиотеку. На сегодняшний день я не мог видеть никаких предложений / решений для этого.
Может кто-нибудь, пожалуйста, дайте мне знать, если уже понял это.
7 ответов
Я пробовал с 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
Укажите classpath спомощью опции 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;
,
- Вы можете загрузить артефакты maven в JShell с помощью этой (модифицированной) версии JShell.
- Он также поддерживает команду /cls для очистки консоли JShell. Смотрите Maven Пример ниже.
Попробуйте и поделитесь своим мнением.
Более простой способ в 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' ':')
Вы можете загрузить внешнюю библиотеку с помощью команды:
/env --class-path /path/to/jar/file
Если вы используете 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' ':')"
Это загрузит все банки в вашем пути к классу.
Примечание. Измените соответственно путь jshell и путь к репозиторию jars.
Если вы используете скрипт вроде (find -name \"*. Jar\" | tr '\n' ':') для объединения, тогда ваш псевдоним будет огромной строкой, которая мне не нравится.
Если вы хотите включить каталог со всеми банками, трюк состоит в том, чтобы сначала использовать двоеточие (:), а затем имя каталога, как показано ниже -
alias java-shell="~/jdk-10.0.2.jdk/Contents/Home/bin/jshell --class-path :<dir-name>/jars/* "
В противном случае он не будет работать должным образом. Я бы хотел, чтобы они сделали его чище.enter code here