J'ai un script CLI java qui convertit les noms rgb en hexcodes (par exemple 144 132 146 devient # 908492). Cependant, je veux être capable de l'exécuter à partir de n'importe quel terminal. Je mets un script bash dans le même dossier afin qu'il puisse exécuter le fichier:bash: Exécuter un autre programme dans le répertoire courant en cours d'exécution à partir du chemin
Le script bash est assez simple, il suffit:
#!/bin/bash
java rgb2hexConv $1 $2 $3
Cependant, quand je lance le code à travers le chemin, je reçois des erreurs lié au fichier rgb2hexConv n'étant pas trouvé.
Schéma:
/
/home/
/home/me/
/home/me/someRandomDir/ (running from here does not work)
/home/me/utils/ (in path) (running from here works)
- rgb2hex (bash script)
- rgb2hexConv.class (java program)
Je pense qu'il cherche rgb2hexConv dans/home/moi/someRandomDir/par opposition à/home/moi/utils /. Est-il possible d'obtenir le répertoire du script bash?
EDIT: Modification du script pour utiliser ./rgb2hexConv donne les éléments suivants:
Exception in thread "main" java.lang.NoClassDefFoundError: //rgb2hexConv
Caused by: java.lang.ClassNotFoundException: ..rgb2hexConv
// long stack trace removed
Could not find the main class: ./rgb2hexConv. Program will exit.
(Le bit à la fin de la première ligne n'est pas un commentaire, mais la production réelle)
EDIT 2 : Après une tentative à l'aide de $ 0, la sortie suivante a été recieved
Exception dans le thread "principal" java.lang.NoClassDefFoundError:/home/moi/utils/rgb2hex/rgb2hexConv causée par: java.lang.ClassNotFoundException: .home .me.utils.rgb2hex.rgb2hexConv // Long Stack Trace Impossible de trouver la classe principale:/home/me/utils/rgb2hex/rgb2hexConv. Le programme va sortir.
Deux choses à ce sujet:
- $ 0 contient le nom du fichier ainsi qu'un répertoire
- La commande
java
semble remplacer «/» par « ». La variable
$ 0 comprend le nom de fichier complet ainsi que le dir. – Macha
Merci de l'avoir signalé. Je l'ai corrigé. –
J'ai essayé ça et ça n'a pas marché. J'ai donc recherché les docs pour la commande java et cela ne fonctionne que pour le répertoire courant. Si vous voulez utiliser un répertoire différent, vous devez le dire en utilisant l'argument -cp. – Macha