web-dev-qa-db-fra.com

Pas de 'serveur' JVM chez '...'

J'exécute une application Java que nous distribuons en tant que système côté serveur. J'essaie d'écrire un lanceur ("write" est un peu exagéré ici, je copie simplement le fichier Java.exe afin que nous puissions obtenir le nom souhaité dans le processus Explorer de Windows). Cet exe est dans notre répertoire bin/de notre arborescence de fichiers d'application. 

Nous avons également un répertoire jre/dans notre arborescence de fichiers, où réside réellement Java.exe (nous livrons notre produit avec l'environnement Java). Quand j'utilise Java.exe comme lanceur, qui se trouve dans\jre\jre1.6.0.0_21\bin, ou si je place la copie (appelée cet exectuable "Orange.exe") que j'ai créée dans ce répertoire, cela fonctionne parfaitement . Mais si je mets mon 'Orange.exe' dans le répertoire bin \, j'obtiens le message d'erreur suivant:

Error: no 'server' JVM at 'C:\Program Files\Java\jre6\bin\server\jvm.dll'

Je pense comprendre ce qui se passe ici - je souhaite utiliser la version serveur du fichier jvm.dll, qui se trouve dans notre répertoire jre. Le problème est que je ne comprends pas POURQUOI il ne regarde pas dans le répertoire jre\jre1.6.0_21 du chemin de mon application. J'ai défini ma variable d'environnement Java_HOME à cet emplacement. Il semble que le système utilise par défaut un autre emplacement attendu à l'échelle du système. 

Est-ce que quelqu'un sait comment je peux changer cela, afin que cela apparaisse dans le répertoire de mon environnement Java fourni par l'application? Idéalement, il s'agira d'une variable d'environnement, car je dois appeler cette application avec des paramètres utilisant un fichier de commandes.

22
jwir3

Il existe un petit truc pour rendre la JVM du serveur opérationnelle:

  1. Copiez le dossier "serveur" à partir de l'exemple de dossier bin du JRE du JDK: C:\Program Files\Java\jdk1.6.0\jre\bin\server
  2. Collez le dossier "serveur" dans l'exemple de dossier bin du JRE: C:\Program Files\Java\jre1.6.0\bin
  3. Terminé

Voir officiel readme pour plus de détails.

41
indago

Je viens juste de me débattre avec le même problème dans Eclipse et j’ai remarqué que, comme suggéré par la réponse ci-dessus, le site JBoss contient un fil conducteur sur cette question, qui dit la même chose que la réponse ci-dessus pour copier des fichiers du jdk vers le dossier jre.

J'ai remarqué que vous pouvez éviter de le faire si vous définissez le runtime comme étant le jdk lors de la création du serveur. Je n'ai pas trouvé comment éditer un serveur existant.

Eclipse Screenshot

9
Codey McCodeface

Autant que je sache, JRE n'est généralement pas livré avec un serveur VM (uniquement la VM cliente). Si vous avez réellement besoin de la machine virtuelle du serveur, vous devez utiliser l’installation du JDK.

Voir Téléchargement Oracle Java for Developers page pour JRE avec Server VM. 

5
jarnbjo

J'avais le même problème ici, mais dans mon cas, j’avais mal mis à jour Java_HOME et mon PATH pour mon JDK récemment installé ..__ Je l’ai simplement mis à jour sur mon nouvel emplacement JDK et le serveur a bien démarré.

1
hbobenicio

J'ai résolu le même problème en définissant le chemin Java_HOME sur C:\Program Files (x86)\Java\jre1.8.0_131\bin 

0
Aayushi

Windows recherche les DLL dans la variable d'environnement LIBPATH.

Et assurez-vous que votre 1.6.0_21 est quelque part en premier dans PATH.

0