Top > OOoSDK > java > Tutorial > Hello > idlc

IDL ファイルのコンパイル Edit

作成した Hello.idl と XHello.idl ファイルを idlc というプログラムを使ってコンパイルします。このプログラムは OpenOffice.org SDK 付属のものです。

ここからは,OpenOffice.org SDK のための環境変数が正しく設定されていないとうまくいきません。

現在のファイル構成はつぎのようになっているはずです。hello プロジェクトに com.sun.star.comp.demo パッケージと com.sun.star.demo パッケージの二つがあります。

hello---com---sun---star---comp---demo
                         |
                          -demo---Hello.idl
                                |
                                 -XHello.idl

IDL ファイルをコンパイルしてみましょう。Windows のときは次のようにします。現在のディレクトリは hello です。

cd com\sun\star\demo
idlc -C -I %OO_SDK_HOME%\IDL XHello.idl
idlc -C -I %OO_SDK_HOME%\IDL -I..\..\..\.. Hello.idl

Unix のシェルでなら,

cd com/sun/star/demo
idlc -C -I $OO_SDK_HOME/IDL XHello.idl
idlc -C -I $OO_SDK_HOME/IDL -I../../../.. Hello.idl

実行すると,Hello.urd と XHello.urd ができます。

hello---com---sun---star---comp---demo
                         |
                          -demo---Hello.idl
                                |
                                 -Hello.urd
                                |
                                 -XHello.idl
                                |
                                 -XHello.urd

つづいて,生成した urd ファイルからレジストリファイル rdb を作成します。

レジストリファイルの作成 Edit

プロジェクトのディレクトリの一番上の "hello" にレジストリファイル "demo.rdb" を作成します。

さっきの続きに,regmerge プログラムを使って urd ファイルから rdb レジストリファイルを作成します。

現在のディレクトリがプロジェクト "hello" の中の com/sun/star/demo のとき次のようにします。

regmerge ..\..\..\..\demo.rdb /UCR XHello.urd
regmerge ..\..\..\..\demo.rdb /UCR Hello.urd

実行すると,hello の直下に "demo.rdb" レジストリファイルができます。このファイルはバイナリなので,内容の確認がしにくくなっています。そこで,テキストフォーマットに変換するプログラムがあります。"regview" です。filedemo.rdb

内容が間違っていたり,確認したかったりしなければ別にファイル内容を確認する必要はありません。が,つぎのようにすると内容が確認できます。

regview demo.rdb

出力の結果はこのようになります。ここをクリック? filedemo.rdb.out

パスが相対パスではないのでまったく同じにならないと思います。

さて,現在のファイル構成は次のようになっています。

hello---com---sun---star---comp---demo
      |
       -demo.rdb
                         |
                          -demo---Hello.idl
                                |
                                 -Hello.urd
                                |
                                 -XHello.idl
                                |
                                 -XHello.urd

レジストリファイルからの java ファイルの生成 Edit

つぎは,生成したレジストリファイル demo.rdb からインターフェースの .java ファイルを生成します。idl ファイルごとに java ファイルが生成されます (インターフェースのみ)。

このためには,javamaker プログラムを使用します。プロジェクトの最上層の hello ディレクトリにいるとき,

javamaker -BUCR -Tcom.sun.star.demo.XHello -nD %OFFICE_PROGRAM_PATH%\types.rdb demo.rdb

とします。

うまくいった場合は,パッケージ com.sun.star.demo に "XHello.java" ファイルができます。ファイルの内容は次のようになっています。fileXHello.java

package com.sun.star.demo;

public interface XHello extends com.sun.star.uno.XInterface
{
    // Methods
    public String sayHello(  );

    // static Member
    public static final com.sun.star.lib.uno.typeinfo.TypeInfo UNOTYPEINFO[] = { 
        new com.sun.star.lib.uno.typeinfo.MethodTypeInfo( "sayHello", 0, 0 )
     };
}

これで,IDL ファイルのコンパイルは終了です。

つづいて,Hello サービスの実装 に移ります。

各種ツールの使用法 Edit

使用した各種ツールの使用方法です。OpenOffice.org SDK 付属のドキュメントから。

idlc Edit

'idlc' is the UNOIDL compiler. It is a full featured compiler used to check UNODL type definitions and transform valid type definitions into a binary type library format, which is later used by all codemaker tools. It is also used as a dynamic type library for UNO at runtime.

You can find a syntax description for UNOIDL here.

'idlc' は UNOIDL コンパイラです。UNOIDL タイプの定義をチェックするために使う完全な機能を持ったコンパイラで,有効なタイプの定義ファイルをバイナリ形式のタイプライブラリフォーマットに変換する。後ほどすべてのコードメーカーツールで使用されます。runtime で動的な UNO のためのタイプライブラリとしても使えます。

Usage Edit

idlc [-options] file_1 ... file_n | @<filename>
file_1 ... file_nspecifies one or more idl files. Only files with the extension '.idl' are valid. 一つまたはそれ以上の idl ファイルを指定する。拡張子が '.idl' のファイルのみが有効です。
@<filename>filename specifies the name of a command file. filename がコマンドファイルの名前を指定する。

Options Edit

