- PR -

JAVAの動作環境について

1
投稿者投稿内容
みーむ
ベテラン
会議室デビュー日: 2003/10/13
投稿数: 56
投稿日時: 2004-01-13 17:23
みーむと申します。
いつも、お世話になっています。

redhat9上で、rootにてjava.1.4.2_03をrpmからインストールしたのですが、
ユーザがrootなら問題なくプログラムが動くのですが、
他のユーザでは、全く動かないのです。
ためしに"java -version"を実行してみると、
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
っていうメッセージが返ってきます。

j2sdkのフォルダー以下の所有権を実行ユーザーと同じにすると、
そのユーザでも実行可能なのですが、
j2sdkのインストールとは、そのようなものなのでしょうか?

今回も、とても初歩的な質問で申し訳ない出のですが、
解決策が見つからずに困っています。
どうか、すこしのアドバイスでもいただけると、助かります。

よろしくお願いします。
t-wata
大ベテラン
会議室デビュー日: 2002/07/12
投稿数: 209
お住まい・勤務地: 東京
投稿日時: 2004-01-13 18:13
> j2sdkのインストールとは、そのようなものなのでしょうか?

いえ。違います。
J2SDKのインストールファイルに、不適切なパーミッションが設定されているようです。
rootで、J2SDKのインストール先にcdして、
find . -type f -not -perm -o=r -or -type d -and -not -perm -o=rx
と打ってみると、ファイルやディレクトリがリストされます。
これらが、不適切なパーミッションが設定されたものです。(パーミッションが正常なら、上記コマンドを打っても、何もリストされません)
その場で、
find . -type d -not -perm -o=rx |xargs chmod go+rx
find . -type f -not -perm -o=r |xargs chmod go+r
とか打つと、一般ユーザーでも実行できるようになります。

なぜこのような不具合が発生したのかについては、恐らくumaskの設定だと思います。
多分rootでumaskと打つと、0*6とか0*4とか(*は、0-7の数字が入る)表示されるのでは
ないでしょうか?
Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 2004-01-13 18:16
root 以外のユーザで j2sdk をインストールしたディレクトリ以下を参照する(cd してみるとか、ディレクトリ以下のファイルを指定して ls してみるとか、テキストファイルがあれば cat してみるとか)とどのようになりますか?

単に、一般ユーザにディレクトリの read と execution(search)、ファイルの read が許可されていないだけのように思えます
# redhat は触っていないので UNIX 一般の回答ですが、的外れでしたらご容赦を(_ _)
みーむ
ベテラン
会議室デビュー日: 2003/10/13
投稿数: 56
投稿日時: 2004-01-13 19:54
みなさま、有難うございます。

t-wadaさまの、おっしゃるように、
一部のjarファイルのパーミッションが600となっていたので、
これを変更すると、他のユーザでも実行可能となりました。

/etc/bashrcにて、umaskを066にしているのが、
原因でしょうか?
umaskの設定値は、rpmでのインストールといった
そのユーザにおけるファイル作成に
関わる全ての作業に反映されるのでしょうか?

umaskはデフォルト022から変更しないほうがよいですか?
t-wata
大ベテラン
会議室デビュー日: 2002/07/12
投稿数: 209
お住まい・勤務地: 東京
投稿日時: 2004-01-13 22:33
> /etc/bashrcにて、umaskを066にしているのが、
> 原因でしょうか?

まさにそれですね。umaskが066と言うことは、新規作成ファイル
やディレクトリの、グループとその他のrw権限がマスクされてし
まうので、600(ファイル)とか711(ディレクトリ)とかになっ
てしまいます。

> umaskの設定値は、rpmでのインストールといった
> そのユーザにおけるファイル作成に
> 関わる全ての作業に反映されるのでしょうか?

そうです。

> umaskはデフォルト022から変更しないほうがよいですか?

少なくともrootユーザーは、022にしておくべきでしょう
(/root/.bashrcなどでumaskを設定しなおす)。
みーむ
ベテラン
会議室デビュー日: 2003/10/13
投稿数: 56
投稿日時: 2004-01-14 00:24
みーむです。

t-wataさま、ご親切に解説いただき感謝しています。
umaskの設定はデフォルトの022に戻すことにしました。
アドバイス、本当にありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)