2016-07-05 4 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 이클립스에서 어떻게 달성 할 수 있는지 설명해 주시겠습니까? – pavi

+2

메뉴를 선택하십시오 : Window> Preferences> Java> Compiler "Classfile Generation"제목 아래에 여러 개의 확인란이 있습니다. – Hector

답변

6

이 문제는 VM 인수가 아닙니다. 즉; java과 함께 사용하는 것이 아니라 javac으로 사용하는 것이 좋습니다. > 속성> 자바 컴파일러에게

  • 창> 환경 설정> 자바> 컴파일러, 또는
  • 프로젝트에

을 그리고 확인란에 있습니다 : 이클립스에서

, 당신은 갈 수 있습니다 "메서드 매개 변수에 대한 정보 저장 (리플렉션을 통해 사용 가능)"을 활성화하십시오. 당신이 이것을 사용할 수 있다는 것.

+0

답장을 보내 주셔서 감사합니다. 또한 Method.getParameters()는 java8에서만 사용할 수 있으므로 위의 확인란, 즉 "리플렉션을 통해 사용할 수있는 메서드 매개 변수에 대한 정보를 저장합니다."라는 설명이 필요합니다. 네온에서 사용할 수 있습니다. 하지만 이클립스는 이전 버전 에서이 확인란을 가지고 있는지 모르겠지만 자바는 자바 8 이상이어야합니다. – pavi

+1

저는 Java 1.7을 설치하기 만하면되는 Mars.2를 사용하고 있습니다. 나는 그들이 1.8이 나온 후에 그것을 추가했다고 생각한다. 따라서 이전 버전에도있을 수 있습니다. 추신. 내가 확인 했어, 루나에서도 구할 수있어. –

+1

그러나 Method.getParameters() 메서드는 Java 1.8에서만 사용할 수 있습니다. doc https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Executable.html#getParameters--을 확인하십시오. – pavi