Fedora Users Forum

Fedoraユーザのためのサポートフォーラム
現在時刻 - 2018年12月14日(金) 19:42

All times are UTC + 9 hours





新しいトピックを投稿する トピックへ返信する  [ 22 件の記事 ]  ページ移動 1つ前へ  1, 2, 3  次へ
作成者 メッセージ
 記事の件名: Re: エラー?
投稿記事Posted: 2009年4月20日(月) 23:21 
オフライン
Site Admin
アバター
プライベートメッセージ送信  メール  WWW  プロフィール

登録日時: 2008年9月08日(月) 21:17
記事: 428
所在地: 東京都
よくわかりませんが,下記のPATHで,/usr/binなどが二重に登録され,/usr/java/jdk1.6.0_13/binの前に,/usr/binがあるのが気になります。

$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/usr/java/jdk1.6.0_13/bin:/usr/java/jdk1.6.0_13/jre/bin:/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/home/snow/bin

次のコマンドで,PATHを設定しなおしたらどうでしょうか?

$ export PATH=/usr/java/jdk1.6.0_13/jre/bin:/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/home/snow/bin


トップへ
 
 記事の件名: Re: エラー?
投稿記事Posted: 2009年4月21日(火) 05:24 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月20日(土) 23:35
記事: 278
所在地: にっぽん、ちゃちゃちゃ
引用:
export PATH=$PATH:/usr/java/jdk1.6.0_05//bin

 //が二重になっていますが、打ち間違えですか?

 それと、リンク云々がおかしい可能性があるなら、直接/usr/java/jdk1.6.0_05/bin/javac HeloWorldo.javaとかで、試せるはずです。これで動作するか否かでリンクの問題なのか、そのほかの問題なのか調べられると思います。(まあ、設定がおかしければ、インポートしているクラスが見つからないとかエラーはでるかもしれませんね)


トップへ
 
 記事の件名: Re: エラー?
投稿記事Posted: 2009年4月21日(火) 07:27 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月13日(土) 12:37
記事: 250
所在地: 兵庫県
うーん、なかなか解決してないようですね…。
私が'which javac'の結果が気になると言ったのは、環境変数がセットされてないんじゃないか、と思ったからなんです。/usr/bin/javacはSunのものを使っているだろうと思ってました。冒頭でシンボリックリンクを張ったって書かれてましたので。

で、CLASSPATHに何が入っているかを確認していただいたところ、(ん?と思うところはありますが)値が入っていたので、そこが原因じゃないんだなーと考えてはいるんですが…。

さて、PATHの登録状況がおかしいのは、/etc/profileの後でさらにPATHが設定されているせいだと思います。~/.bashrcか~/.bash_profileの中で、PATHを再設定してないでしょうか?

あと、コンパイルされているか否かですが、ソース中に、明らかに分かるバグを入れて(a=; とか)、それでちゃんとエラーを報告してくれるかどうかで判断するのも手かもしれません。-verboseで何も出てこないってのは不思議ですね…^^;


トップへ
 
 記事の件名: Re: エラー?
投稿記事Posted: 2009年4月21日(火) 11:27 
オフライン
Site Admin
アバター
プライベートメッセージ送信  メール  WWW  プロフィール

登録日時: 2008年9月08日(月) 21:17
記事: 428
所在地: 東京都
CLASSPATHの値が変になっていません?
code_air_edgeさんが少し気にされているのもここだと思いますが。

$ echo $CLASSPATH
.:/usr/java/jdk1.6.0_13/lib

先頭にピリオドとコロンが付いているように見えます。/etc/profileの中身をもう一度確認してみていただけますか?

追記:先頭のピリオドとコロンは,カレントディレクトリを入れてるんですね。失礼しました。ここは問題ないです。


トップへ
 
 記事の件名: Re: エラー?
投稿記事Posted: 2009年4月21日(火) 19:19 
オフライン
プライベートメッセージ送信  メール  プロフィール

登録日時: 2008年11月03日(月) 21:48
記事: 271
みなさん、いろいろとありがとうございます
vine_userさんがおっしゃるように、たしかによくみてみると CLASSPATHの値が変です

$vi /etc/profile
で調べてみました

ファイル内容は以下のようになっていました

# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

pathmunge () {
if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
fi
}

# ksh workaround
if [ -z "$EUID" -a -x /usr/bin/id ]; then
EUID=`id -u`
UID=`id -ru`
fi

# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
fi

# No core files by default
ulimit -S -c 0 > /dev/null 2>&1

if [ -x /usr/bin/id ]; then
USER="`id -un`"
LOGNAME=$USER
MAIL="/var/spool/mail/$USER"
fi

HOSTNAME=`/bin/hostname 2>/dev/null`
HISTSIZE=1000


