2014-05-07 7 views
14

Ich bin auf Schritt „Ausführen Projekt auf dem Server“ von https://developers.google.com/appengine/docs/java/webtoolsplatform#dynamic_web_project und ich lief in ein Problem:Fehler beim Öffnen der Zip-Datei oder JAR Manifest fehlt: C: Program

Fehler bei der Initialisierung von VM aufgetreten Agentenbibliothek fehlgeschlagen init: Instrument Fehler beim Öffnen der Zip-Datei oder JAR Manifest fehlt: C: \ Program

eine andere Person, die ein ähnliches Problem berichtet hier: Error opening zip file or JAR manifest missing : C:/Program. Aber die Lösung war für eine andere Reihe von Technologien. Ich verwende Eclipse, Web Tools Platform und Google-App-Engine.

Wahrscheinlich liegt es daran, dass mein Java in C: \ Programme installiert ist, einem Verzeichnis, das ein Leerzeichen enthält. Aber ich bin mir nicht sicher, wie ich das beheben soll. Ich bin mir nicht sicher, wie ich das Java \ jre7-Verzeichnis sicher in ein Verzeichnis ohne Leerzeichen verschieben kann.

Antwort

23

Jordan Fish von Google Cloud Platform Support half mir, dieses Problem zu lösen. Er sagte:

Soweit die Fehlermeldung, wenn Sie versuchen, den dev_appserver zu starten, glaube ich, dass dies wahrscheinlich auf ein vm Argument in der Laufkonfiguration für Ihr Projekt ist. Können Sie bitte zur Run-Konfiguration gehen (mit dem ausgewählten Projekt, gehen Sie zum Menü Ausführen und wählen Sie Run Configurations), klicken Sie auf die Registerkarte Argumente, und sehen Sie, was im Textfeld VM-Argumente aufgeführt ist?

war hier meine ursprünglichen Argumente 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 

Hier ist, was habe ich es zu (hinzugefügt doppelte Anführungszeichen um das Verzeichnis, das als -javaagent übergeben wird: 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 

Das behebt mein Problem, ich konnte Schritt "Projekt auf dem Server ausführen" von https://developers.google.com/appengine/docs/java/webtoolsplatform#dynamic_web_project

-2

ausführen y ausführen unser Cmd als Admin. Wenn Sie versuchen, Ihren Server zu starten, und Sie es nicht als Administrator starten, erhalten Sie diesen Fehler.

0

Wenn Sie IntelliJ verwenden, scheint die Lösung etwas anders zu sein. Sie müssen der Run-Konfiguration die gleiche Art und Weise, dass der Eclipse-Anwender tun, sondern fügen Sie die „VM-Optionen“ in dieses Format statt bearbeiten:

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

Hinweis die Formatierung mit den Klammern nach dem Doppelpunkt ohne Leerzeichen für jeder Parameter. Wenn Sie das verpassen, erhalten Sie eine Laufzeitfehlermeldung über JavaAgent, in der dieses Eingabeformat erwartet wird.

Denken Sie auch daran, wenn Sie ein Build-Tool wie Maven oder Gradle verwenden und dies zu Ihrer JAVA_ARGS-Variable hinzufügen (über etwas wie MAVEN_OPTS), müssen Sie das Ganze in doppelte Anführungszeichen setzen.

Der zweite Parameter scheint notwendig zu sein, um DMEnhancer mitzuteilen, was zu instrumentieren ist (meine war relativ zur obersten Ebene meines Klassenpfads; weil meine kompilierten POJOs im Verzeichnis META-INF waren).

Schließlich können Sie feststellen, dass Sie manchmal einen Fehler über eine Klasse im Gespräch mit der VM an zwei Stellen in dem Classpath internen umgesetzt:

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

Dies scheint aufgrund eines Fehlers in der JVM passieren und ist (in MacOS X) in 1.8u152 festgelegt (zum Zeitpunkt des Schreibens wird dies als Early Access Release here angesehen). Weitere Informationen zu diesem JVM-Fehler finden Sie in diesem anderen Artikel answer.

+0

bei IntelliJ Idee, die ich hatte gerade mein Glas in/opt/intellij/bin zu setzen, keine Notwendigkeit für vollständigen Pfad oder doppelte Anführungszeichen oder Klassen Meta-Inf. Aber danke für diese Ausarbeitung, es hilft zu verstehen, wie es auf niedriger Ebene funktioniert. – kensai

2

Sie fügen Sie einfach neet „“, um Ihre JAR-Datei hinter -javaagent:

+0

Das rettete mein Leben ziemlich. Vielen Dank ! – matthieusb