> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cloudtype.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Java

> Java 및 Spring Boot 관련 문제 해결 가이드

## 준비 및 확인사항

<AccordionGroup>
  <Accordion title="지원 Java 버전" defaultOpen={true}>
    * **8, 11, 17, 18, 19**
  </Accordion>
</AccordionGroup>

<Warning>
  로컬/테스트 환경과 클라우드타입에서 설정한 Java 버전이 상이한 경우 정상적으로 빌드되지 않을 수 있습니다.
</Warning>

<AccordionGroup>
  <Accordion title="Spring Boot 어플리케이션을 배포할 때, prod/dev/staging 등 profile을 지정해서 실행하고 싶어요.">
    <Markup className="my-5 border rounded-lg overflow-hidden ratio-16by9">
      <iframe class="absolute top-0 w-full h-full" src="https://www.youtube.com/embed/HVZrp_PuCuo?si=gMF4rYxf2AIIIkwX" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen />
    </Markup>

    > Environment Variables(환경변수)에 `SPRING_PROFILES_ACTIVE` 와 실행을 희망하는 profile 값을 입력하여 배포를 진행해주세요.
    > profile에 따라 어플리케이션이 동작할 수 있도록 `application-<profile>.properties` 파일 혹은 `application.yml` 파일의 내용을 사전에 확인하세요.
  </Accordion>

  <Accordion title="Spring Boot 어플리케이션에서 Timezone(시간대)를 설정하고 싶어요.">
    > Environment Variables(환경변수)에 TZ 와 설정을 희망하는 시간대 값을 입력하여 배포를 진행해주세요. 환경변수로 설정된 값은 JVM 구동 시 주입되어 Spring 어플리케이션에 적용됩니다.

    <Figure className="mt-2 mb-10" src="faq/java-01.png" />

    * 예시
      * TZ: Asia/Seoul
      * TZ: America/New\_York
    * [Linux 타임존 리스트](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones)
  </Accordion>

  <Accordion title="War로 패키징 된 Spring 웹 서비스를 배포하고 싶어요.">
    > 클라우드타입은 Jar로 패키징된 Spring 어플리케이션에 대해서 배포를 지원하며, War 패키지는 지원하지 않습니다.
  </Accordion>

  <Accordion title="서비스 접속 시 50X 페이지만 뜹니다.">
    서비스 배포 후 50X 발생 시, 실행 로그 결과에 따라 다음과 같은 케이스로 나눠 살펴볼 수 있습니다.

    **1️⃣ 어플리케이션이 정상적으로 구동되지 않고 예외가 발생하거나 서버가 종료된 경우**

    > 어플리케이션 구동에 필요한 패키지가 정상적으로 설치되지 않았거나 데이터베이스 연결이 실패했을 수 있습니다. 실행 로그의 에러 메세지를 기반으로 소스 내용 및 [환경 변수 등을 확인](/ko/developers/env)해주세요.

    **2️⃣ 서버는 정상적으로 구동됐는데 권한과 관련된 에러가 발생하는 경우**

    > 언어 및 프레임워크 중 특정 도메인 규칙에 대하여 CORS 허용 규칙을 적용해주어야 접속가능한 것이 있습니다. [리버스 프록시 페이지](/ko/developers/reverseproxy)를 참고해주세요.

    **3️⃣ 빌드가 정상적으로 완료 되었는데 상태가 ‘시작중’에서 바뀌지 않고 생성된 URL에 접속해도 503 페이지만 뜨는 경우**

    > 루트 디렉토리가 아닌 서브디렉토리에 코드가 존재하는 경우 이러한 상황이 발생할 수 있습니다. 사용자의 저장소를 디렉토리를 확인하고, 해당되는 경우 [서브디렉토리 설정](/ko/developers/subdir)을 추가해주세요.

    **4️⃣ 서버는 정상적으로 구동됐는데 접속시 에러창이 뜨고 실행 로그에 아무런 반응이 없는 경우**

    > 소스 코드에 설정된 포트가 배포시에 작성하신 포트와 불일치할 경우일 확률이 높습니다. [입력한 포트를 확인해주세요](/ko/developers/port).
  </Accordion>
</AccordionGroup>

***

## 참고

### 공식문서

* [Spring Boot Docs](https://docs.spring.io/spring-boot/docs/current/reference/html/index.html)
