「JavaXPCOM」の版間の差分
表示
削除された内容 追加された内容
m編集の要約なし |
<source> -> <syntaxhighlight> |
||
(5人の利用者による、間の6版が非表示) | |||
1行目: | 1行目: | ||
'''JavaXPCOM'''は、[[XPCOM]]の[[ |
'''JavaXPCOM'''は、[[XPCOM]]の[[Java]][[言語バインディング|バインディング]]である。[[XULRunner]]に同梱されており、これを使用することでJavaからXPCOMコンポーネントの利用が可能となる。 |
||
== 利用方法 == |
== 利用方法 == |
||
5行目: | 5行目: | ||
=== CLASSPATHの設定 === |
=== CLASSPATHの設定 === |
||
CLASSPATHにMozillaInterfaces.jarを追加する。 |
[[クラスパス|CLASSPATH]]にMozillaInterfaces.jarを追加する。 |
||
export CLASSPATH=$CLASSPATH:/opt/xulrunner/1.8.0.4/xulrunner/sdk/lib/MozillaInterfaces.jar |
export CLASSPATH=$CLASSPATH:/opt/xulrunner/1.8.0.4/xulrunner/sdk/lib/MozillaInterfaces.jar |
||
11行目: | 11行目: | ||
==== インポート ==== |
==== インポート ==== |
||
インポートするパッケージは、'org.mozilla.xpcom.*'となる。XULRunnerには、1,000を越えるコンポーネントが含まれるが、すべてこのパッケージに属している。 |
インポートするパッケージは、'org.mozilla.xpcom.*'となる。XULRunnerには、1,000を越えるコンポーネントが含まれるが、すべてこのパッケージに属している。 |
||
<syntaxhighlight lang="java"> |
|||
import org.mozilla.xpcom.*; |
|||
</syntaxhighlight> |
|||
==== GREパスの取得 ==== |
==== GREパスの取得 ==== |
||
GREパス、つまりXULRunnerのインストール場所を取得する。取得したパスは、XPCOMの初期化時に使用する。 |
GREパス、つまりXULRunnerのインストール場所を取得する。取得したパスは、XPCOMの初期化時に使用する。 |
||
<syntaxhighlight lang="java"> |
|||
GREVersionRange[] range = new GREVersionRange[1]; |
|||
GREVersionRange[] range = new GREVersionRange[1]; |
|||
range[0] = new GREVersionRange("1.8", true, "1.9+", true); |
|||
Properties props = null; |
|||
File grePath = null; |
|||
try { |
|||
grePath = Mozilla.getGREPathWithProperties(range, props); |
|||
} catch (FileNotFoundException e) { } |
|||
if (grePath == null) { |
|||
System.out.println("found no GRE PATH"); |
|||
return; |
|||
} |
|||
</syntaxhighlight> |
|||
==== Mozillaオブジェクトの取得 ==== |
==== Mozillaオブジェクトの取得 ==== |
||
Mozillaオブジェクトを取得する。 |
Mozillaオブジェクトを取得する。 |
||
<syntaxhighlight lang="java"> |
|||
Mozilla mozilla = Mozilla.getInstance(); |
|||
</syntaxhighlight> |
|||
==== XPCOMの初期化 ==== |
==== XPCOMの初期化 ==== |
||
<syntaxhighlight lang="java"> |
|||
try { |
|||
⚫ | |||
mozilla.initialize(grePath); |
|||
⚫ | |||
} catch (IllegalArgumentException ex) { |
|||
System.out.println("no javaxpcom.jar found in given path"); |
|||
return; |
|||
return; |
|||
} catch (Exception ex) { |
|||
System.out.println("initXPCOM failed"); |
|||
ex.printStackTrace(); |
|||
return; |
|||
} |
|||
</syntaxhighlight> |
|||
==== コンポーネントマネージャの取得 ==== |
==== コンポーネントマネージャの取得 ==== |
||
<syntaxhighlight lang="java"> |
|||
nsIComponentManager componentManager = mozilla.getComponentManager(); |
|||
</syntaxhighlight> |
|||
==== XPCOMコンポーネントの取得 ==== |
==== XPCOMコンポーネントの取得 ==== |
||
Contract IDを使って、コンポーネントをインスタンス化する。 |
Contract IDを使って、コンポーネントをインスタンス化する。 |
||
<syntaxhighlight lang="java"> |
|||
nsIMutableArray array |
|||
nsIMutableArray array = (nsIMutableArray)componentManager.createInstanceByContractID( |
|||
"@mozilla.org/array;1", |
|||
componentManager.createInstanceByContractID( |
|||
null, |
|||
⚫ | |||
null, |
|||
</syntaxhighlight> |
|||
⚫ | |||
==== XPCOMのシャットダウン ==== |
==== XPCOMのシャットダウン ==== |
||
<syntaxhighlight lang="java"> |
|||
mozilla.shutdownXPCOM(null); |
|||
</syntaxhighlight> |
|||
== 関連項目 == |
== 関連項目 == |
2021年8月1日 (日) 04:33時点における最新版
JavaXPCOMは、XPCOMのJavaバインディングである。XULRunnerに同梱されており、これを使用することでJavaからXPCOMコンポーネントの利用が可能となる。
利用方法
[編集]XULRunnerがインストールされていることが前提となる。ここでは、/opt/xulrunner/1.8.0.4にインストールされたLinux版を元に、例示する。
CLASSPATHの設定
[編集]CLASSPATHにMozillaInterfaces.jarを追加する。
export CLASSPATH=$CLASSPATH:/opt/xulrunner/1.8.0.4/xulrunner/sdk/lib/MozillaInterfaces.jar
コンポーネントの利用
[編集]インポート
[編集]インポートするパッケージは、'org.mozilla.xpcom.*'となる。XULRunnerには、1,000を越えるコンポーネントが含まれるが、すべてこのパッケージに属している。
import org.mozilla.xpcom.*;
GREパスの取得
[編集]GREパス、つまりXULRunnerのインストール場所を取得する。取得したパスは、XPCOMの初期化時に使用する。
GREVersionRange[] range = new GREVersionRange[1];
range[0] = new GREVersionRange("1.8", true, "1.9+", true);
Properties props = null;
File grePath = null;
try {
grePath = Mozilla.getGREPathWithProperties(range, props);
} catch (FileNotFoundException e) { }
if (grePath == null) {
System.out.println("found no GRE PATH");
return;
}
Mozillaオブジェクトの取得
[編集]Mozillaオブジェクトを取得する。
Mozilla mozilla = Mozilla.getInstance();
XPCOMの初期化
[編集]try {
mozilla.initialize(grePath);
mozilla.initXPCOM(grePath, null);
} catch (IllegalArgumentException ex) {
System.out.println("no javaxpcom.jar found in given path");
return;
} catch (Exception ex) {
System.out.println("initXPCOM failed");
ex.printStackTrace();
return;
}
コンポーネントマネージャの取得
[編集]nsIComponentManager componentManager = mozilla.getComponentManager();
XPCOMコンポーネントの取得
[編集]Contract IDを使って、コンポーネントをインスタンス化する。
nsIMutableArray array = (nsIMutableArray)componentManager.createInstanceByContractID(
"@mozilla.org/array;1",
null,
nsIMutableArray.NS_IMUTABLEARRAY_IID);
XPCOMのシャットダウン
[編集]mozilla.shutdownXPCOM(null);