Je commence à créer des modèles d’URI personnalisés et j’essaie de lancer un fichier jar exécutable à l’aide de modèles d’URI dans mon système Windows 7.
Pour exécuter ce fichier jar à partir d'une invite de commande, j'utilise cette commande:
java -jar demo.jar
MODIFIER:
Pour lancer la même chose en utilisant le schéma d'URI personnalisé, j'ai créé un .reg
fichier avec l'entrée ci-dessous ( copié à partir de l'article ci-dessous ):
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\DemoStart]
"URL Protocol"=""
[HKEY_CLASSES_ROOT\DemoStart\shell]
[HKEY_CLASSES_ROOT\DemoStart\shell\open]
[HKEY_CLASSES_ROOT\DemoStart\shell\open\command]
@="\"java.exe\" -jar \"C:\\Users\\John\\Desktop\\demo.jar\""
Cela ne fonctionne pas pour la raison suivante:
Le fichier jar exécutable que j'essaye d'exécuter nommée demo.jar
est un fichier jar fourni par une tierce partie. Il comporte de nombreuses dépendances sur les fichiers de configuration XML également situés dans le même dossier que le fichier jar. Je n'ai pas le privilège de changer le code présent dans le fichier jar.
À l’aide de l’invite de commande, la commande "java.exe" -jar "demo.jar"
ne fonctionne que lorsque je navigue dans le dossier contenant à la fois le demo.jar
fichier ainsi que le fichier dependent config xml files
. MAIS si j'essaie d'exécuter la commande: à "java.exe" -jar "C:\Users\John\Desktop\demo.jar"
partir de l'emplacement par défaut de la fenêtre d'invite de commande (ce qui est mon cas C:\Users\John
), la commande ne fonctionne pas car les fichiers xml de configuration dépendants ne sont pas disponibles.
Par conséquent, je dois trouver un moyen de changer l'emplacement par défaut de l'invite de commande avant d'exécuter le fichier jar.
Indiquez s'il est possible de définir l'emplacement par défaut de l'invite de commande sur C:\Users\John\Desktop
lorsque je déclenche l'URI personnalisé (dans ce cas, il n'est pas nécessaire de naviguer vers un autre emplacement et la commande devrait fonctionner correctement).
la source
.txt
fichier, modifié l'extension du fichier.reg
, mis le code que vous avez posté ci-dessous, puis double-cliquez sur le.reg
fichier pour créer l'entrée de registre. Puis j'ai vérifié la même chose dans leregedit
.Réponses:
Votre
.reg
fichier ne semble pas correct. Le format est très étrange. Cela devrait ressembler davantage à ceci:Si cela ne fonctionne toujours pas, vérifiez que java est dans votre PATH. Si c'est le cas et que cela ne fonctionne toujours pas, essayez de remplacer "java" par le chemin complet du fichier exe Java.
la source
"%1"
devrait apparaître à l'endroit approprié. En outre, utilisez toujours des chemins absolus, sinon vous ne faites que demander des ennuis. / edit: Oh oui, et il pourrait aussi être prudent de spécifier un nom (à@
côté deURL Protocol
).URL Protocol
. Vous pouvez le voir dans la plupart des entrées dansHKCR
. Je posterai une réponse personnelle plus tard.command prompt
, l'emplacement par défaut estC:\Users\John
. Si je navigue manuellement vers l'emplacement indiquéC:\Users\John\Desktop
dans l'invite de commande et que j'exécute la commande,"java.exe" -jar "demo.jar"
tout fonctionne normalement. Mais si je ne navigue pas vers leDesktop
et n'exécute cette commande à"java.exe" -jar "C:\Users\John\Desktop\demo.jar"
partir de l'emplacement par défaut (c'est-à-direC:\Users\John
), cela ne fonctionnera pas car, dans Desktop, j'ai d'autres fichiers XML également nécessaires pour exécuter le fichier jar.Donc, d'après ce que je comprends, votre principal problème n'est pas l'association de fichier, mais le répertoire de travail. Malheureusement, le répertoire de travail ne peut pas être influencé lorsqu'il est lancé à partir d'une association de fichiers. Si un programme dépend de fichiers en plus de son exécutable, sa conception serait interrompue si elle reposait sur le répertoire de travail.
Heureusement, la programmation n'est plus réservée aux experts. ;)
Le script AutoHotkey à une ligne suivant (qui peut être compilé dans un
.exe
fichier autonome ) lance un programme (ou un.jar
fichier ou autre). Le répertoire de travail sera défini sur l'.exe
emplacement du script .Je n'ai pas réellement testé cela avec un
.jar
fichier, car JDK n'est pas installé pour le moment. J'ai cependant essayé avec un script AutoHotkey non compilé. La documentation sur laRun
commande est disponible ici .la source
.ahk
fichier, ajouter l'entrée#z::Run, demp.jar, %A_ScriptDir%
dans le fichier,Run Script
puis cliquerWindows Key + z
pour démarrer ledemo.jar
, tout cela a bien fonctionné pour moi. Mais je ne veux pas demander à mes utilisateurs de cliquer sur le boutonAutoHot Key
manuellement, donc disposé à automatiser ce processus pour quelque chose du genre: lorsque le navigateur démarre, ildemo.jar
est exécuté automatiquement. S'il vous plaît suggérer quelque chose à ce sujet..exe
) au protocole, au lieu dejava.exe
.