-O<path>path describes the output directory. The generated output is a registry file with the same name as the idl input file. path が出力するディレクトリを指定する。生成された出力ファイルは idl 入力ファイルと同じ名前を持ったレジストリファイル。
-I<path>path specifies a directory where included files that will be searched by the preprocessor are located. Multiple directories can be combined with ';'. path がプリプロセッサによって検索されるインクルードファイルがあるディレクトリを指定する。複数のディレクトリは ';' で連結できます。
-D<name>name defines a macro for the preprocessor. name がプリプロセッサのためのマクロを指定します。
-Cgenerates complete type information‚ including additional service information and documentation. 追加のサービス情報とドキュメントを含む完全なタイプ情報を生成する。
-h|?print this help message and exit.ヘルプメッセージを出力して終了する。

javamaker Edit

The javamaker generates the appropriate java file for each idl type. The javamaker works on a typelibrary which is generated by the unoidl. It generates the output for all specified types and for all types the specified types depend on.

javamaker はそれぞれの idl タイプに特有の java ファイルを生成します。javamaker は unoidl によって生成されたタイプライブラリ上で動作します。すべての指定したタイプと指定したタイプにもとづくすべてのタイプの出力を生成します。

Usage Edit

javamaker [-options] file_1 ... file_n

Options Edit

-O<path>path describes the root directory for the generated output. The output directory tree is generated under this directory. path が生成された出力のためのルートディレクトリを指定します。出力ディレクトリツリーがこのディレクトリに生成されます。
-T<name>name specifies a type or a list of types. The output for this [t1;...] type is generated. If no '-T' option is specified&subquo; then output for all types is generated. name がタイプまたはタイプのリストを指定します。この [t1;...] タイプのための出力が生成されます。'-T' オプションが指定されないときはすべてのタイプの出力が生成されます。
-B<name>name specifies the base node. All types are searched under this node. Default is the root '/' of the registry files. name がベースのノードを指定します。すべてのタイプがこのノードしたで探されます。デフォルトはレジストリファイルの '/' ルートです。

regmerge Edit

'regmerge' is a small tool to merge different registry files under a specified key into another registry file. If a value already exists in the target file the value would be overwritten by the value of the source file.

'regmerge' はもう一つのレジストリファイルの指定したキーの下に別々のレジストリファイルを結合する小さなツールです。結合するファイルにすでに値が存在するときは,与えたファイルの値で上書きされます。

Usage Edit

regmerge <mergefile> mergeKeyName <regfile_1> ... <regfile_n>

Options Edit

-register|revokeregister means that the components will be installed and revoke means that they will be removed. register はコンポーネントがインストールされるかどうかを,revoke は削除されるかを意味します。
-br<registryfile>the name of the registry used for bootstrapping the program. If the bootstrap registry is specified and has the same name as the registration registry‚ '-r' is optional. プログラムのブートストラップのために使われるレジストリ名。ブートストラップレジストリが指定され,登録されるレジストリと同じ名前のとき,'-r' はオプションになります。
-r<registryfile>the name of the registry (will be created if it does not exist) where the component should be registered. コンポーネントを登録するレジストリ名。(存在しないときは作成される)
-c<locationUrls>the location of an component (DLL‚ Class name‚ or an url of a jar file) or a list of urls separated by ';'s. Note‚ if a list of urls is specified‚ the components must all need the same loader. コンポーネントの場所または ';' で分割した url のリスト (DLL‚ Class name‚ or an url of a jar file)。url のリストが指定されたときは,コンポーネントはすべて同じローダーを必要としなければいけないことに注意してください。
-l<componentLoaderName>the name of the needed loader‚ if no loader is specified the 'com.sun.star.loader.SharedLibrary' is used. Supported loaders: 'com.sun.star.loader.SharedLibrary' | 'com.sun.star.loader.Java'. 必要なローダー名。ローダーを指定しないときは, 'com.sun.star.loader.SharedLibrary' が使用されます。サポートしているローダーは 'com.sun.star.loader.SharedLibrary' | 'com.sun.star.loader.Java' です。

regview Edit

'regview' is a tool to show the contents of a registry file. The tool dumps the hierarchical structure and the values of the nodes to stdout in a readable form. 'regview' はレジストリファイルの内容を表示するためのツールです。このツールは,ノードの階層構造と値を読める形式で標準出力に打ち出します。

Usage Edit

regview <registryfile> [<keyName>]

Options Edit

-br<registryfile>the name of the registry whose contents should be viewed. みるコンテンツのレジストリ名。
<keyName>the name of a registry key. The name must be fully qualified; for example‚ '/' means the root key and '/UCR/com/sun/star/uno/XInterface' shows the type specification of the XInterface type. If no key is specified‚ the tool dumps the whole content of the registry file. レジストリキー名。この名前は完全に制限される必要があります。たとえば,'/' はルートキーを意味します。'/UCR/com/sun/star/uno/XInterface' は XInterface タイプの型指定を表示します。キーが指定されないときは,レジストリファイルのすべてのコンテンツを打ち出します。


つづいて,Hello サービスの実装 に移ります。


Attach file: fileXHello.java 581 download [Information] filedemo.rdb.out 604 download [Information] filedemo.rdb 684 download [Information]

Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes