2013-06-13 3 views
1

J'ai écrit un serveur Java Spring-WS-Application et j'essaie de le déployer à partir de la ligne de commande en utilisant maven. Cependant, en essayant d'exécuter un "paquet mvn clean", il me dit qu'il n'a pas pu créer la machine virtuelle Java en raison du manque d'espace de tas. Mon ordinateur ne dispose que de 4 Go de RAM et exécute malheureusement des fenêtres 32 bits. Le déploiement est réussi à condition d'inclure un -DskipTests.Java Virtual Machine Crashing

Ce projet a des dépendances sur d'autres projets que mon équipe a écrit, et je peux les déployer en utilisant "mvn clean install" sans problème. Je peux également déployer d'autres serveurs sans problème, donc je ne pense pas que ma version java soit corrompue. De plus, d'autres membres de mon équipe de développement ont réussi à déployer ce serveur sur leurs machines.

J'ai également parcouru et commenté toutes les annotations de @Test pour tenter de trouver le test de défaut, mais il me donne toujours cette erreur lorsqu'il n'y a pas de test à exécuter.

Avez-vous des idées sur la raison pour laquelle cela peut se produire?

version Java:

java version "1.7.0_21" 
Java(TM) SE Runtime Environment (build 1.7.0_21-b11) 
Java HotSpot(TM) Client VM (build 23.21-b01, mixed mode, sharing) 

Résultat de "mvn clean package:"

C:\workspace\My-Project>mvn clean package 
[INFO] Scanning for projects... 
[INFO] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building My Project Spring-WS Application 1.0.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ my-project --- 
[INFO] Deleting C:\workspace\My-Project\target 
[INFO] 
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ my-project --- 
[debug] execute contextualize 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory C:\workspace\My-Project\src\main\resources 
[INFO] 
[INFO] --- maven-compiler-plugin:3.0:compile (default-compile) @ my-project --- 
[INFO] Changes detected - recompiling the module! 
[INFO] Compiling 49 source files to C:\workspace\My-Project\target\classes 
[WARNING] Note: C:\workspace\My-Project\src\main\java\my\package\of\doom\impl\classImpl.java uses or overrides a 
deprecated API. 
[WARNING] Note: Recompile with -Xlint:deprecation for details. 
[INFO] 
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ my-project --- 
[debug] execute contextualize 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] Copying 1 resource 
[INFO] 
[INFO] --- maven-compiler-plugin:3.0:testCompile (default-testCompile) @ my-project --- 
[INFO] Changes detected - recompiling the module! 
[INFO] Compiling 25 source files to C:\workspace\My-Project\target\test-classes 
[INFO] 
[INFO] --- maven-surefire-plugin:2.14:test (default-test) @ my-project --- 
[INFO] Surefire report directory: C:\workspace\My-Project\target\surefire-reports 

------------------------------------------------------- 
T E S T S 
------------------------------------------------------- 
Error occurred during initialization of VM 
Could not create the Java virtual machine. 
Could not reserve enough space for object heap 

Results : 

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0 

[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 8.783s 
[INFO] Finished at: Thu Jun 13 09:01:15 EDT 2013 
[INFO] Final Memory: 14M/54M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.14:test (default-test) on project my-pro 
ject: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.14:test failed: The fo 
rked VM terminated without saying properly goodbye. VM crash or System.exit called ? 
[ERROR] Command wascmd.exe /X /C "C:\Oracle2\Middleware\jdk160_24\jre\bin\java -Xms512m -Xmx1024m -XX:MaxPermSize=512m - 
jar C:\workspace\My-Project\target\surefire\surefirebooter4008500116671254841.jar C:\workspace\My-Project\target\surefir 
e\surefire8598565507069545685tmp C:\workspace\My-Project\target\surefire\surefire_07977292658698847040tmp" 
[ERROR] ->  [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR]  [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException 

eclipse.ini:

-vm 
C:/Oracle2/Middleware/jdk160_24/bin/javaw 
-startup 
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar 
--launcher.library 
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502 
-showsplash 
org.eclipse.platform 
--launcher.defaultAction 
openFile 
-vmargs 
-Xms512m 
-Xmx1024m 
-XX:MaxPermSize=512m 
-Dsun.lang.ClassLoader.allowArraySyntax=true 
+1

512m taille maximale perm? Aie. Avez-vous essayé et augmenté la valeur du paramètre '-Xmx'? – fge

+0

Il a défini -Xmx sur 1024m – Jason

+0

Si vous avez suffisamment de mémoire, augmentez Xms, Xmx et MaxPermSize. Avez-vous vérifié combien de mémoire vous aurez besoin du serveur? – Martin

Répondre

1

Examinez attentivement le message d'erreur. Il indique qu'il n'y a pas assez de mémoire pour le tas de test de la machine virtuelle Java. Essayez de libérer de la mémoire (éteignez Eclipse) et/ou exécutez les tests avec une taille de tas/perm plus basse (paramètre surefire).

+0

J'ai trouvé la ligne -Xms512m -Xmx1024m -XX: MaxPermSize = 512m dans la configuration de surefire, en supprimant cette ligne ou en changeant le MaxPermSize à 256m semble résoudre mon problème. Merci! Par curiosité, savez-vous pourquoi la réduction de la taille de Permgen résout ce problème? – sparks

+0

L'espace Permgen est également réservé à partir de la mémoire, donc un grand espace perm générait l'espace nécessaire pour le tas. – Jukka