<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>java | bitneer.dev</title>
	<atom:link href="https://www.bitneer.dev/blog/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.bitneer.dev</link>
	<description>AI 시대에 취미로 하는 코딩</description>
	<lastBuildDate>Tue, 06 Jan 2026 20:21:10 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>

<image>
	<url>https://www.bitneer.dev/wp/wp-content/uploads/2023/11/cropped-bitneer_Logo_for_Google_200-32x32.png</url>
	<title>java | bitneer.dev</title>
	<link>https://www.bitneer.dev</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>데비안에 Eclipse Temurin JDK 설치하기</title>
		<link>https://www.bitneer.dev/blog/%eb%8d%b0%eb%b9%84%ec%95%88%ec%97%90-eclipse-temurin-jdk-%ec%84%a4%ec%b9%98%ed%95%98%ea%b8%b0/</link>
		
		<dc:creator><![CDATA[Choi Kyung-sik]]></dc:creator>
		<pubDate>Tue, 30 Dec 2025 20:41:04 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jdk]]></category>
		<guid isPermaLink="false">https://www.bitneer.dev/?p=10094</guid>

					<description><![CDATA[<div data-nosnippet>Atlassian이 Cloud 중심 전략으로 전환하기 위해 2021년 Confluence, Jira, Bitbucket에 대한 개인용 영구 라이선스(Server) 판매를 중단했고, 기업용인 Data Center 제품도 2029년까지 단계적으로 종료할 예정이다. 이에 따라 개인적으로 사용 중이던 Jira와 Bitbucket은 Gitea로 대체하였다. Confluence는 노션(Notion), 아웃라인(Outline), 옵시디언(Obsidian) 등을 검토해 보았으나 딱히 마음에 드는 대안이 없었다. 다행히 Confluence는 폴백(Fallback) 영구 라이선스라 업그레이드는 불가능하지만 계속 사용할 수 있어 아직 유지하고 있다. Java에 ...</div>
<p>The post <a rel="nofollow" href="https://www.bitneer.dev/blog/%eb%8d%b0%eb%b9%84%ec%95%88%ec%97%90-eclipse-temurin-jdk-%ec%84%a4%ec%b9%98%ed%95%98%ea%b8%b0/">데비안에 Eclipse Temurin JDK 설치하기</a> appeared first on <a rel="nofollow" href="https://www.bitneer.dev">bitneer.dev</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>
  Atlassian이 Cloud 중심 전략으로 전환하기 위해 2021년 Confluence, Jira,
  Bitbucket에 대한 개인용 영구 라이선스(Server) 판매를 중단했고, 기업용인 Data
  Center 제품도 2029년까지 단계적으로 종료할 예정이다. 이에 따라 개인적으로 사용
  중이던 Jira와 Bitbucket은
  <a rel="noopener noreferrer" target="_blank" href="https://about.gitea.com/">Gitea</a
  >로 대체하였다. Confluence는
  <a rel="noopener noreferrer" target="_blank" href="https://www.notion.com/ko">노션(Notion)</a
  >,
  <a rel="noopener noreferrer" target="_blank" href="https://www.getoutline.com/">아웃라인(Outline)</a
  >,
  <a rel="noopener noreferrer" target="_blank" href="https://obsidian.md/">옵시디언(Obsidian)</a
  >
  등을 검토해 보았으나 딱히 마음에 드는 대안이 없었다. 다행히 Confluence는
  폴백(Fallback) 영구 라이선스라 업그레이드는 불가능하지만 계속 사용할 수 있어
  아직 유지하고 있다.
</p>
<p>
  Java에 대한 흥미를 잃어 대체 솔루션으로 교체하게 되면 JDK를 삭제할
  예정이었으나, 한동안은 더 필요할 듯하다. 또한 검색을 통해 이전에 작성한
  <a rel="noopener noreferrer" target="_blank" href="https://www.bitneer.dev/blog/%eb%8d%b0%eb%b9%84%ec%95%88%ec%97%90-adoptopenjdk-%ec%84%a4%ec%b9%98%ed%95%98%ea%b8%b0/">데비안에 AdoptOpenJDK 설치하기</a
  >
  글로 유입되는 경우가 있어, 최신 정보를 공유하고자 기록을 남긴다.
</p>
<h5>AdoptOpenJDK의 브랜드 변경과 이관</h5>
<p>
  AdoptOpenJDK는 2021년 Eclipse 재단으로 이관되면서
  <strong>Eclipse Adoptium</strong> 프로젝트로 재탄생하였다. 이는 Oracle의
  상표권 문제를 해결하고, 공식 호환성 테스트(TCK)를 통과하여 엔터프라이즈
  환경에서 더 신뢰할 수 있는 바이너리를 제공하기 위함이다.
</p>
<ul>
  <li>
    <strong>상표권 분쟁 회피:</strong> &#8216;OpenJDK&#8217;라는 단어는 Oracle의 등록
    상표이다. 커뮤니티 프로젝트였던 &#8216;AdoptOpenJDK&#8217;의 규모가 커지자, 법적으로
    안전하고 영구적인 이름을 갖기 위해 Eclipse 재단으로 이관하며 이름을 변경해야
    했다.
  </li>
  <li>
    <strong>Java 공식 인증 (TCK 라이선스 획득)</strong>: 과거 AdoptOpenJDK는
    Oracle과의 라이선스 문제로 &#8216;자바 호환성 테스트(TCK)&#8217;를 공식적으로 수행할 수
    없었다. 하지만 Eclipse 재단 산하로 들어가면서 Oracle과 협약을 맺고 TCK
    인증을 통과한 &#8216;공식 호환 Java&#8217;를 배포할 수 있게 되었다.
  </li>
</ul>
<p>
  2021년 AdoptOpenJDK 프로젝트가 Eclipse 재단으로 합류하며 Eclipse Adoptium으로
  이름이 바뀌었고, <strong>Eclipse Temurin</strong>이라는 바이너리가 처음
  배포되었다. 이후 2023년 7월, 기존에 사용하던
  <kbd>adoptopenjdk.jfrog.io</kbd> 저장소는 완전히 사용 중단(Deprecated)되었다.
</p>
<p>
  Eclipse Adoptium(어댑티움)은 프로젝트 이름이고 Eclipse Temurin(테무린)은 해당
  프로젝트에서 생산하는 JDK 제품 이름이다. <strong>Temurin</strong>은
  <strong>Runtime</strong>의 아나그램(철자 순서 바꾸기)이다. (R-u-n-t-i-m-e
  &harr; T-e-m-u-r-i-n)
</p>
<h5>AdoptOpenJDK 저장소 정리하기</h5>
<p>
  Eclipse Temurin으로 이관되던 2023년 무렵, <kbd>apt update</kbd> 실행 시 다음과
  같은 경고 메시지가 발생했었다. 현재는 저장소 자체가 삭제되었을 것으로 보인다.
</p>
<pre class="language-none">
<code># apt update
...
W: https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/dists/buster/InRelease 파일을 받는데 실패했습니다  503  Service Temporarily Unavailable [IP: 34.74.126.177 443]
W: Some index files failed to download. They have been ignored, or old ones used instead.</code>
</pre>
<p>
  아직 저장소를 정리하지 않았다면 <kbd>/etc/apt/sources.list</kbd>나
  <kbd>/etc/apt/sources.list.d</kbd>에서 AdoptOpenJDK 저장소 설정을 삭제하자.
</p>
<p>
  AdoptOpenJDK GPG 키는 <kbd>apt-key add</kbd> 명령으로
  <kbd>/etc/apt/trusted.gpg</kbd> 파일에 저장되어 있을 것이다. 다음 명령어로 키
  정보를 확인한다.
</p>
<pre class="language-none" data-line="4">
<code># apt-key list
...
pub   rsa4096 2019-06-25 [SC] [expires: 2023-06-24]
      5951 8666 C652 3968 B1F8  6530 8AC3 B291 7488 5C03
uid           [ unknown] AdoptOpenJDK &lt;adoptopenjdk@jfrog.com&gt;
sub   rsa4096 2019-06-25 [E] [expires: 2023-06-24]
...</code>
</pre>
<p>
  4번째 줄의 전체 핑거프린트(Fingerprint)에서 마지막 8자리를 Key ID로 사용한다.
  위 예시에서는 <kbd>74885C03</kbd>이 Key ID이다. 다음 명령어로 AdoptOpenJDK
  키를 삭제한다.
</p>
<pre class="language-none">
<code># apt-key del 74885C03</code>
</pre>
<h5>데비안의 최신 apt 보안 표준</h5>
<p>외부 저장소의 GPG 키를 저장하는 곳은 크게 다음 세 가지가 있다.</p>
<ol>
  <li><kbd>/etc/apt/trusted.gpg</kbd> 파일</li>
  <li><kbd>/etc/apt/trusted.gpg.d/</kbd> 디렉터리 내부</li>
  <li><kbd>/etc/apt/keyrings/</kbd> 디렉터리 내부</li>
</ol>
<p>
  첫 번째와 두 번째 방식은 보안상 좋지 않아 권장되지 않거나 사용이 중단될
  예정이다. <kbd>trusted.gpg</kbd> 파일과 <kbd>trusted.gpg.d</kbd> 디렉터리 안의
  키는 시스템의 <strong>모든</strong> 저장소에서 해당 키를 무조건 신뢰하기
  때문이다.
</p>
<ul>
  <li>
    <kbd>apt-key add</kbd> 명령어로 <kbd>trusted.gpg</kbd> 파일에 추가하던
    방법은 사용이 금지된다.
    <strong
      >Debian 13 &quot;Trixie&quot;부터 apt-key는 제거되어 더 이상 사용할 수
      없다.</strong
    >
  </li>
  <li>
    <kbd>/etc/apt/trusted.gpg.d/</kbd> 디렉터리에 넣는 것 또한 권장되지 않는다.
    <kbd>rm</kbd> 명령어로 GPG 키를 편하게 삭제할 수 있다는 장점은 있으나,
    여전히 전역 신뢰(Global Trust) 문제로 인해 보안에 좋지 않다.
  </li>
</ul>
<p>
  따라서 별도의 디렉터리인 <kbd>/etc/apt/keyrings</kbd>에 GPG 키를 저장하고,
  <kbd>sources.list</kbd>에서
  <strong>&quot;이 저장소는 오직 이 키로만 인증한다(signed-by)&quot;</strong
  >라고 명시하는 세 번째 방식을 권장하고 있다.
</p>
<p>
  이 권장 방식을 따르고 있는 대표적인 예로 GitHub CLI가 있다. (공식 문서 참조:
  <a rel="noopener noreferrer" target="_blank" href="https://github.com/cli/cli/blob/trunk/docs/install_linux.md#debian">GitHub CLI Install</a
  >) GitHub CLI는
  <kbd>/etc/apt/keyrings/githubcli-archive-keyring.gpg</kbd> 경로에 GPG 키를
  생성하며, <kbd>/etc/apt/sources.list.d/github-cli.list</kbd> 파일의 내용은
  다음과 같다.
</p>
<pre class="language-none">
<code>deb [arch=amd64 signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main</code>
</pre>
<p>
  <kbd>signed-by</kbd> 옵션에 GPG 키 경로를 명시적으로 설정한 것을 볼 수 있다.
</p>
<h5>Eclipse Temurin 설치</h5>
<p>
  Eclipse Temurin 설치 페이지(<a rel="noopener noreferrer" target="_blank" href="https://adoptium.net/installation/linux/">https://adoptium.net/installation/linux/</a
  >)에서는 앞서 언급한 두 번째 방식(<kbd>/etc/apt/trusted.gpg.d/</kbd>)을
  안내하고 있다. 데비안의 최신 권장 방식을 아직 따르고 있지 않은데, 언젠가는
  문서가 업데이트될 것으로 보인다. 공식 문서대로 설치해도 사용에는 지장이
  없으나, 이 글에서는 <strong>데비안의 권장 방식(signed-by)</strong>으로
  설치하는 방법을 설명한다.
</p>
<h6>1. 필수 패키지 설치</h6>
<p>
  다음 명령어로 Eclipse Temurin 설치 과정에 필요한
  <kbd>wget, apt-transport-https, gpg</kbd> 패키지를 설치한다. <kbd>gpg</kbd>는
  데비안 설치 시 <kbd>gnupg</kbd>에 포함되어 이미 설치되어 있을 수 있다.
</p>
<pre class="language-none">
<code># apt update
# apt install wget apt-transport-https gpg</code>
</pre>
<h6>2. Eclipse Adoptium GPG 키 설치</h6>
<p>
  패키지의 무결성 검사에 사용하는 Eclipse Adoptium GPG 키를 설치한다.
  <kbd>/etc/apt/keyrings</kbd> 디렉터리에 설치하는 점에 주목하자.
</p>
<pre class="language-none">
<code># wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/keyrings/adoptium.gpg > /dev/null</code>
</pre>
<h6>3. Eclipse Adoptium DEB 저장소 설정</h6>
<p>
  Eclipse Adoptium DEB 저장소 설정을 추가한다. <kbd>signed-by</kbd> 옵션에
  Eclipse Adoptium GPG 키 경로를 지정하여, 해당 저장소가 오직 이 키만 사용하도록
  강제한다.
</p>
<pre class="language-none">
<code># echo "deb [signed-by=/etc/apt/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list</code>
</pre>
위 명령어로 생성된 <kbd>/etc/apt/sources.list.d/adoptium.list</kbd> 파일의
내용은 다음과 같다.
<pre class="language-none">
<code>deb [signed-by=/etc/apt/keyrings/adoptium.gpg] https://packages.adoptium.net/artifactory/deb bookworm main</code>
</pre>
<h6>4. temurin-&lt;version&gt;-jdk 설치</h6>
다음은 개인적으로 사용하는 구버전 Confluence 환경에 맞춰
<kbd>temurin-8-jdk</kbd> 패키지를 설치하는 예시이다. 본인이 필요한 버전의
패키지를 설치하면 된다.
<pre class="language-none">
<code># apt update
# apt install temurin-8-jdk</code>
</pre>
<h5>관련 글</h5>
<ul>
  <li>
    <a rel="noopener noreferrer" target="_blank" href="https://www.bitneer.dev/blog/%eb%8d%b0%eb%b9%84%ec%95%88%ec%97%90-adoptopenjdk-%ec%84%a4%ec%b9%98%ed%95%98%ea%b8%b0/">데비안에 AdoptOpenJDK 설치하기</a
    >
  </li>
</ul>
<h5>참고 자료</h5>
<ul>
  <li>
    <a rel="noopener noreferrer" target="_blank" href="https://adoptium.net/blog/2023/07/adoptopenjdk-jfrog-io-has-been-deprecated/">AdoptOpenJDK.jfrog.io has been deprecated! | Adoptium</a
    >
  </li>
  <li>
    <a rel="noopener noreferrer" target="_blank" href="https://adoptium.net/installation/linux/">https://adoptium.net/installation/linux/</a
    >
  </li>
  <li>
    <a rel="noopener noreferrer" target="_blank" href="https://wiki.debian.org/SecureApt">SecureApt &#8211; Debian Wiki</a
    >
  </li>
  <li>
    <a rel="noopener noreferrer" target="_blank" href="https://unix.stackexchange.com/questions/420961/how-to-identify-gpg-key-ids-so-they-may-be-deleted">debian &#8211; How to identify gpg key IDs so they may be deleted &#8211; Unix &amp;
      Linux Stack Exchange</a
    >
  </li>
</ul>
<p>The post <a rel="nofollow" href="https://www.bitneer.dev/blog/%eb%8d%b0%eb%b9%84%ec%95%88%ec%97%90-eclipse-temurin-jdk-%ec%84%a4%ec%b9%98%ed%95%98%ea%b8%b0/">데비안에 Eclipse Temurin JDK 설치하기</a> appeared first on <a rel="nofollow" href="https://www.bitneer.dev">bitneer.dev</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>데비안에 AdoptOpenJDK 설치하기</title>
		<link>https://www.bitneer.dev/blog/%eb%8d%b0%eb%b9%84%ec%95%88%ec%97%90-adoptopenjdk-%ec%84%a4%ec%b9%98%ed%95%98%ea%b8%b0/</link>
		
		<dc:creator><![CDATA[Choi Kyung-sik]]></dc:creator>
		<pubDate>Wed, 20 May 2020 15:27:10 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jdk]]></category>
		<guid isPermaLink="false">https://www.bitneer.dev/?p=373</guid>

					<description><![CDATA[<div data-nosnippet>데비안의 Java 패키지 Java를 개발한 썬 마이크로시스템즈는 2010년에 오라클에 인수합병되었다. 썬은 오픈소스에 친화적이었지만 오라클은 그렇지 않았다. 재배포를 허용하지 않는 라이센스 때문에 데비안에서 오라클의 Java 패키지는 빠졌다. 대신에 OpenJDK가 들어왔다. OpenJDK는 썬이 GPL로 공개한 Java 소스코드를 기반으로 하는 프로젝트이다. 오라클도 이 프로젝트에 주요 구성원으로 참여하고 있다. OpenJDK는 오라클 Java와 거의 동일하며 몇몇 상업적인 소스코드만이 빠져있다. 가장 큰 차이점이라면 소스코드의 빌드 주체와 ...</div>
<p>The post <a rel="nofollow" href="https://www.bitneer.dev/blog/%eb%8d%b0%eb%b9%84%ec%95%88%ec%97%90-adoptopenjdk-%ec%84%a4%ec%b9%98%ed%95%98%ea%b8%b0/">데비안에 AdoptOpenJDK 설치하기</a> appeared first on <a rel="nofollow" href="https://www.bitneer.dev">bitneer.dev</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h5>데비안의 Java 패키지</h5>
<p>
  Java를 개발한 썬 마이크로시스템즈는 2010년에 오라클에 인수합병되었다. 썬은
  오픈소스에 친화적이었지만 오라클은 그렇지 않았다. 재배포를 허용하지 않는
  라이센스 때문에 데비안에서 오라클의 Java 패키지는 빠졌다. 대신에 OpenJDK가
  들어왔다. OpenJDK는 썬이 GPL로 공개한 Java 소스코드를 기반으로 하는
  프로젝트이다. 오라클도 이 프로젝트에 주요 구성원으로 참여하고 있다. OpenJDK는
  오라클 Java와 거의 동일하며 몇몇 상업적인 소스코드만이 빠져있다. 가장 큰
  차이점이라면 소스코드의 빌드 주체와 어떤 라이센스로 배포하는가일 것이다.
</p>
<p>
  데비안에서 개발을 위한 JDK(Java Development Kit)의 설치는 다음과 같이 한다.
</p>
<pre class="language-none">
<code># apt-get install default-jdk</code>
</pre>

<p>
  개발이 목적이 아니라면 default-jre 패키지만을 설치할 수 있다. default
  JRE/JDK의 버전은 데비안 버전에 따라 달라진다. 데비안 9(stretch)는 OpenJDK v8,
  데비안 10(buster)은 OpenJDK v11이다.
</p>
<h5>AdoptOpenJDK 설치</h5>
<p>
  내가 사용하고 있는 Confluence, Jira, Butbucket은 AdoptOpenJDK를 권장한다. 현재
  데비안은 AdoptOpenJDK를 포함하고 있지 않다. 따라서 AdoptOpenJDK 저장소에서
  패키지를 설치해야 한다. root 계정으로 다음과 같이 작업한다.
</p>
<ol>
  <li>
    패키지의 무결성 검사에 사용하는 AdoptOpenJDK GPG 키를 설치하기 위해 다음과
    같이 한다.
    <pre class="language-none line-numbers">
<code># wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | apt-key add -</code>
</pre>
  </li>
  <li>
    AdoptOpenJDK DEB 저장소 설정을 추가하기 위해 다음의 명령어를 실행한다.
    <pre class="language-none line-numbers" data-start="2" data-line="1">
<code># add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/</code>
</pre>
  </li>
  <li>
    다음의 명령어로 adoptopenjdk-8-hotspot 패키지를 설치한다.
    <pre class="language-none line-numbers" data-start="3">
<code># apt-get update
# apt-get install adoptopenjdk-8-hotspot</code>
</pre>
  </li>
</ol>
<p>
  apt에 대한 GPG 키는 /etc/apt/trusted.gpg 파일이나 /etc/apt/trusted.gpg.d
  디렉토리에 저장된다. 다음의 명령어로 키 리스트를 확인할 수 있다.
</p>
<pre class="language-none">
<code># apt-key list
...
        [ unknown] AdoptOpenJDK (used for publishing RPM and DEB files) &lt;adoptopenjdk@gmail.com&gt;
...</code>
</pre>

<p>
  add-apt-repository 명령어가 없다면 먼저 software-properties-common 패키지를
  설치한다. which 명령어는 add-apt-repository 명령어가 있는지 확인하는 데
  유용하다.
</p>
<pre class="language-none line-numbers" data-line="2">
<code># which add-apt-repository
# apt-get install software-properties-common
...
# which add-apt-repository
/usr/bin/add-apt-repository</code>
</pre>

<p>
  위 2.의 add-apt-repository 명령은 /etc/apt/sources.list 파일 끝에 AdoptOpenJDK
  DEB 저장소 설정을 추가한다. 나는 깔끔함을 위해 /etc/apt/sources.list.d
  디렉토리 안에 adoptopenjdk.list 파일을 만들어 설정을 옮겨 주었다.
  /etc/apt/sources.list.d/adoptopenjdk.list의 내용은 다음과 같다.
</p>

<pre class="language-none">
<code>deb https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ stretch main
# deb-src https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/ stretch main</code>
</pre>

<p>
  데비안에 없는 패키지를 제공하는 비공식 APT 저장소를 서드파티
  저장소(third-party repository)라고 부른다. /etc/apt/sources.list.d가 서드파티
  저장소를 위한 것이고 파일 이름은 .list로 끝난다. 설정을 반영하기 위해서는
  &#8216;apt-get update&#8217; 명령어를 실행해야 한다. AdoptOpenJDK는 오픈 소스 프로젝트답게
  소스코드를 제공한다. 소스코드를 받아서 설치하고자 한다면 deb-src 앞의 주석을
  위한 샵(#)을 제거한다.
</p>
<h5>데비안의 Java 설정</h5>
<p>
  여러 개의 Java 버전을 설치하였다면 디폴트로 사용할 Java를 선택하기 위해 다음의
  명령어를 실행한다.
</p>
<pre class="language-none line-numbers" data-line="1">
<code># update-alternatives --config java
대체 항목 java에 대해 (/usr/bin/java 제공) 5개 선택이 있습니다.

  선택       경로                                              우선순 상태
------------------------------------------------------------
  0            /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin/java   1081      자동 모드
  1            /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin/java   1081      수동 모드
  2            /usr/lib/jvm/j2sdk1.7-oracle/jre/bin/java            317       수동 모드
  3            /usr/lib/jvm/java-6-sun/jre/bin/java                 63        수동 모드
  4            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java       1081      수동 모드
* 5            /usr/lib/jvm/jdk-8-oracle-x64/jre/bin/java           318       수동 모드

Press &lt;enter&gt; to keep the current choice[*], or type selection number:</code>
</pre>

<p>
  원하는 Java 버전 앞에 있는 숫자를 입력하고 &lt;Enter&gt; 키를 누른다. 현재의
  Java 버전을 확인하기 위해 다음의 명령어를 실행해 본다.
</p>
<pre class="language-none line-numbers" data-line="1,3">
<code># java -version
openjdk version &quot;1.8.0_252&quot;
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_252-b09)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.252-b09, mixed mode)</code>
</pre>

<p>
  디폴트로 사용할 Java 컴파일러를 선택하기 위해 위와 마찬가지로
  &#8216;update-alternatives&#8217; 명령어를 사용할 수 있다.
</p>
<pre class="language-none line-numbers" data-line="1">
<code># update-alternatives --config javac
대체 항목 javac에 대해 (/usr/bin/javac 제공) 3개 선택이 있습니다.

  선택       경로                                               우선순 상태
------------------------------------------------------------
  0            /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin/javac   1081      자동 모드
  1            /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin/javac   1081      수동 모드
  2            /usr/lib/jvm/j2sdk1.7-oracle/bin/javac                317       수동 모드
* 3            /usr/lib/jvm/jdk-8-oracle-x64/bin/javac               318       수동 모드

Press &lt;enter&gt; to keep the current choice[*], or type selection number:</code>
</pre>

<p>
  그러나 위와 같이 일일이 설정하기보다는 $JAVA_HOME/bin 디렉토리 안에 있는 실행
  파일들에 대해 한꺼번에 설정할 필요가 있다. 이를 위해 java-common 패키지의
  update-java-alternatives 명령어를 사용할 수 있다.
</p>
<pre class="language-none line-numbers" data-line="3,4,11,12,14,15">
<code># readlink -f /usr/bin/javac
/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin/javac
# readlink -f /usr/bin/keytool 
/usr/lib/jvm/jdk-8-oracle-x64/jre/bin/keytool
# update-java-alternatives -l
adoptopenjdk-8-hotspot-amd64   1081       /usr/lib/jvm/adoptopenjdk-8-hotspot-amd64
j2sdk1.7-oracle                317        /usr/lib/jvm/j2sdk1.7-oracle
java-1.8.0-openjdk-amd64       1081       /usr/lib/jvm/java-1.8.0-openjdk-amd64
java-6-sun                     63         /usr/lib/jvm/java-6-sun
jdk-8-oracle-x64               318        /usr/lib/jvm/jdk-8-oracle-x64
# update-java-alternatives -s adoptopenjdk-8-hotspot-amd64
update-alternatives: 오류: no alternatives for HtmlConverter
...
# readlink -f /usr/bin/keytool 
/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin/keytool</code>
</pre>

<p>
  readlink 명령어로 Java 관련 실행 파일의 경로를 확인할 수 있다.
  &#8216;update-java-alternatives -s&#8217;를 실행할 때 나오는 오류 메시지는 무시해도
  괜찮다.
</p>
<p>
  몇몇 응용프로그램은 Java의 설치 위치를 결정하기 위해 JAVA_HOME 환경 변수를
  사용한다. JAVA_HOME의 시스템 전역 설정을 위해 /etc/environment에 다음의 내용을
  추가한다.
</p>
<pre class="language-none">
<code>JAVA_HOME="/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64"</code>
</pre>

<p>
  JAVA_HOME의 값은 위의 &#8216;update-alternatives &#8211;config java&#8217; 명령어를 실행하여
  참고할 수 있다. 선호하는 Java 버전의 실행 경로에서 맨 뒤의 /bin/java를 빼고
  JAVA_HOME에 할당한다. 설정한 환경 변수를 반영하기 위해 다시 로그인하거나
  다음의 명령어를 실행한다.
</p>
<pre class="language-none line-numbers" data-line="1">
<code># source /etc/environment
# echo $JAVA_HOME
/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64</code>
</pre>

<p>
  /etc/environment에 설정하는 환경 변수는 로그인하는 모든 사용자에게 영향을
  미친다. 다른 값을 원하는 사용자는 홈 디렉토리의 .bashrc 파일에 JAVA_HOME을
  설정하여 오버라이딩할 수 있다.
</p>
<h5>참고 자료</h5>
<ul>
  <li>
    <a href="https://wiki.debian.org/Java/" target="_blank" rel="noopener noreferrer">Java &#8211; Debian Wiki</a
    >
  </li>
  <li>
    <a href="https://sylvestre.ledru.info/blog/2011/08/26/sun_java6_packages_removed_from_debian_u" target="_blank" rel="noopener noreferrer">sun-java6 packages removed soon from Debian/Ubuntu (and all other linux
      distros)</a
    >
  </li>
  <li>
    <a href="http://openjdk.java.net/" target="_blank" rel="noopener noreferrer">OpenJDK</a
    >
  </li>
  <li>
    <a href="https://adoptopenjdk.net/" target="_blank" rel="noopener noreferrer">AdoptOpenJDK &#8211; Open source, prebuilt OpenJDK binaries</a
    >
  </li>
  <li>
    <a href="https://adoptopenjdk.net/installation.html#linux-pkg" target="_blank" rel="noopener noreferrer">Installation | AdoptOpenJDK &#8211; Linux RPM and DEB installer packages</a
    >
  </li>
</ul>
<p>The post <a rel="nofollow" href="https://www.bitneer.dev/blog/%eb%8d%b0%eb%b9%84%ec%95%88%ec%97%90-adoptopenjdk-%ec%84%a4%ec%b9%98%ed%95%98%ea%b8%b0/">데비안에 AdoptOpenJDK 설치하기</a> appeared first on <a rel="nofollow" href="https://www.bitneer.dev">bitneer.dev</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
