J'essaie de configurer une tâche cron pour télécharger mes rapports quotidiens et hebdomadaires à partir d'iTunes Connect. J'ai téléchargé Apple Autoingestion.class
et j'ai créé le script suivant pour télécharger les rapports hebdomadaires:
java Autoingestion <MyAccountName> <MyPassword> <MyVendorID> Sales Weekly Summary
Ce script shell est stocké dans le même répertoire que le Autoingestion.class
. Lorsque j'exécute ce script shell dans le répertoire, cela fonctionne bien. Si je vais dans un autre répertoire et l'exécute, j'obtiens le message d'erreur suivant:
Exception in thread "main" java.lang.NoClassDefFoundError: Autoingestion
Caused by: java.lang.ClassNotFoundException: Autoingestion
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334)
Could not find the main class: Autoingestion. Program will exit.
Parce que cela ne fonctionne pas lorsqu'il est exécuté depuis un autre répertoire, mon travail cronjob ne fonctionne pas.
Quelqu'un a-t-il une idée de la raison pour laquelle cela se produit et s'il y a quelque chose à faire pour s'en débarrasser?
unix
java
shell-script
cron
SimonBS
la source
la source
classpath
avec-cp /path/to/your/stuff
?Réponses:
Utilisez le script suivant:
Cela modifiera le répertoire de travail à l'emplacement du script, puis exécutera le programme Java.
La raison en est probablement le chemin de classe implicite
.
. Deman java
:Comme vous
java
ne trouvez pasAutoingestion
dans votre répertoire de travail actuel si vous appelez le script ailleurs, il ne parvient pas à se lancer.En fonction du comportement exact du programme (par exemple, l'écriture de fichiers dans le répertoire de travail en cours), vous pouvez également essayer de spécifier un correct
-classpath
, par exemple:la source
-cp
paramètre fonctionne exactement comme ceci. Cela peut dépendre d'autres bibliothèques dont vous avez également besoin.cd "$( dirname "$0" )"
au script shell et ça a marché.Je viens d'avoir cette erreur, et la raison en était que j'étais un peu stupide - Apple fournit Autoingestion.class.zip. Je n'avais tout simplement pas décompressé le cours avant de le lancer. Doh!
la source