67 votes

Comment importer des bibliothèques externes dans jshell java 9 ?

J'essayais de comprendre jshell et j'ai tâtonné pour importer une bibliothèque externe. A ce jour, je n'ai pu voir aucune suggestion/solution pour cela.

Quelqu'un peut-il me faire savoir s'il a déjà trouvé la solution ?

2 votes

76voto

shizhz Points 5893

J'ai essayé avec 9 Build 162 Linux 64-bit avec préparation :

  • Téléchargé guava-19.0.jar et commons-lang3-3.4.jar à /opt/libs

Les options suivantes sont disponibles :

  1. Précisez CLASSPATH variable d'environnement :

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

  2. Spécifiez le chemin de classe avec jshell option :

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

  3. Configurer le contexte d'évaluation dans jshell session avec la commande /env , /reset ou /reload (ces commandes sont différentes, vous pouvez vérifier avec son info d'aide), prenez /env à titre d'exemple :

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

Et ensuite vous pouvez soit import org.apache.commons.lang3.StringUtils ou import com.google.common.base.Optional; .

2 votes

Sous Windows 7, cela fonctionne de la même manière : définissez la variable d'environnement CLASSPATH, qui pointe vers le fichier jar, puis utilisez 'import' pour importer la classe/le paquet.

0 votes

@Prags J'essaie d'utiliser les options 2 et 3 dans l'environnement Windows 10 avec Jshell, cela ne fonctionne pas. Devons-nous faire quelque chose d'autre pour que cela fonctionne dans Windows 10 ?

0 votes

@Beast pouvez-vous vérifier ceci, cela pourrait vous aider. java67.com/2012/08/

13voto

Pahari chora Points 500
  • Vous pouvez charger artefacts maven dans JShell à travers cette version (modifiée) de JShell .
  • Il prend également en charge /cls pour effacer la console JShell . Voir l'exemple Maven ci-dessous.

enter image description here

Essayez et partagez votre avis.

4 votes

"/resolve" n'est pas disponible dans la version Java 9 de JShell.

1 votes

Oui /resolve et /cls n'existent pas dans Java 9. Nous les avons ajoutés dans notre version de JShell.

12voto

user1587329 Points 91

Une méthode plus simple dans maven, voir En JShell, comment importer le classpath d'un projet Maven ? : Dans le répertoire de votre projet, exécutez :

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

Si vous avez un maven pom.xml vous pouvez utiliser https://github.com/bitterfox/jshell-maven-plugin . Cela utilise toutes les dépendances comme classpath. Le plugin n'est pas actuellement dans maven, vous devez donc cloner le repo : git clone https://github.com/bitterfox/jshell-maven-plugin.git . Puis ,

  1. mvn clean install

  2. ajoutez ce qui suit à votre 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. commencer par mvn jshell:compile

8voto

S. M. AMRAN Points 69

Démarrer Jshell en important tous les jars d'un répertoire

Le répertoire Let est ~/app/java/jars/

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

1voto

Dinesh Chander Points 107

Si vous utilisez le shell Fish, vous pouvez définir l'alias dans votre fichier de configuration Fish. Voici comment vous pouvez le faire. Dans votre fichier de configuration Fish ( ~/.config/fish/config.fish ), ajoutez

alias jshell "~/.jenv/versions/12.0.1/bin/jshell --class-path (find ~/.m2/repository/ -name \"*.jar\" | tr '\n' ':')"

Cela chargera tous les bocaux dans votre chemin de classe.

Note : Changez le chemin de jshell et le chemin du dépôt de jars en conséquence.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X