묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트 파일을 실행시켰을때 결과화면
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.h2데이터베이스에 잘 실행이 되는것을 확인했는데 강사님 화면처럼 insertinto ~~이런식으로 안떠서 뭐가 문제인건가요??
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
h2 데이터베이스 연결할 때 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금한 점이 생겨 질문 드립니다.jdbc url도 다 연결이 되고 test.mv.db도 있었습니다. 그런데 7분 이후의 과정을 따라가려 하니 그 다음단계를 진행하려고 할 때마다 연결이 끊어져 매번 del을 해주고 있는데 매번 이래야 하나요?? 아니면 연결이 끊어지는 특정 조건이 있는 건가요? 감사합니다!
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
for문 while문 차이점
for문이랑 while문 언제 쓰는지 느낌은 알겠는데 정확한 차이점을 모르겠어요 ,, 정확한 정의나 비교될 만한 예시가 있을까요??
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
쿼리 로그가 안나옵니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요.MemberRepositoryTest 실행시에 실행잘되고 기대했던 결과도 나오지만 쿼리 로그가 보이지 않습니다. junint5로 테스트 실행했습니다. 1. MemberRepositoryTest 클래스 파일 소스 package jpabook.jpashop; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.annotation.Rollback; import javax.transaction.Transactional; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; @SpringBootTest class MemberRepositoryTest { @Autowired MemberRepository memberRepository; @Test @Transactional @Rollback(value = false) public void testMember() throws Exception{ //given Member member = new Member(); member.setUsername("memberA"); //when Long savedId = memberRepository.save(member); Member findMember = memberRepository.find(savedId); //then assertThat(findMember.getId()).isEqualTo(member.getId()); assertThat(findMember.getUsername()).isEqualTo(member.getUsername()); } } ///////////////////////////// 설정파일 정보는 아래와 같습니다. 1. build.gradle plugins { id 'java' id 'org.springframework.boot' version '2.7.17' id 'io.spring.dependency-management' version '1.0.15.RELEASE' } group = 'jpabook' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '11' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('bootBuildImage') { builder = 'paketobuildpacks/builder-jammy-base:latest' } tasks.named('test') { useJUnitPlatform() } 2. application.yml spring: datasource: url: jdbc:h2:tcp://localhost/~/jpashop username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: #show_sql: true format_sql: true logging.level: org.hibernate.SQL: debug #org.hibernate.type: trace #스프링 부트 2.x, hibernate5
-
해결됨김영한의 실전 자바 - 기본편
객체(데이터성, 기능성) 관련해서 질문이 있습니다.
안녕하세요. 강사님!OOP 관련 강의나 책들을 보다가 설명하는 방식이 다 달라서 오히려 머릿속이 더 복잡해진거 같아서 질문드리게 되었습니다.여러 강의 또는 책에서 예를 들어 책임 주도 설계와 같은 곳에서는 객체는 외부에 제공하는 기능으로서 평가되어진다.그래서 객체는 외부에 제공하는 기능이 있고 그 기능 구현에 필요한 데이터를 가진다. 따라서 기능 기반으로 해서 각 객체를 디자인해야 된다! 이런식으로 이해를 하고 있었습니다.그런데 직접 설계를 진행하면 할 수록 결국 데이터 성격이 강한 구조체성 객체를 디자인해야 되더라구요! 기능 보다 데이터를 우선적으로 추출하는 방식으로요!또 추가적으로 영한님의 스프링 강의를 보면 오히려 데이터베이스 테이블 설계(Entity) 이후에 각 기능들을 적절히 도메인 모델(Entity)에 분배하는 형식으로 디자인을 하시더라구요. 저같은 경우 웹 개발을 진행할 때는 뭔가 정보를 표현해야 될 것들이 있다보니 테이블 설계를 우선시하고 기능 구현에 필요한 정보를 많이 알고있는 곳에 분배하는 식으로 하려고 노력하고 있긴한대 잘안되지만요...데이터를 우선 추출하고 거기에 별도의 기능을 추가하는 방식도 적절한 객체 설계 방식이라고 볼 수 있을까요?기능을 수행할 객체를 정하고 기능 구현에 필요한 데이터를 객체에 추가하는 방식과 데이터베이스 테이블 설계 이후에 정보 전문가 패턴을 따라서 각 기능을 분배하는 방식중에 어떤게 맞는건지 해당 2개의 개념은 다른 것을 설명하는 것인지 조언을 좀 부탁드리겠습니다!감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
new를 이용하지 않는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금한 점이 생겨 질문 드립니다.1.3분 4초 즈음 new로 인스턴스를 생성해서 사용하면 MemberSerivce를 MemberController 말고 다른 컨트롤러도 가져다 쓸 수 있다고 언급하셨는데 private인데도 접근할 수 있는 건가요,,,? 실행버튼이 나오지 않아 커뮤니티 검색해서 helloSpringApplication에서 작동시켜서 선생님과 같은 화면까지는 나왔는데요, 선생님께서는 컨트롤러에도 실행 버튼이 있는데 제 거에는 없는 이유가 있을까요..? 무료와 유료의 차이인가요?감사합니다!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
IO Exception: "/Users/eulyoungjung/test.mv.db" [90028-224] 90028/90028 (Help)
test.mv.db 를 직접 생성 하여 했는데도 연결이 되지 않습니다 ... 빠른답변 부탁드려요 !!
-
미해결자바 코딩테스트 - it 대기업 유제
방향바꾸기 문제 질문드립니다.
import java.io.*; import java.util.*; class Node implements Comparable<Node>{ int x; int y; int c; Node(int x, int y, int c){ this.x=x; this.y=y; this.c=c; } @Override public int compareTo(Node o) { return this.c-o.c; } } class Main { public int solution(int[][] board) { int answer = 0; int n=board.length; int m=board[0].length; int[][] dist =new int[n][m]; int INF = (int)1e9; PriorityQueue<Node> q = new PriorityQueue<>(); q.add(new Node(0,0,0)); for(int i=0; i<n; i++) Arrays.fill(dist[i], INF); dist[0][0]=0; int[] dx = {0,0,1,-1}; int[] dy = {1,-1,0,0}; while(!q.isEmpty()) { Node tmp = q.poll(); int nowx = tmp.x; int nowy = tmp.y; int nowc=tmp.c; int dir = board[nowx][nowy]-1; if(nowc>dist[nowx][nowy]) continue; for(int i=0; i<4;i++) { int nx = nowx+dx[i]; int ny = nowy+dy[i]; if(i==dir && dist[nx][ny]>nowc) { dist[nx][ny] = nowc; if(q.add(new Node(nx,ny,dist[nx][ny]))); } else if(i!=dir && dist[nx][ny]>nowc+1) { dist[nx][ny] = nowc+1; q.add(new Node(nx,ny,dist[nx][ny])); } } } answer = dist[n-1][m-1]; return answer; } public static void main(String[] args){ Main T = new Main(); System.out.println(T.solution(new int[][]{{3, 1, 3}, {1, 4, 2}, {4, 2, 3}})); System.out.println(T.solution(new int[][]{{3, 2, 1, 3}, {1, 1, 4, 2}, {3, 4, 2, 1}, {1, 2, 2, 4}})); System.out.println(T.solution(new int[][]{{3, 2, 1, 3, 1, 2}, {2, 1, 1, 1, 4, 2}, {2, 2, 2, 1, 2, 2}, {1, 3, 3, 4, 4, 4}, {1, 2, 2, 3, 3, 4}})); System.out.println(T.solution(new int[][]{{3, 2, 1, 3, 1, 2, 2, 2}, {2, 1, 1, 1, 4, 2, 1, 1}, {2, 2, 2, 1, 2, 2, 3, 4}, {1, 3, 3, 4, 4, 4, 3, 1}, {1, 2, 2, 3, 3, 4, 3, 4}, {1, 2, 2, 3, 3, 1, 1, 1}})); System.out.println(T.solution(new int[][]{{1, 2, 3, 2, 1, 3, 1, 2, 2, 2}, {1, 2, 2, 1, 1, 1, 4, 2, 1, 1}, {3, 2, 2, 2, 2, 1, 2, 2, 3, 4}, {3, 3, 1, 3, 3, 4, 4, 4, 3, 1}, {1, 1, 1, 2, 2, 3, 3, 4, 3, 4}, {1, 1, 1, 2, 2, 3, 3, 1, 1, 1}})); } }이렇게 작성하니까 배열 길이가 맞지 않다고 뜹니다.어디가 잘 못된건가요???
-
미해결Java TPC 실전프로젝트 (Java API 활용)
강의 들으면서 잘 안되는 부분이 있어서요~
moquitto 관련 부분 작동이 되는지 확인해봐주실수 있나요?WARNING: An illegal reflective access operation has occurredWARNING: Illegal reflective access by org.eclipse.paho.client.mqttv3.internal.FileLock (file:/C:/eGovFrame-4.0.0/maven/repository/org/eclipse/paho/org.eclipse.paho.client.mqttv3/1.2.5/org.eclipse.paho.client.mqttv3-1.2.5.jar) to method sun.nio.ch.FileLockImpl.release()WARNING: Please consider reporting this to the maintainers of org.eclipse.paho.client.mqttv3.internal.FileLockWARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operationsWARNING: All illegal access operations will be denied in a future releaseERR0[Ljava.lang.StackTraceElement;@6021afeb이런 에러가 뜨는데 왜그런지 모르겠네요... maven이 아니라 일반 자바프로젝트에서 jar파일로 해봐도 ERR0[Ljava.lang.StackTraceElement;@6021afeb 이 메세지가 계속 뜨네요
-
해결됨자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
GET API까지는 잘 하다가 인텔리제이 껐다가 다시 키고 POST API 수업따라 코드 작성 후 서버 실행하니 라는 오류가 발생합니다...
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
MySQL named lock과 redis를 사용한 분산락 구현의 차이점
안녕하세요 강사님, 유익한 강의 잘 듣고 있습니다. 😀강의를 듣던 중 분산락을 구현하는 더 좋은 방법이 무엇일지 궁금해서 질문 남깁니다.강의 중에선 MySQL named lock이 트랜잭션 종료 시 수동으로 락을 반환해야한다는 점 때문에 관리가 어렵다는 단점이 있다고 언급하셨는데요, 레디스를 사용했을 때와 비교해서 named lock이 분산락을 구현하는데 있어 더 불리한 점이 있나요? 구글링을 좀 해봤는데 네임드락은 클러스터 환경에서 분산 락 제공이 불가능하고, 추가로 zookeeper 같은 분산락 관리자를 사용해야한다고 하는데.. 잘 이해가 안되어서 여쭤봅니다. 오히려 기존에 MySQL을 사용하고 있다면 네임드락을 사용하는게 레디스 추가 비용 없이 분산 락을 구현할 수 있는 방법이라는 생각이 드는데요, 강사님은 어떻게 생각하시는지 궁금합니다. 참고로 제가 읽었던 분산락 관련 블로그 주소입니다. https://velog.io/@this-is-spear/MySQL-Named-Lock
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
get()을 하는 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요! 수업 도중 궁금한 점이 생겨 질문드립니다.@Test public void save() { Member member = new Member(); member.setName("spring"); repository.save(member); Member result = repository.findById(member.getId()).get(); // System.out.println("result = " + (result==member)); Assertions.assertEquals(member, result); } 이 부분에서 Member result를 할 때 get()을 해주는 이유는 findById의 반환값이 optional이기 때문인건가요...? 그렇다면 optional은 get을 왜 해줘야하는지도 궁금합니다. 감사합니다
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@MapsId 에서 cascade가 기본옵션인가요?
@Entity @Getter @Setter public class Board { @Id @GeneratedValue private Long id; private String title; @OneToOne(mappedBy = "board") private BoardDetail boardDetail; } @Entity @Getter @Setter public class BoardDetail { @Id private Long boardId; @MapsId // BoardDetail.boardId와 매핑 @OneToOne @JoinColumn(name = "board_id") public Board board; private String content; } public class OneToOne { private EntityManager em; private static final EntityManagerFactory emf = Persistence.createEntityManagerFactory("non"); @BeforeEach void setUp(){ em = emf.createEntityManager(); } @AfterAll static void finish(){ emf.close(); } @DisplayName("1:1 식별 매핑일 경우 ") @Test void t1(){ EntityTransaction tx = em.getTransaction(); tx.begin(); Board board = new Board(); board.setTitle("T1 4번째 월즈 우승"); BoardDetail boardDetail = new BoardDetail(); boardDetail.setContent("상혁아 축하해"); boardDetail.setBoard(board); em.persist(boardDetail); tx.commit(); } }여기서 제가 부모 테이블인 board를 저장하지 않고 바로 boardDetail만 저장했습니다.cascade옵션을 주지 않았는데도 부모 테이블에 갱신이 되더라구요Hibernate: call next value for hibernate_sequence Hibernate: /* insert non.Board */ insert into Board (title, id) values (?, ?) Hibernate: /* insert non.BoardDetail */ insert into BoardDetail (content, board_id) values (?, ?)공식 문서에서도 Person 저장하고 PersonDetail을 저장하던데이렇게 해도 동작하는 이유가 궁금합니다.
-
미해결스프링 시큐리티 OAuth2
인가서버와 websecurityconfigureradapter
안녕하세요, 강사님? 강의 잘듣고 있습니다. 이제 막 회사에서 일하기 시작한 주니어 개발자입니다. 제 회사에서는 websecurityconfigureradapter 를 상속받아서, spring boot 2.7.6에서 사용하고 있습니다.이 경우에는 authorization server를 마지막 강의에서 사용하신 source code를 활용해보니 작동하지않았습니다. illegalStateException에서 security filter chain과 websecurityconfigureradapter 둘중 하나를 사용하라는 문제에 부딪혔습니다. 그외에도 oauth2 authroization server 관련 jar내 class들이 security filter chain을 형성하는 과정이 관련 있는 것 같아서, 동작하지 않는것으로 보이기도 합니다. 예를들면 @Bean (clientRegistration을 수행하는메서드) 입니다. 혹시 oauth2로는 websecurityconfigureradapter 과 함께 쓸수가 없는 것일까요? 있다면, 혹시 관련 코드를 가지고 계신것이 있다면 공유해주시면 감사드리겠습니다.!
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
@EmbeddedId 복합키 질문이 있습니다
강사님 안녕하세요 !!@Entity @Getter @Setter public class EmParent { @Id private String id; private String name; } @Entity @Getter @Setter public class EmChild { @EmbeddedId private EmChildId id; @MapsId("parentId") @ManyToOne @JoinColumn(name = "parent_id",foreignKey = @ForeignKey(name = "parent_fk")) public EmParent parent; private String name; @EqualsAndHashCode @Getter @Setter @Embeddable public static class EmChildId implements Serializable { private String parentId;//@MapsId("parentId")와 매핑 @Column(name = "child_id") private String id;//Child.childId 매핑 } }테스트코드 EmParent emParent = new EmParent(); emParent.setName("내장 할아버지"); emParent.setId("A001"); em.persist(emParent); //복합키 만들기 EmChild.EmChildId id = new EmChild.EmChildId(); id.setId("F001"); id.setId("fake data"); //자식 엔티티 생성 EmChild emChild = new EmChild(); //자식 엔티티에 복합키 주입하기 emChild.setId(id); //아래 정보를 넣지 않으면 예외가 발생 emChild.setParent(emParent); emChild.setName("내장 아버지"); em.persist(emChild);식별 관계에서 @EmbeddedId를 사용할 때자식 엔티티에 Id 객체인 EmChildId 를 넣어줄 때EmChildId 클래스의@Column(name = "child_id") private String id;//Child.childId 매핑만 참조를 하고 부모의 pk를 참조하는 private String parentId;에는 어떤 값이 들어가도의미가 없더라구요@MapsId("parentId") @ManyToOne @JoinColumn(name = "parent_id",foreignKey = @ForeignKey(name = "parent_fk")) public EmParent parent여기에 값을 넣어줘야 EmChild 엔티티가 정상 동작합니다. 제가 실수한 부분있는 걸까요 ?아니면 식별관계일 때 @EmbeddedId는 읽어올때만 상관이 있고 저장할 때에는 상관이 없는 객체인가요?
-
미해결재고시스템으로 알아보는 동시성이슈 해결방법
@Transactional과 synchronized를 같이 써도 동시성 테스트가 통과 돼요
강의 보면 통과가 안되는데 저는 테스트 코드를 돌려보면 통과하게 됩니다. 왜그런건가요??
-
미해결스프링 시큐리티 OAuth2
JWT Verify에 대한 질문이 있습니다.
protected String getJwtTokenInternal(JWSSigner jws, UserDetails user, JWK jwk) throws JOSEException { // JWT token 을 만들기 위해 3가지가 필요함(header, payload, sig) JWSHeader header = new JWSHeader.Builder((JWSAlgorithm) jwk.getAlgorithm()).keyID(jwk.getKeyID()).build(); List<String> authorities = user.getAuthorities().stream().map(author -> author.getAuthority()).collect(Collectors.toList()); JWTClaimsSet payload = new JWTClaimsSet.Builder() .subject("user") .issuer("http://localhost:8080") .claim("username", user.getUsername()) .claim("authority", authorities) .expirationTime(new Date(new Date().getTime() + 1000)) //1초 .build(); SignedJWT signedJWT = new SignedJWT(header, payload); // 서명 signedJWT.sign(jws); //토큰 발행 String jwtToken = signedJWT.serialize(); return jwtToken; } expiration Time 말고는 강사님 코드랑 동일합니다.토큰 만료되는 걸 체크하고 싶어서 테스트 코드를 작성했습니다. 만료시간을 1초로 만들었습니다. @Test @DisplayName("test") void test() throws JOSEException, InterruptedException, ParseException { UserDetails user = userDetailsService.loadUserByUsername("user"); System.out.println(user); String jwtToken = securitySigner.getJwtToken(user, jwk); System.out.println("jwtToken = " + jwtToken); Thread.sleep(7000); SignedJWT signedJWT = SignedJWT.parse(jwtToken); boolean verify = signedJWT.verify(new RSASSAVerifier(jwk)); System.out.println("verify = " + verify); } 근데 위의 테스트 코드를 실행한 결과7초라는 지연을 주었는데도 불구하고verify가 참으로 뜨네요. 어떤게 문제일까요?
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
jar 파일 access 불가
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예 항상 강의 잘 보고 있습니다.JPA와 DB설정, 동작확인 강의 중jar 빌드해서 동작확인 하는 단계에서 Unable to access jarfile jpashop-0.0.1-SNAPSHOT 라고 뜨네요..해당 경로에 파일은 있는 것으로 확인되는데 어떻게 해결하면 좋을까요?감사합니다
-
미해결스프링 시큐리티
CSRF token 질문
공격자가 링크를 누를때 user의 sessionId 와 CSRF 토큰을 공격자에게 넘겨 주도록 설정하면 token이 큰 의미가 없지 않을까요? token 이 어떠한 방식으로 공격자에게는 넘어가지 않고, server 에게만 전송이 되는 건지가 궁금합니다.
-
미해결자바(javafx) 실전 데스크탑앱 프로젝트 - 유튜브관리앱
크롬앱기능(구현) 강의에서 new ClipboardAssistance()에서 에러가 발생합니다.
강의기준 79번째 줄 ClipboardAssistance()에서 에러가 나는데,강의에서는 ClipboardAssistance를 사용 시 해당 클래스를 임포트할 수 있도록 도와주는 것 같은데, 위 사진을 보시면 ClipboardAssistance에 대한 Import도 제시해주지 않고 있습니다. 라이브러리 문제인가 싶어 zulu javafx 11버전을 다시 받아 jre 세팅하고 진행해도 저부분만 오류가 납니다. 이유가 궁금합니다.추가로, 강의에서는 프로젝트의 JRE System library가 JavaSE-1.8이라고 나와있는데, 이게 zulu11이 아니면 Button, HBox, Scene 등 javaFx를 이용하는 많은 부분에서 전부 빨간줄이 뜨는데 어떻게 강의에서는 JavaSE-1.8라이브러리를 사용하면서 빨간줄이 안뜨는지요..? (여기에 제 문제점도 어느정도 관계가 있어 보이기도 합니다..)