export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE

for i in /etc/profile.d/*.sh ; do
if [ -r "$i" ]; then
if [ "$PS1" ]; then
. $i
else
. $i >/dev/null 2>&1
fi
fi
done

unset i
unset pathmunge

export JAVA_HOME=/usr/java/jdk1.6.0_13
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

となっています
たしかに変です
export CLASSPATH=.:$JAVA_HOME/lib
のところが、.:がついてます

$export PATH=/usr/java/jdk1.6.0_13/jre/bin:/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/home/snow/bin

PATHを設定しなおしてみます


トップへ
 
 記事の件名: Re: エラー?
投稿記事Posted: 2009年4月21日(火) 19:37 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月20日(土) 23:35
記事: 278
所在地: にっぽん、ちゃちゃちゃ
 CLASSPASSは実行時のクラスがあるパスを指定するところです。ですから、実行時の環境でカレントディレクトリー(.)が先頭にきているのは、正しいと思います。(追記、前でも、後ろでも、ついていれば通常はあまり問題になりませんね。既にjavaで用意されているクラスと自分で作成するクラスが知らずのうちにかぶらなければ。まあ、かぶっていても、自分で使用するクラスを指定するのがJavaの流儀なので、わかっていれば問題ありません。ここら辺は面倒なので統合環境でやってみると、入力時に指摘してくれたりで、便利なんです。)




 もし、指定していないと、カレントディレクトリーにあるクラスファイルが実行できなくなります。

 もし、javacを動かすことを最優先としているなら、前に投稿した、javacを絶対パス、つまり/(ルート)からフォルダーを指定していき、直接起動してみることをおすすめします。

 今回のことに限らず、リンクなどのややこしい作業を手作業でやる場合、作業の間違い、設定の間違いは起きてしまいます。どうやって解決するかも覚えるといいかもしれません。

   リンク、パスの設定で間違えが起きているかもしれない。では、どうするか?

   ならば、直接コマンドを起動してみよう。

   もし起動するなら、パスかリンクの間違えだ。
   起動しない場合は、その前のインストールで何かがおかしかった。

 問題が切り分けられます。


トップへ
 
 記事の件名: Re: エラー?
投稿記事Posted: 2009年4月21日(火) 21:11 
オフライン
プライベートメッセージ送信  メール  プロフィール

登録日時: 2008年11月03日(月) 21:48
記事: 271
お返事ありがとうございます

export PATH=/usr/java/jdk1.6.0_13/jre/bin:/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/usr/bin:/bin:/home/snow/bin
のあと、
$ javac HelloWorld.java
でも変化はありませんでした

javac を動かすため
絶対パスを確認し、直接機動してみました

ls /usr
bin games java lib local share tmp
etc include kerberos libexec sbin src

$ ls /usr/java
default jdk1.6.0_13 latest

$ ls /usr/java/jdk1.6.0_13/
COPYRIGHT THIRDPARTYLICENSEREADME.txt lib sample
LICENSE bin man src.zip
README.html demo register.html
README_ja.html include register_ja.html
README_zh_CN.html jre register_zh_CN.html

$ ls /usr/java/jdk1.6.0_13/bin
ControlPanel java jcontrol jstack policytool unpack200
HtmlConverter java-rmi.cgi jdb jstat rmic wsgen
appletviewer javac jhat jstatd rmid wsimport
apt javadoc jinfo jvisualvm rmiregistry xjc
extcheck javah jmap keytool schemagen
idlj javap jps native2ascii serialver
jar javaws jrunscript orbd servertool
jarsigner jconsole jsadebugd pack200 tnameserv

$ /usr/java/jdk1.6.0_13/bin/javac HelloWorld.java
$ ls
HelloWorld.java

またしても、コンパイルできていません
しかし、これで起動しないことが確認できましたので
インストール段階で何かミスをしたのかもしれません


トップへ
 
 記事の件名: Re: エラー?
投稿記事Posted: 2009年4月21日(火) 22:04 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月20日(土) 23:35
記事: 278
所在地: にっぽん、ちゃちゃちゃ
 ごめんなさい、先月、突然、マシンの電源が壊れ、Dellだったため交換もできず、HDの壊れていたノートパソコンから、英語版xpの乗ったデュアルコアマシンを安く手に入れ(この購入後、完全に壊れてCDからの立ち上げもできなくなりましたw)、windows環境をやっと復旧したような状況で、linux間で手が回らず、現在自分で試してみることもできません。

 ヒントになりそうなものといえば、vineさんご推薦のここでしょう。



 実行環境についてかかれていますが、保管のためのパッケージなどは、もしかしたら、開発環境でもインストール時に必要なのかもしれませんね。

追記:更に調べたら、何を元にすればいいのかわからなくなってきました。

ご紹介した上記のリンクはどうやらFirefoxのプラグインを動作させるために、Sun javaを導入する方法らしく、同じ目的でJDKを利用する方法が、http://ubuntuguide.org/wiki/Fedora_10#Sun_Java_.28Method_2_-_jdk-6u4-linux-i586.bin_version.29
にありました。

 たぶんこれは、インストールされたソフトのバージョンを切り替えるupdate-laternativeコマンドで、javaを切り替えられるようにするため、いささか複雑になっています。

 本家のsunのHPもしらべました。32ビット版は16ビット版とファイルの名前が異なるだけで、手順は一緒らしく、16ビット版の手順を参考にするようにかかれています。


トップへ
 
 記事の件名: Re: エラー?
投稿記事Posted: 2009年4月22日(水) 06:51 
オフライン
プライベートメッセージ送信  WWW  プロフィール

登録日時: 2008年9月20日(土) 23:35
記事: 278
所在地: にっぽん、ちゃちゃちゃ
 朝起きて、すっきりした頭でsunのサイトを読み直してみました。

 
コード:
The RPM packages creates two links /usr/java/latest and /usr/java/default.

    * The /usr/java/latest link will always point to the version of Java that Sun Microsystems considers the latest version.  Subsequent upgrades of the packages will overwrite this value if it is not the latest version.

    * By default, /usr/java/default points to /usr/java/latest. However, if administrators change /usr/java/default to  point to another version of Java, subsequent package upgrades will be provided by the administrators and cannot be overwritten.

When the JDK is installed, links to  javac jar and javadoc are also created apart from the JRE links. These links point to the appropriate tool referenced by /usr/java/default. This allows the user to easily run the default version of these Java tools.


 どうも、基本的にはsunのjavaを自力でインストールしたときは/usr/java/defaultから基本ツールにアクセスできるようなので、PATHに入れるとしたらこれですね。

 javacでなくてjavaを実行した結果はどうなっているのでしょうか?コマンドはjavaでも、sunのjavaでないjavaが動作するのでは?ここら辺も、試してみるとヒントになるかもしれません。

 自力で設定したPATHを設定前に戻して、見るのも手です。リンクも解除して。

 また、update-alternatives コマンドで実行環境を切り替えてみるのも手です。(UbuntuというかDebianはこれで切り替えられました。Fedoraでも切り替えられるようにするという話を前に聞いたことがあったような。もう、一年以上も前だと思いますが。)

 過去、自力でsunのjavaをインストールしたときはsunのサイトに従うだけで、ほとんどのディストリビューションでは動作しました。Fedoraはどうだったかはっきり覚えていませんが。たぶん、何もせずインストーラーを使うだけだったような。update-alternativesのあるディストリでは切り替えが必要でしたけど。JDKはどうだったか思い出そうとしましたが、コマンドでほとんど使用したことがないので。w ほとんどIDEですので。w

 あまり、参考にならなくて、ごめんなさい。


トップへ
 
 記事の件名: Re: エラー?
投稿記事Posted: 2009年4月23日(木) 00:15 
オフライン
プライベートメッセージ送信  メール  プロフィール

登録日時: 2008年11月03日(月) 21:48
記事: 271
---------
みなさん、いろいろとありがとうございます

自分であれこれ探している時に、

に似たような環境があったので、同じようにしてみました

今回の変更点は
引用:
/etc/profileをエディタで開いて、最下行に環境変数の設定を追加する。

1.export JAVA_HOME=/usr/java/jdk1.6.0_13
2.export PATH=$PATH:$JAVA_HOME/bin
3.export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

を行ってみましたが、またしてもダメでした


javac ではなく、java HelloWorld.java で行ったらどうなるかおこなってみましたが
$ java HelloWorld.java
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/java
Caused by: java.lang.ClassNotFoundException: HelloWorld.java
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: HelloWorld.java. Program will exit.

となってしまいました

やはり、/etc/profile を先に編集してしまったのは失敗だったのでしょうか・・・

引用:
 自力で設定したPATHを設定前に戻して、見るのも手です。リンクも解除して。

とのアドバイスをいただきましたので

を参考にリンクを一度消してみようと思います


トップへ
 
期間内表示:  ソート  
新しいトピックを投稿する トピックへ返信する  [ 22 件の記事 ]  ページ移動 1つ前へ  1, 2, 3  次へ

All times are UTC + 9 hours


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[0人]


トピック投稿: 不可
返信投稿: 不可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron

無料でマイフォーラムを作成する! · php-BB© · Internationalization Project · 不正利用を報告する · 使用条件/プライバシーポリシー
© Forums-Free.com 2009