web-dev-qa-db-fra.com

Erreur lors de l'ouverture du fichier Zip ou du manifeste JAR manquant: C: \ Program

Je suis à l'étape "Exécution du projet sur le serveur" de https://developers.google.com/appengine/docs/Java/webtoolsplatform#dynamic_web_project et j'ai rencontré un problème:

Une erreur s'est produite lors de l'initialisation de VM n'a pas pu démarrer: instrument Erreur d'ouverture du fichier Zip ou du manifeste JAR manquant: C:\Program

Une autre personne a signalé un problème similaire ici: Erreur lors de l'ouverture du fichier Zip ou du manifeste JAR manquant: C:/Program . Mais la solution était pour un ensemble différent de technologies. J'utilise Eclipse, la plateforme d'outils Web et Google-App-Engine.

C'est probablement parce que mon Java est installé dans C:\Program Files, un répertoire qui contient un espace. Mais je ne sais pas comment résoudre ce problème. Je ne sais pas comment déplacez le répertoire Java\jre7 vers un répertoire sans espace.

16
Michael Osofsky

Jordan Fish du support Google Cloud Platform m'a aidé à résoudre ce problème. Il a dit:

En ce qui concerne le message d'erreur lorsque vous essayez de démarrer le dev_appserver, je pense que cela est probablement dû à un argument vm dans la configuration d'exécution de votre projet. Pouvez-vous s'il vous plaît aller à la configuration d'exécution (avec le projet sélectionné, allez dans le menu Exécuter et sélectionnez Exécuter les configurations), cliquez sur l'onglet Arguments et voyez ce qui est répertorié dans le texte des arguments VM boîte?

Voici mes arguments originaux VM:

-javaagent:C:\Program Files\Eclipse\plugins\com.google.appengine.Eclipse.sdkbundle_1.9.4\appengine-Java-sdk-1.9.4\lib\agent\appengine-agent.jar -Xmx512m -Dappengine.fullscan.seconds=5 -Ddatastore.default_high_rep_job_policy_unapplied_job_pct=50

Voici ce que je l'ai changé (ajout de guillemets autour du répertoire qui est passé en tant que -javaagent: param):

-javaagent:"C:\Program Files\Eclipse\plugins\com.google.appengine.Eclipse.sdkbundle_1.9.4\appengine-Java-sdk-1.9.4\lib\agent\appengine-agent.jar" -Xmx512m -Dappengine.fullscan.seconds=5 -Ddatastore.default_high_rep_job_policy_unapplied_job_pct=50

Cela a résolu mon problème, j'ai pu terminer l'étape "Exécution du projet sur le serveur" de https://developers.google.com/appengine/docs/Java/webtoolsplatform#dynamic_web_project

28
Michael Osofsky

Il vous suffit d'ajouter "" dans votre fichier jar derrière -javaagent:

7
Crytis

Si vous utilisez IntelliJ, la solution semble être légèrement différente. Vous devez modifier la configuration d'exécution de la même manière que les utilisateurs Eclipse, mais ajouter à la place les "options VM" en utilisant ce format:

-javaagent:[/absolute/path/DMEnhancerJava-1.0.jar][classes=META-INF/]

Notez la mise en forme avec les crochets après les deux points sans espaces pour chaque paramètre. Si vous manquez cela, vous obtiendrez un message d'erreur d'exécution concernant JavaAgent qui attend ce format d'entrée.

Rappelez-vous également que si vous utilisez un outil de construction comme Maven ou Gradle et que vous l'ajoutez à votre variable Java_ARGS (via quelque chose comme MAVEN_OPTS), vous devrez encapsuler le tout entre guillemets.

Le deuxième paramètre semble être nécessaire pour dire à DMEnhancer quoi instrumenter (le mien était relatif au niveau supérieur de mon chemin de classe; car mes POJO compilés étaient dans le répertoire META-INF).

Enfin, vous pouvez remarquer que vous obtenez parfois une erreur en parlant d'une classe implémentée à deux endroits dans le chemin de classe interne à la machine virtuelle:

Class JavaLaunchHelper is implemented in both <Two full classspaths shown here> One of the two will be used. Which one is undefined.

Cela semble se produire en raison d'un bogue dans la JVM et est corrigé (sur MacOS X) dans 1.8u152 (au moment de la rédaction, ceci est considéré comme une version à accès anticipé disponible ici ). Voir cet autre réponse pour plus d'informations sur ce bogue JVM.

1
Jason D

Exportez le fichier jar avec le fichier manifeste dans Eclipse comme suit:

enter image description here [~ # ~] ou [~ # ~]

Fusionnez le fichier manifeste avec le bocal créé. CMD: jar ufm /Users/inzamam/Desktop/inzaa.jar META-INF/MANIFEST.MF

0
Inzamam Syed