인프런 커뮤니티 질문&답변

revino님의 프로필 이미지
revino

작성한 질문수

스프링 기반 REST API 개발

스프링 시큐리티 적용

Roles 관련 질문입니다.

작성

·

179

0

error: cannot find symbol
                .roles(Set.of(AccountRole.ADMIN,AccountRole.USER))
                          ^
  symbol:   method of(AccountRole,AccountRole)
  location: interface Set
1 error
5 warnings
Account account = Account.builder()
.email(username)
.password(password)
.roles(Set.of(AccountRole.ADMIN,AccountRole.USER))
.build();

@ElementCollection(fetch = FetchType.EAGER)
@Enumerated(EnumType.STRING)
private Set<AccountRole> roles;

위와 같이 of Method를 찾을수 없다고 나오는데 Ctrl 클리하고 봐도 아래와 같이 정상적으로 있는데 왜 찾을수 없다고 build가 안될까요 검색을 해봐도 나오는게 없어서 여쭤봅니다. JDK는 Oracle 14 사용하고있습니다...

답변 2

2

백기선님의 프로필 이미지
백기선
지식공유자

붙여주신 코드 주석에 보시다시피 자바 9버전부터 사용할 수 있는 API 인데 cannot find symbol 이란 에러가 보인다면 자바 컴파일 옵션에 버전을 낮게 주셨다거나.. 프로젝트의 컴파일 버전 옵션을 1.8로 설정하셨다거나 그런 경우밖에 생각이 안드네요.

0

revino님의 프로필 이미지
revino
질문자

Set<AccountRole> roles = new HashSet<AccountRole>();
roles.add(AccountRole.ADMIN);
roles.add(AccountRole.USER);

Account account = Account.builder()
.email(username)
.password(password)
.roles(roles)
.build();

위와 같이 작성 하니까 정상동작하는데

11 버전과 14버전 문서 모두 제가 보기엔 동일한거같은데 무슨 차이인지 알 수있을까요?

https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Set.html#of()

https://docs.oracle.com/en/java/javase/14/docs/api/java.base/java/util/Set.html#of(E,E)

revino님의 프로필 이미지
revino

작성한 질문수

질문하기