bash: jar: command not found
Je suis en utilisant Jenkins pour déployer le construire.
Nous avons besoin d'extraire des fichiers à partir d'un .la guerre dans un répertoire.
Nous avons une .xml fichier qui comprend des commandes pour extraire les fichiers de l' .la guerre fichier et démarrer le serveur.
La construction est en cours de création correctement mais le .la guerre d'extraction n'est pas le cas et le dossier de destination est vide. Le Jenkins Console affiche la sortie suivante:
[sshexec] bash: jar: command not found
Que de lire les autres réponses, j'ai mis le PATH
correctement dans .bashrc ou dans .profil mais je suis toujours confronté au même problème.
Êtes-vous sûr que vous avez un JDK installé et pas un JRE?
Le JDK est Installé (jdk1.6.0_33) et JRE est présent à l'intérieur de dossier JDK, jre privé
Si vous n'avez pas le
Le JDK est Installé (jdk1.6.0_33) et JRE est présent à l'intérieur de dossier JDK, jre privé
Si vous n'avez pas le
jar
commande sur votre système, il n'est pas "correctement" façon de résoudre le PATH
. Si elle n'existe pas sur votre système, vous n'avez pas défini le PATH
"correctement". Je ne voulais pas supprimer cette phrase lors de la modification de votre question, mais vous devriez probablement vous préciser que vous voulez dire, ou peut-être juste prendre.OriginalL'auteur Satish | 2014-05-08
Vous devez vous connecter pour publier un commentaire.
Installer Java devel comme suit:
apt-get install openjdk-7-jdk
ou l'un des alternatives. Voir aussi wiki.debian.org/JavaPackageOriginalL'auteur Smartop
"[Sshexec]" raconte-moi vous utilisez un plugin Jenkins pour exécuter une commande sur un hôte distant.
Cela signifie généralement Jenkins exécute (ou d'autre chose par la mise en œuvre du protocole SSH en mode natif):
Ce qui se passe ici est le démon sshd sur l'hôte distant va exécuter le shell par défaut de l'utilisateur et de demander au shell à exécuter la ligne de commande. La coquille est généralement pas exécutée comme un "login shell", ce qui signifie que le shell va sauter les étapes d'initialisation qui shells de login normalement lorsque l'utilisateur se connecte de manière interactive.
Vous pouvez étudier
man (name of your shell)
pour voir exactement quelle est la différence entre un shell exécuté avec-l
option et exécuté sans elle. Dans le cas de bash il signifie essentiellement.profile
et.bashrc
ne sera pas exécuté, de sorte que tout le CHEMIN modifications que vous pourriez avoir, il y aura pas lieu.Je pense que votre meilleur pari est de fournir le chemin d'accès complet à la
jar
de commande lorsque vous voulez exécuter.OriginalL'auteur sti
Pour être plus précis,
JAVA
bin n'est pas dans votrePATH
variable. Ajouter àPATH
variable. Afin de rechercher les fichiers exécutables, les OS ont besoin d'une liste de répertoires à regarder. Donc, Ajouter le répertoire qui contient jarretool in the
CHEMIN " variable d'environnementRemarque : Pour Windows, séparateur de Chemin est (
;
) et pour les systèmes Unix, séparateur de Chemin est (:
)Êtes-vous en mesure d'exécuter de cette façon -
/usr/java/jdk1.6.0_33/bin/jar
dans le terminal. Fait que le travail?En fait,, je m à l'aide de jar xvf fichier.la guerre pour extraire les Fichiers, La Commande Fonctionne bien si elle est Invoquée Manuellement, mais l'utilisation de Jenkins, Il n'est Pas.. Est-il une sorte de Problème de Permission ??
Avez-vous des
JAVA_HOME
ensemble? Est-il bien défini dans votre profil d'utilisateur?Oui.. Comme mentionné ci-dessus JAVA_HOME=/usr/java/jdk1.6.0_33
OriginalL'auteur Keerthivasan
Que vous êtes l'exécution de la commande sur l'hôte distant, il invoque la nouvelle interface de commande sur l'hôte distant. Le CHEMIN d'accès que vous avez définie dans le courant de l'hôte .bashrc fichier ne fera aucune différence. Au lieu de cela, si vous définissez le CHEMIN d'accès de Java dans l'hôte distant .bashrc les choses devraient fonctionner d'autre si vous exécutez un script puis mentionner le chemin d'accès complet pour le POT comme /usr/jdk64/jdk1.8.0_40/bin/jar -tf /tmp/jars/abc.jar tout en invoquant la commande sur l'hôte distant.
Deux façons de le faire:
export PATH=$PATH:/usr/jdk64/jdk1.8.0_40/bin ---> dans l'hôte distant .bashrc
/usr/jdk64/jdk1.8.0_40/bin/jar -tf /tmp/jars/abc.jar --> invoquer le pot de commande avec le chemin d'accès complet pour le POT de l'hôte distant.
OriginalL'auteur Ajit K'sagar