Je suis très nouveau pour les scripts Apple donc s'il vous plaît ours avec moi. Je dois exécuter un fichier .jar
en utilisant applescript
, le jar
n'est pas exécutable, donc j'appelle le class
comme com.path.to.myClass
. Mon Apple script ressemble dessous-Java en cours d'exécution à partir de Apple Script
display alert "You are about to start the image rename process." buttons {"OK", "Cancel"}
set theAnswer to button returned of the result
if theAnswer is "OK" then
do shell script "java -classpath ./ImageRename_JAVA-1.0.0.jar:. com.mff.image.rename.Main"
else
say "Exit"
end if
Les deux AppleScript et ImageRename_JAVA-1.0.0.jar
sont dans le même répertoire, mais quand je lance le script, il me donne un ERROR-
error "Exception in thread \"main\" java.lang.NoClassDefFoundError: com/mff/image/rename/Main
Caused by: java.lang.ClassNotFoundException: com.mff.image.rename.Main
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)" number 1
Suis-je régler la classpath
faux? Si oui, quelle est la bonne façon? Aussi, comment puis-je ajouter plus de jar
au classpath
? Lorsque j'exécute la commande ci-dessous à partir de Terminal
, cela fonctionne très bien.
$ java -classpath ./ImageRename_JAVA-1.0.0.jar:. com.mff.image.rename.Main
Je sais que cela peut être fait d'une meilleure façon en utilisant JAR Bundler
mais je n'ai aucun contrôle sur le JAR
et son développé par quelqu'un d'autre. Est-il possible que je puisse inclure tous les JAR
dans l'application sous le répertoire YourApplicationName.app/Contents/MacOS/Resources/Java/
et les utiliser dans le chemin de la classe.
Jetez un oeil à cette réponse [SO] (http://stackoverflow.com/questions/12101240/java-lang-noclassdeffounderror-org-w3c-tidy-tidy-maven-project/12106292#12106292). Vous devez également utiliser ";" sur win ou ":" sur linux/apple si vous voulez ajouter plus de jars au classpath – Sal
@Sal .. c'est essentiellement la même chose que je fais. La commande fonctionne dans 'terminal' (invite de commande) mais échoue lorsqu'elle est exécutée à partir de' applescript'. – Annjawn