2009年10月22日

[openoffice:11765] Re: メニューのフォントサイズについて

WARNING は、シェルスクリプト soffice の中で実行される javaldx コマンドが
出しているかと思います。

javaldx コマンドは、以下の二つの作業を主に行っています。

(1) ~/.openoffice.org/3/user/config/javasettings_Linux_x86.xml に
 有効な java の設定が一つも見つからなかった場合、環境変数 PATH や
 ありがちなディレクトリ /usr/java/ などから使えそうな Java を

 見つけ出して、前述のファイル内にその見つけ出した(一つ以上の)
 Java 実行環境に関する情報を書き出します。
 その作業途中において、一つも見つけられなかった場合、WARNING を
 出力してきます。

(2) ~/.openoffice.org/3/user/config/javasettings_Linux_x86.xml の
 中に書かれている libjvm.so を含んだディレクトリへのパスを出力します。
 そして、soffice シェルスクリプトが環境変数 LD_LIBRARY_PATH に
 そのパスを設定し、soffice.bin を起動しています。

OpenOffice.org は、いくつかの機能の実行において Java を使用していることは
みなさんご存じのことと思います。

ところが、soffice.bin は、/usr/bin/java などの java というコマンドを
起動しているのではありません。かわりに、Java の仮想マシンの実装としての
libjvm.so を動的にロードして Java のクラスを動かしています。
そのため、動的にロードする機能としての ld-so に対して、環境変数
LD_LIBRARY_PATH を使って、ファイルのありかを教えているという仕組みに
なっているようです。

(1) で javaldx が好みの Java を見つける方法として、以下のようなことを
やっているようです。
$ java -classpath /opt/openoffice.org/ure/lib JREProperties | perl -ane 'print join("", map { chr($_) } @F), "\n"'

その実行の時点で、64ビット/32ビットの違いや、1.5系/1.6系などの違いなのか、
よくはわかりませんが、java がまったく動作しないとか、java は動作したが、
出力された結果が好みの内容ではなかった場合には、その注目したディレクトリにある
java については、使えないと判断するみたいです。

自身の好みかどうかについては、どうやら、出力された結果を以下のファイルの内容と
照らし合わせて判断しているみたいです。
/opt/openoffice.org/ure/share/misc/javavendors.xml

結局のところ、java を使わないのであれば、Linux 版においては soffice シェル
スクリプトを使う必要はない。といってもいいかと思います。かわりに、直接 soffice.bin
を起動すればよいかと思います。そのほうが、起動はばつぐんに速くなります。
「予期しないエラー」が発生した後の自動的な再起動(sofficeスクリプトの最後の
部分に書いている)はしませんが・・・

もしくは、soffice シェルスクリプト内の javaldx や pagein 、さらには、
uname などに関連する行について、コメントアウトしてしまうという方法でも良いか
と思います。


[ systrayクイック起動を有効にする ]のチェックがついていると、どうやら、
「ファイル」「終了」によって行われる動作を無視するようになるみたいです。

http://svn.services.openoffice.org/ooo/tags/OpenOffice_3_1_1/vcl/source/app/svapp.cxx

void Application::Execute()
{
DBG_STARTAPPEXECUTE();

ImplSVData* pSVData = ImplGetSVData();
pSVData->maAppData.mbInAppExecute = TRUE;

while ( !pSVData->maAppData.mbAppQuit )
Application::Yield();

pSVData->maAppData.mbInAppExecute = FALSE;

DBG_ENDAPPEXECUTE();
}

「ファイル」メニューの「終了」を選択すると、pSVData->maAppData.mbAppQuit が
TRUE になって、その結果、上記の while ループから抜け出して、アプリケーション
全体が終了するようになっているようです。

ですが、今回の場合においては、TRUE にならないみたいです。

Tora


【MLコミュホームページ http://www.freeml.com/openoffice

--[PR]------------------------------------------------------------------
◇◆◇◆ 憧れの4LDKや共用施設充実マンション    ◇◆◇◆
◆◇◆◇賃貸じゃ難しい?理想の住まい探しは早めの資料請求で先手!◆◇◆◇
◇◆◇◆  これから販売予定のおNewなマンション、即チェック ◇◆◇◆
http://ad.freeml.com/cgi-bin/sa.cgi?id=eF58D
------------------------------------------------------------------[PR]--
■GMO INTERNET GROUP■ GMO INTERNET www.gmo.jp


投稿者 xml-rpc : 2009年10月22日 03:30
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/89639
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。