<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kanna</id>
	<title>ArchWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kanna"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/Kanna"/>
	<updated>2026-04-14T04:26:02Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Java&amp;diff=22480</id>
		<title>Java</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Java&amp;diff=22480"/>
		<updated>2021-11-23T07:57:58Z</updated>

		<summary type="html">&lt;p&gt;Kanna: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:プログラミング言語]]&lt;br /&gt;
[[Category:Oracle]]&lt;br /&gt;
[[cs:Java]]&lt;br /&gt;
[[de:Java]]&lt;br /&gt;
[[en:Java]]&lt;br /&gt;
[[es:Java]]&lt;br /&gt;
[[fa:Java]]&lt;br /&gt;
[[fr:Java]]&lt;br /&gt;
[[it:Java]]&lt;br /&gt;
[[pt:Java]]&lt;br /&gt;
[[ru:Java]]&lt;br /&gt;
[[zh-hans:Java]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Java パッケージガイドライン}}&lt;br /&gt;
{{Related|Java 実行環境のフォント}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Java|Wikipedia]] より:&lt;br /&gt;
:Java は Sun Microsystems によって開発され1995年に Sun Microsystems の Java プラットフォームのコアコンポーネントとしてリリースされたプログラミング言語です。構文は C および C++ から多くを引き継いでいますが、オブジェクトモデルがシンプルで低水準の機能が削られています。基本的に Java のアプリケーションはコンピュータアーキテクチャに関係なく動く Java 仮想マシン ([[Wikipedia:ja:Java仮想マシン|JVM]]) で動くバイトコードにコンパイルされます。&lt;br /&gt;
&lt;br /&gt;
Arch Linux は公式でオープンソースの [https://openjdk.java.net/ OpenJDK] バージョン7・8・11・17をサポートしています。これらの JVM は全てインストールしても衝突せず、ヘルパースクリプト {{Ic|archlinux-java}} を使って切り替えることが可能です。他の Java 環境は [[AUR]] からインストールすることができますが公式のサポートはありません。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* Arch Linux が公式にサポートしているのは [[#OpenJDK|OpenJDK]] 実装だけです。&lt;br /&gt;
* インストールした後、Java 環境をシェルに認識させる必要があります ({{Ic|$PATH}} 変数)。コマンドラインから {{Ic|/etc/profile}} を source するか、デスクトップ環境ならばログアウトとログインが必要です。}}&lt;br /&gt;
&lt;br /&gt;
依存パッケージとして自動的にインストールされる {{Pkg|java-runtime-common}} と {{Pkg|java-environment-common}} という名前の2つの&#039;&#039;共通&#039;&#039;パッケージには環境ファイル {{Ic|/etc/profile.d/jre.sh}} が入っています。このファイルには全ての JVM 環境で共通の変数が含まれています。また、{{Pkg|java-runtime-common}} パッケージにはデフォルトの Java 環境を表示したり変更することができるユーティリティスクリプト {{Ic|archlinux-java}} も付いています。&lt;br /&gt;
&lt;br /&gt;
このスクリプトは衝突しないように {{Ic|/usr/lib/jvm/java-${JAVA_MAJOR_VERSION}-${VENDOR_NAME} }} にインストールされた Java 環境や Java ランタイムに {{Ic|/usr/lib/jvm/default}} や {{Ic|/usr/lib/jvm/default-runtime}} からリンクを設定します。&lt;br /&gt;
{{Warning|The links {{Ic|/usr/lib/jvm/default}} and {{Ic|/usr/lib/jvm/default-runtime}} should &#039;&#039;&#039;always&#039;&#039;&#039; be edited with {{Ic|archlinux-java}}.}}&lt;br /&gt;
さらに Java 環境セットによる全ての実行ファイルのために {{Ic|/usr/bin}} にリンクを作成・更新します。{{Ic|/etc/profile.d/jdk.sh}} ファイルは現在どのパッケージにも入っていません。&lt;br /&gt;
&lt;br /&gt;
=== OpenJDK ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:OpenJDK|OpenJDK]] は Java Platform, Standard Edition (Java SE) のオープンソース実装です。&lt;br /&gt;
&lt;br /&gt;
;ヘッドレス JRE: 最小限の Java 実行環境 - GUI のない Java プログラムを実行するのに必要。&lt;br /&gt;
;フル JRE: 完全な Java 実行環境 - Java の GUI プログラムを実行するのに必要。ヘッドレス JRE に依存。&lt;br /&gt;
;JDK:[[Wikipedia:ja:Java Development Kit|Java Development Kit]] - Java で開発するのに必要。フル JRE に依存。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! バージョン !! ヘッドレス JRE !! フル JRE !! JDK !! ドキュメント !! ソース&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjdk.java.net/projects/jdk/17/ OpenJDK 17] || {{Pkg|jre-openjdk-headless}} || {{Pkg|jre-openjdk}} || {{Pkg|jdk-openjdk}} || {{Pkg|openjdk-doc}} || {{Pkg|openjdk-src}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjdk.java.net/projects/jdk/11/ OpenJDK 11] || {{Pkg|jre11-openjdk-headless}} || {{Pkg|jre11-openjdk}} || {{Pkg|jdk11-openjdk}} || {{Pkg|openjdk11-doc}} || {{Pkg|openjdk11-src}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjdk.java.net/projects/jdk8/ OpenJDK 8] || {{Pkg|jre8-openjdk-headless}} || {{Pkg|jre8-openjdk}} || {{Pkg|jdk8-openjdk}} || {{Pkg|openjdk8-doc}} || {{Pkg|openjdk8-src}}&lt;br /&gt;
|-&lt;br /&gt;
| [https://openjdk.java.net/projects/jdk7/ OpenJDK 7] || {{Pkg|jre7-openjdk-headless}} || {{Pkg|jre7-openjdk}} || {{Pkg|jdk7-openjdk}} || {{Pkg|openjdk7-doc}} || {{Pkg|openjdk7-src}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{App|IcedTea-Web|Java Web Start と旧式の Java ブラウザプラグイン。|https://icedtea.classpath.org/wiki/IcedTea-Web|{{Pkg|icedtea-web}}}}&lt;br /&gt;
{{App|OpenJFX 8|JavaFX のオープンソース実装。Oracle による JRE と JDK の実装である Java SE を利用している場合はパッケージをインストールする必要はありません [https://wiki.openjdk.java.net/display/OpenJFX/Repositories+and+Releases]。オープンソースの Java 実装 (OpenJDK プロジェクト) を使っているユーザーのためのパッケージです。|https://openjdk.java.net/projects/openjfx/|{{Pkg|java-openjfx}}, {{Pkg|java-openjfx-doc}}, {{Pkg|java-openjfx-src}}}}&lt;br /&gt;
{{App|OpenJFX|最新の OpenJFX コミュニティビルド。|https://openjfx.io/|{{AUR|java-openjfx-bin}}}}&lt;br /&gt;
{{App|OpenJDK EA|最新開発版の OpenJDK アーリーアクセスビルド。|https://jdk.java.net|{{AUR|java-openjdk-ea-bin}}}}&lt;br /&gt;
{{App|OpenJFX EA|最新開発版の OpenJFX アーリーアクセスビルド。|https://openjfx.io/|{{AUR|java-openjfx-ea-bin}}}}&lt;br /&gt;
&lt;br /&gt;
=== 他の実装 ===&lt;br /&gt;
&lt;br /&gt;
{{App|Java SE|Oracle による JRE と JDK の実装。|https://www.oracle.com/technetwork/java/javase/downloads/index.html|{{AUR|jre}} {{AUR|jre9}} {{AUR|jre8}} {{AUR|jre7}} {{AUR|jre6}} {{AUR|jdk}} {{AUR|jdk9}} {{AUR|jdk8}} {{AUR|jdk7}} {{AUR|jdk6}} {{AUR|jdk5}} {{AUR|jdk-devel}}}}&lt;br /&gt;
{{App|OpenJ9|IBM から Eclipse に継承された JRE の実装。|https://www.eclipse.org/openj9/|{{AUR|jdk9-openj9-bin}} {{AUR|jdk8-openj9-bin}}}}&lt;br /&gt;
{{App|IBM J9|IBM による第7・8版 JRE の実装。|https://developer.ibm.com/javasdk/|{{AUR|jdk8-j9-bin}} {{AUR|jdk7-j9-bin}} {{AUR|jdk7r1-j9-bin}}}}&lt;br /&gt;
{{App|Parrot VM|[http://www.parrot.org/ Parrot] は VM であり、異なる2つの方法によって実験的に [http://trac.parrot.org/parrot/wiki/Languages Java をサポート] しています: [https://code.google.com/p/parrot-jvm/ Java VM バイトコード翻訳機] もしくは [https://github.com/chrisdolan/perk Parrot VM のための Java コンパイラ]。|http://www.parrot.org/|{{AUR|parrot}}}}&lt;br /&gt;
&lt;br /&gt;
{{Note|32ビット版の Java SE はパッケージの前に {{ic|bin32-}} が付きます。例: {{AUR|bin32-jre}} や {{AUR|bin32-jdk}}{{Broken package link|パッケージが存在しません}}。これらのパッケージは後ろに {{ic|32}} が付く {{Pkg|java-runtime-common}} として機能する {{AUR|java32-runtime-common}} を使用します。例: {{ic|java32}}。}}&lt;br /&gt;
&lt;br /&gt;
=== 開発ツール ===&lt;br /&gt;
&lt;br /&gt;
統合開発環境については[[アプリケーション一覧/ユーティリティ#統合開発環境]]や &#039;&#039;Java IDE&#039;&#039; サブセクションを見てください。&lt;br /&gt;
&lt;br /&gt;
{{AUR|proguard}} などの難読化ツールを使うことでリバースエンジニアリングを行いにくくすることができます。&lt;br /&gt;
&lt;br /&gt;
==== 逆コンパイラ ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Bytecode Viewer|Java リバースエンジニアリングスイート。逆コンパイラ・エディタ・デバッガが含まれています。|https://bytecodeviewer.com|{{AUR|bytecode-viewer}}}}&lt;br /&gt;
* {{App|CFR|Java 9, 10 以降の新しい機能をサポートする Java 逆コンパイラ。|https://www.benf.org/other/cfr/|{{AUR|cfr}}}}&lt;br /&gt;
* {{App|Fernflower|[[IntelliJ IDEA]] の一部として開発されている Java の解析逆コンパイラ。|https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine|{{AUR|fernflower-git}}}}&lt;br /&gt;
* {{App|[[Wikipedia:JAD (software)|JAD]]|メンテナンスが止まっている Java 逆コンパイラ。|https://varaneckas.com/jad|{{Pkg|jad}}}}&lt;br /&gt;
* {{App|JD-Core-java|[[Wikipedia:Java Decompiler|Java Decompiler]] の薄いラッパー。|https://github.com/nviennot/jd-core-java|{{AUR|jd-core-java}}}}&lt;br /&gt;
* {{App|Krakatau|Java 逆コンパイラ・アセンブラ・逆アセンブラ。|https://github.com/Storyyeller/Krakatau|{{AUR|krakatau-git}}}}&lt;br /&gt;
* {{App|Procyon decompiler|ILSpy と Mono.Cecil の影響を受けた実験的な Java 逆コンパイラ。|https://bitbucket.org/mstrobel/procyon/wiki/Java%20Decompiler|{{AUR|procyon-decompiler}}, GUI: {{AUR|luyten}}}}&lt;br /&gt;
&lt;br /&gt;
== JVM の切り替え ==&lt;br /&gt;
&lt;br /&gt;
ヘルパースクリプト {{Ic|archlinux-java}} を使って切り替えることができます:&lt;br /&gt;
&lt;br /&gt;
 archlinux-java &amp;lt;COMMAND&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 COMMAND:&lt;br /&gt;
 	status		インストールされている Java 環境と有効になっている環境を表示&lt;br /&gt;
 	get			デフォルトに設定されている Java 環境を返す&lt;br /&gt;
 	set &amp;lt;JAVA_ENV&amp;gt;	&amp;lt;JAVA_ENV&amp;gt; をデフォルトに設定&lt;br /&gt;
 	unset			デフォルトの Java 環境の設定を解除&lt;br /&gt;
 	fix			不正な Java 環境の設定を修正&lt;br /&gt;
&lt;br /&gt;
=== インストールされている Java 互換環境を表示 ===&lt;br /&gt;
&lt;br /&gt;
 $ archlinux-java status&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
&lt;br /&gt;
 $ archlinux-java status&lt;br /&gt;
 Available Java environments:&lt;br /&gt;
   java-7-openjdk (default)&lt;br /&gt;
   java-8-openjdk/jre&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(default)&#039;&#039; は {{Ic|java-7-openjdk}} がデフォルトに設定されていることを示しています。{{Ic|java}} やその他のバイナリの呼び出しはこの Java インストールに基づきます。また、上の出力では OpenJDK 8 の &#039;&#039;JRE&#039;&#039; しかインストールされていないのに注意してください。&lt;br /&gt;
&lt;br /&gt;
=== デフォルトの Java 環境を変更 ===&lt;br /&gt;
&lt;br /&gt;
 # archlinux-java set &amp;lt;JAVA_ENV_NAME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
&lt;br /&gt;
 # archlinux-java set java-8-openjdk/jre&lt;br /&gt;
&lt;br /&gt;
{{Ic|archlinux-java}} では存在しない Java 環境は設定できません。上の例では、{{pkg|jre8-openjdk}} はインストールされていますが {{pkg|jdk8-openjdk}} はインストール&#039;&#039;&#039;されていない&#039;&#039;&#039;ため {{Ic|java-8-openjdk}} を設定しようとしても失敗します:&lt;br /&gt;
&lt;br /&gt;
 # archlinux-java set java-8-openjdk&lt;br /&gt;
 &#039;/usr/lib/jvm/java-8-openjdk&#039; is not a valid Java environment path&lt;br /&gt;
&lt;br /&gt;
=== デフォルトの Java 環境の設定を解除 ===&lt;br /&gt;
&lt;br /&gt;
パッケージが設定を管理するため Java 環境の設定を解除する必要はありません。それでも設定を解除したいときは、{{Ic|unset}} コマンドを使って下さい:&lt;br /&gt;
&lt;br /&gt;
 # archlinux-java unset&lt;br /&gt;
&lt;br /&gt;
=== デフォルトの Java 環境を修正 ===&lt;br /&gt;
&lt;br /&gt;
存在しない Java 環境のリンクが設定されている場合、{{Ic|archlinux-java fix}} コマンドを呼び出すとリンクの修正が行われます。デフォルトの Java 環境が設定されていないときは、インストールされている Java 環境を探して設定を行います (公式でサポートされているパッケージ &amp;quot;OpenJDK 8&amp;quot; がまず初めに使われます。他のインストール環境はその後です):&lt;br /&gt;
&lt;br /&gt;
 # archlinux-java fix&lt;br /&gt;
&lt;br /&gt;
=== デフォルトでないバージョンの Java を使ってアプリケーションを起動 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトのバージョン以外の Java を使ってアプリケーションを起動したい場合 (例えば jre7 と jre8 の両方がインストールされている場合)、bash スクリプトでアプリケーションをラッピングして Java のデフォルトの PATH を変更することができます。例えば、デフォルトのバージョンが jre7 で、jre8 を使いたい場合:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh &lt;br /&gt;
 &lt;br /&gt;
 export PATH=/usr/lib/jvm/java-8-openjdk/jre/bin/:$PATH&lt;br /&gt;
 exec /path/to/application &amp;quot;$@&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== {{Ic|archlinux-java}} をサポートするのに必要なパッケージの条件 ==&lt;br /&gt;
&lt;br /&gt;
{{Note|以下の情報は32ビットの Java パッケージである {{ic|archlinux32-java}} にも同じく当てはまります。パッケージや実行ファイルの名前には {{ic|32}} を含めてください。}}&lt;br /&gt;
&lt;br /&gt;
このセクションは [[AUR]] に新しい JVM のパッケージを投稿し、Arch Linux の JVM の扱いかたにあわせて {{Ic|archlinux-java}} を使用したいパッケージ作成者を対象にしています。パッケージは以下の条件を満たす必要があります:&lt;br /&gt;
&lt;br /&gt;
* 全てのファイルは {{Ic|/usr/lib/jvm/java-${JAVA_MAJOR_VERSION}-${VENDOR_NAME} }} 以下に配置&lt;br /&gt;
* 該当するパッケージに [https://www.archlinux.org/packages/extra/any/java-runtime-common/files/ java-runtime-common] や [https://www.archlinux.org/packages/extra/any/java-environment-common/files/ java-environment-common] に入っているリンクの実行可能ファイルがあること&lt;br /&gt;
* リンクが [https://www.archlinux.org/packages/extra/any/java-runtime-common/files/ java-runtime-common] や [https://www.archlinux.org/packages/extra/any/java-environment-common/files/ java-environment-common] にない場合にのみ、{{Ic|/usr/bin}} から実行可能ファイルへのリンク&lt;br /&gt;
* man ページの末尾に {{Ic|-${VENDOR_NAME}${JAVA_MAJOR_VERSION} }} をつけて衝突しないようにする ([https://www.archlinux.org/packages/extra/x86_64/jre8-openjdk/files/ jre8-openjdk のファイルリスト]を見れば {{Ic|-openjdk8}} を付ける man ページがわかります)&lt;br /&gt;
* 他の JDK や {{Ic|java-runtime}}, {{Ic|java-runtime-headless}}, {{Ic|java-environment}} の [[PKGBUILD#conflicts|conflicts]] や [[PKGBUILD#replaces|replaces]] は宣言しない&lt;br /&gt;
* &#039;&#039;install 関数&#039;&#039;で {{Ic|archlinux-java}} スクリプトを使って&#039;&#039;&#039;他の Java 環境が設定されていない場合に&#039;&#039;&#039; Java 環境をデフォルトに設定 (強制的にデフォルトとしてインストールしてはいけません)。サンプルは[https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/java7-openjdk 公式にサポートされている Java 環境のパッケージのソース]を参照。&lt;br /&gt;
&lt;br /&gt;
他の注意事項:&lt;br /&gt;
* Java 環境が必要なパッケージでベンダーを問わない場合は通常通りに {{Ic|java-runtime}}, {{Ic|java-runtime-headless}} または {{Ic|java-environment}} を依存パッケージとして宣言してください&lt;br /&gt;
* &#039;&#039;&#039;特定の Java ベンダー&#039;&#039;&#039;が必要なパッケージは適当なパッケージを依存パッケージとして宣言してください&lt;br /&gt;
* OpenJDK パッケージは {{Ic|1=provides=&amp;quot;java-runtime-openjdk=${pkgver}&amp;quot;}} などを宣言しています。このためサードパーティのパッケージはバージョンを指定せずに OpenJDK を依存パッケージとして宣言することができます&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
=== MySQL ===&lt;br /&gt;
JDBC ドライバーは URL のポートを使ってデータベースへの接続を確立するため、同じホストで動作していたとしても&amp;quot;リモート&amp;quot;とされます (すなわち MySQL はデフォルト設定のようにポートを開きません)。そのため、JDBC と MySQL を使うには MySQL のリモートアクセスを有効にする必要があります。[[MariaDB#リモートアクセスを有効にする|MariaDB の記事]]の指示に従って下さい。&lt;br /&gt;
&lt;br /&gt;
=== 他のウィンドウマネージャになりすます ===&lt;br /&gt;
[https://tools.suckless.org/x/wmname suckless.org] の {{pkg|wmname}} を使うことで JVM に他のウィンドウマネージャを動かしていると信じこませることが可能です。これによって [[Awesome]], [[Dwm]], [[Ratpoison]] などのウィンドウマネージャで起こる Java の GUI のレンダリング問題が解決する可能性があります。&lt;br /&gt;
&lt;br /&gt;
 $ wmname LG3D&lt;br /&gt;
&lt;br /&gt;
(wmname コマンドを実行した後、アプリケーションを再起動してください。)&lt;br /&gt;
&lt;br /&gt;
これが機能するのは JVM にはハードコードされた既知の、ノンリペアレントウィンドウマネージャのリストが含まれているためです。最大の皮肉として、[[wikipedia:Project_Looking_Glass|Sun によって Java で書かれた]]ノンリペアレントウィンドウマネージャである {{ic|LG3D}} になりすますことを好むユーザーもいます。&lt;br /&gt;
&lt;br /&gt;
=== フォントが読みにくい ===&lt;br /&gt;
下の [[#フォントレンダリングを改善する]] で書かれている方法でも、フォントによっては読みやすくならないことがあります。このようなときは、使用している MS フォントを変えてみて下さい。{{AUR|ttf-ms-fonts}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
=== 特定のアプリケーションでテキストが表示されない ===&lt;br /&gt;
特定のアプリケーションでテキストが完全に表示されない場合は {{Bug|40871}} で提案されているように [[#ヒントとテクニック]] のオプションを使うと直るかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== Too many levels of symbolic links ===&lt;br /&gt;
&lt;br /&gt;
以下のようなエラーが表示される場合:&lt;br /&gt;
&lt;br /&gt;
 /usr/bin/java: line 2: /usr/lib/jvm/default/bin/java: Too many levels of symbolic links&lt;br /&gt;
 /usr/bin/java: line 2: exec: /usr/lib/jvm/default/bin/java: cannot execute: Too many levels of symbolic links&lt;br /&gt;
&lt;br /&gt;
[[#デフォルトの Java 環境を修正|デフォルトの Java 環境を修正]]することで問題が解決するはずです。[https://bbs.archlinux.org/viewtopic.php?pid=1453803] も見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== JavaFX アプリケーションのデバッグ時にシステムがフリーズする ===&lt;br /&gt;
&lt;br /&gt;
JavaFX アプリケーションをデバッグする際にシステムがフリーズする場合、JVM のオプション {{Ic|1=-Dsun.awt.disablegrab=true}} を使ってみてください。&lt;br /&gt;
&lt;br /&gt;
詳しくは https://bugs.java.com/view_bug.do?bug_id=6714678 を参照。&lt;br /&gt;
&lt;br /&gt;
=== JavaFX の MediaPlayer コンストラクタが例外を投げる ===&lt;br /&gt;
&lt;br /&gt;
JavaFX のサウンドモジュールから MediaPlayer クラスのインスタンスを作成しようとしたときに以下の例外が発生することがあります (Oracle JDK と OpenJDK の両方で発生):&lt;br /&gt;
&lt;br /&gt;
 ... (i.e. FXMLLoader construction exceptions) ...&lt;br /&gt;
 Caused by: MediaException: UNKNOWN : com.sun.media.jfxmedia.MediaException: Could not create player! : com.sun.media.jfxmedia.MediaException: Could not create player!&lt;br /&gt;
  at javafx.scene.media.MediaException.exceptionToMediaException(MediaException.java:146)&lt;br /&gt;
  at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:511)&lt;br /&gt;
  at javafx.scene.media.MediaPlayer.&amp;lt;init&amp;gt;(MediaPlayer.java:414)&lt;br /&gt;
  at &amp;lt;constructor call&amp;gt;&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
原因は JavaFX が Arch Linux のリポジトリに含まれている新しい {{pkg|ffmpeg}} と互換性がないためです。&lt;br /&gt;
&lt;br /&gt;
解決方法は {{AUR|ffmpeg-compat-55}} をインストールすることです。&lt;br /&gt;
&lt;br /&gt;
参照: https://www.reddit.com/r/archlinux/comments/70o8o6/using_a_javafx_mediaplayer_in_arch/&lt;br /&gt;
&lt;br /&gt;
=== Java アプリケーションで外部リンクを開けない ===&lt;br /&gt;
Java アプリケーションからウェブブラウザなどのリンクを開けない場合、{{Pkg|gvfs}} をインストールしてください。Desktop.Action.BROWSE メソッドが必要とします。[https://bugs.launchpad.net/ubuntu/+source/openjdk-8/+bug/1574879/comments/2] を参照。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
{{Note|このセクションで提案されていることは、インストールされている (外部の) Java ランタイムを明示的に使用する全てのアプリケーションに適用されます。ただし独自の (内部の) ランタイムを持っていたり GUI やフォントレンダリングに独自の手法を使っているアプリケーションも存在するため、下に書かれていることが全て機能するとは保証できません。}}&lt;br /&gt;
&lt;br /&gt;
Java アプリケーションのほとんどは Java ランタイムの前に変数を設定することで挙動をコントロールすることができます。[https://bbs.archlinux.org/viewtopic.php?id=72892 フォーラムの投稿]より、変数を設定するには {{Ic|~/.bashrc}} (もしくは全てのユーザーに適用するには {{Ic|/etc/profile.d/jre.sh}}) に次の行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 export _JAVA_OPTIONS=&amp;quot;-D&#039;&#039;&#039;&amp;lt;option 1&amp;gt;&#039;&#039;&#039; -D&#039;&#039;&#039;&amp;lt;option 2&amp;gt;&#039;&#039;&#039;...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
例えば、システムのアンチエイリアスがされたフォントを使用して swing に GTK のルックアンドフィールを使わせるには:&lt;br /&gt;
&lt;br /&gt;
 export _JAVA_OPTIONS=&#039;-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel&#039;&lt;br /&gt;
&lt;br /&gt;
=== フォントレンダリングを改善する ===&lt;br /&gt;
クローズドソースとオープンソースの Java 実装のどちらもがフォントのアンチエイリアスを不適当に実装していることが知られています。次のオプションを使うことでこれを修正することが可能です: {{Ic|1=-Dawt.useSystemAAFontSettings=on}}, {{Ic|1=-Dswing.aatext=true}}&lt;br /&gt;
&lt;br /&gt;
詳しい情報は [[Java 実行環境のフォント]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== コマンドラインの &#039;Picked up _JAVA_OPTIONS&#039; メッセージを消す ===&lt;br /&gt;
&lt;br /&gt;
{{ic|_JAVA_OPTIONS}} 環境変数を設定すると java (openjdk) から標準出力に次のようなメッセージが書き出されます: &#039;Picked up _JAVA_OPTIONS=...&#039;。ターミナルにメッセージを表示しないようにするには、シェルのスタートアップファイルから環境変数を消去して、以下のように java のエイリアスを作成してコマンドライン引数を使ってオプションを指定するようにしてください:&lt;br /&gt;
&lt;br /&gt;
 _SILENT_JAVA_OPTIONS=&amp;quot;$_JAVA_OPTIONS&amp;quot;&lt;br /&gt;
 unset _JAVA_OPTIONS&lt;br /&gt;
 alias java=&#039;java &amp;quot;$_SILENT_JAVA_OPTIONS&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
=== GTK のルックアンドフィール ===&lt;br /&gt;
Java プログラムの見た目が酷い場合、swing コンポーネントのデフォルトのルックアンドフィールを設定することができます: {{Ic|1=swing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel}}.&lt;br /&gt;
&lt;br /&gt;
頑固な Java プログラムはクロスプラットフォームの Metal ルックアンドフィールを使用し続けることがあります。そのような場合には以下のプロパティを設定することで GTK のルックアンドフィールを使うように強制することが可能です: {{Ic|1=swing.crossplatformlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel}}。&lt;br /&gt;
&lt;br /&gt;
==== GTK3 のサポート ====&lt;br /&gt;
&lt;br /&gt;
バージョン 9 以前の Java では、GTK のルックアンドフィールが GTK2 に対してリンクされていますが、新しいデスクトップアプリケーションは GTK3 を使用します。GTK3 アプリに GUI の Java プラグインが存在すると、Java の GUI を開いたときにアプリがクラッシュします。同じプロセスで GTK2 と GTK3 を混ぜることはできません。例えば Libreoffice 5.0 などがこれに該当します。&lt;br /&gt;
&lt;br /&gt;
[https://openjdk.java.net/jeps/283 Java 9] から、GTK のルックアンドフィールは GTK のバージョン {{Ic|2}}, {{Ic|2.2}}, {{Ic|3}} で動作するようになっており、デフォルトは GTK2 になっています。以下のプロパティを設定することで上書きすることができます:&lt;br /&gt;
&lt;br /&gt;
 jdk.gtk.version=3&lt;br /&gt;
&lt;br /&gt;
=== 2D のパフォーマンスの向上 ===&lt;br /&gt;
&lt;br /&gt;
OpenGL ベースのハードウェアアクセラレーションパイプラインに切り替えることで 2D の性能が改善します:&lt;br /&gt;
&lt;br /&gt;
 export _JAVA_OPTIONS=&#039;-Dsun.java2d.opengl=true&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|このオプションを有効にすると JetBrains IDE などのソフトウェアの UI がおかしくなって、ウィンドウやポップアップ、ツールバーが一部しか表示されなくなることがあります。}}&lt;br /&gt;
&lt;br /&gt;
=== リペアレントしないウィンドウマネージャ ===&lt;br /&gt;
&lt;br /&gt;
リペアレントしないウィンドウマネージャを使用する場合は {{Ic|.xinitrc}} で以下の環境変数を設定してください:&lt;br /&gt;
&lt;br /&gt;
 export _JAVA_AWT_WM_NONREPARENTING=1&lt;br /&gt;
&lt;br /&gt;
上記の設定を行わないと Java プログラムが正しく描画されないことがあります。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://math.hws.edu/javanotes/ Introduction to Programming Using Java]&lt;/div&gt;</summary>
		<author><name>Kanna</name></author>
	</entry>
</feed>