2016-07-05 1 views
1

Pour obtenir les noms de paramètres de méthode utilisant la réflexion java, nous devons compiler la classe Java avec l'option "-parameters", mais si je le fais depuis eclipse avec VM Arguments, j'obtiens l'erreur suivante console.Utilisation de l'option -parameters dans Eclipse pour la réflexion

Unrecognized option: -parameters 
Error: Could not create the Java Virtual Machine. 
Error: A fatal exception has occurred. Program will exit. 

J'ai Java 8 en cours d'exécution dans mon système. Qu'est-ce que je rate?

+2

Ce paramètre n'est pas une option JVM. Pour stocker les noms de paramètres formels dans un fichier .class particulier et permettre ainsi à l'API Reflection d'extraire les noms de paramètres formels, compilez le fichier source avec l'option -parameters dans le compilateur javac. – Hector

+0

@Hector Pouvez-vous s'il vous plaît expliquer comment je peux y parvenir en éclipse? – pavi

+2

Sélectionnez le menu: Fenêtre> Préférences> Java> Compilateur Vous y trouverez plusieurs cases à cocher sous la rubrique "Génération de fichiers de classe". – Hector

Répondre

6

Le problème est que ce n'est pas un argument VM. c'est à dire.; Ce n'est pas destiné à être utilisé avec java, mais plutôt avec javac.

Dans Eclipse, vous pouvez aller à:

  • Fenêtre> Préférences> Java> compilateur, ou
  • Projet> Propriétés> compilateur Java

Et il y a une case à cocher pour activer "Stocker des informations sur les paramètres de la méthode (utilisables via la réflexion)." Que vous pouvez utiliser pour cela.

+0

Merci pour la réponse, ça marche. Je tiens également à mentionner que Method.getParameters() est disponible uniquement à partir de java8, la case à cocher mentionnée ci-dessus i.e "Stocker des informations sur les paramètres de la méthode (utilisable via la réflexion)." est disponible en néon. Mais je ne suis pas sûr si eclipse avait cette case à cocher dans toutes les versions précédentes, mais le java doit être java 8 à partir de. – pavi

+1

J'utilise moi-même Mars.2, qui nécessite seulement l'installation de Java 1.7. Je suppose qu'ils ont ajouté qu'après 1.8 est sorti. Donc, il pourrait même être là dans les versions antérieures. PS. J'ai vérifié, c'est aussi disponible à Luna. –

+1

Mais la méthode Method.getParameters() n'est disponible qu'à partir de java 1.8. Consultez le document https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Executable.html#getParameters--. – pavi