2016-07-05 2 views
1

Javaリフレクションを使用してメソッドパラメータ名を取得するには、Javaクラスを「-parameters」オプションでコンパイルする必要がありますが、VM引数を使用してEclipseから実行すると、コンソール。反射のためにeclipseで-parametersオプションを使用する

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

自分のシステムでJava 8を実行しています。私は何が欠けていますか?

+2

パラメータはJVMオプションではありません。特定の.classファイルに仮パラメータ名を格納し、Reflection APIで仮パラメータ名を取得できるようにするには、javacコンパイラに対して-parametersオプションを指定してソースファイルをコンパイルします。 – Hector

+0

@Hector私はeclipseでこれをどのように達成できるのか説明していただけますか? – pavi

+2

メニューを選択してください:Window> Preferences> Java> Compiler "Classfile Generation"という見出しの下にいくつかのチェックボックスがあります。 – Hector

答えて

6

これはVMの引数ではないという問題があります。すなわち、これはjavaと一緒に使うのではなく、javacと一緒に使用することを意味します。 Eclipseで

、あなたがに行くことができます:

  • ウィンドウ>設定>ジャワ>コンパイラ、またはProject]> [プロパティ]> [Javaコンパイラの

  • にそしてにチェックボックスがあります「メソッドパラメータに関する情報を格納する(リフレクションで使用可能)」を有効にするあなたはこれに使うことができます。

    +0

    返信いただきありがとうございます。また、Method.getParameters()はjava8からしか利用できないので、上記のチェックボックス、つまり「メソッドパラメータに関する情報を格納する(リフレクションで使用可能)」ということを言いたいと思います。ネオンで利用可能です。しかし、Eclipseに以前のバージョンでこのチェックボックスがあったのかどうかは分かりませんが、javaはJava 8以降でなければなりません。 – pavi

    +1

    私はMars.2を使っています。自分自身はJava 1.7をインストールするだけです。彼らは1.8が出てからそれを付け加えました。だから、それは以前のバージョンでも存在するかもしれません。 PS。私はチェックした、それはルナでも利用可能です。 –

    +1

    Method.getParameters()メソッドは、Java 1.8からのみ使用できます。 doc https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Executable.html#getParameters--を確認してください。 – pavi

    関連する問題