Je jouais avec JShell après la sortie de Java 9, et j'ai essayé d'importer un paquet que j'avais fait. Comme l'ensemble de l'application pour laquelle je code est contenu dans ce paquet, chaque classe sauf une (que je n'ai pas encore codée) est paquet-private. Mon classpath est correct, mais je ne peux toujours utiliser aucun des types déclarés dans le paquet dans JShell (il lance une erreur "can not find symbol"). Ai-je besoin de les rendre publics pour qu'ils soient accessibles, ou est-il possible de tester les classes private-package?? Voici le code exact que j'ai essayé.Importer des classes Private-Package vers JShell
Mon répertoire courant est
C:\Users\Sylvaenn\OneDrive\Documents\Programs\Java\src
Mon chemin de classe est
C:\Users\Sylvaenn\OneDrive\Documents\Programs\Java\cls
et le répertoire du paquet (pour le bytecode) est
C:\Users\Sylvaenn\OneDrive\Documents\Programs\Java\cls\collatz
CollatzSequence
est un package- classe privée contenue dans collatz
.
PS C:\Users\Sylvaenn> cd OneDrive\Documents\Programs\Java\src
PS C:\Users\Sylvaenn\OneDrive\Documents\Programs\Java\src> jshell
| Welcome to JShell -- Version 9
| For an introduction type: /help intro
jshell> import collatz.*;
jshell> CollatzSequence seq = new CollatzSequence(BigInteger.ONE);
| Error:
| cannot find symbol
| symbol: class CollatzSequence
| CollatzSequence seq = new CollatzSequence(BigInteger.ONE);
| ^-------------^
| Error:
| cannot find symbol
| symbol: class CollatzSequence
| CollatzSequence seq = new CollatzSequence(BigInteger.ONE);
| ^-------------^
jshell> /imports
| import java.io.*
| import java.math.*
| import java.net.*
| import java.nio.file.*
| import java.util.*
| import java.util.concurrent.*
| import java.util.function.*
| import java.util.prefs.*
| import java.util.regex.*
| import java.util.stream.*
| import collatz.*
jshell>
Pourriez-vous s'il vous plaît partager un code reproductible pour le scénario? Cela aiderait à clarifier la question. – nullpointer
Je l'ai juste inclus dans mon édition. –