• ベストアンサー

Lunux で Java をするには?

CLASSPATH=.:/root/workspace/test:export CLASSPATH と環境設定し /root/workspace/test/test に Test0.java: package test; class SayHello { public void method() { System.out.println("Hello World!"); } } と SayHello.java: package test; public class Test0 { public static void main(String[] args) { SayHello sh=new SayHello(); sh.method(); } } を作り javac Test0.java SayHello.java をし(成功) java Test0 をしたのですが [root@Prime test]# java Test0 Exception in thread "main" java.lang.NoClassDefFoundError: loaded class Test0 was in fact named test.Test0 at java.lang.VMClassLoader.defineClass(libgcj.so.7) at java.lang.ClassLoader.defineClass(libgcj.so.7) at java.security.SecureClassLoader.defineClass(libgcj.so.7) at java.net.URLClassLoader.findClass(libgcj.so.7) at java.lang.ClassLoader.loadClass(libgcj.so.7) at java.lang.ClassLoader.loadClass(libgcj.so.7) at java.lang.Class.forName(libgcj.so.7) at gnu.java.lang.MainThread.run(libgcj.so.7) [root@Prime test]# となりうまくいかないのですが対策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.2

java コマンドに渡す引数はパッケージ名を含めたクラスの名前です。パッケージ名とクラス名の間はスラッシュではなくドットで区切ります。 java test/Test0 ではなく java test.Test0 でプログラムが実行できるはずです。

reiman
質問者

お礼

ありがとうございます。 無事に動きました。

その他の回答 (2)

  • yuchi-co
  • ベストアンサー率60% (29/48)
回答No.3

パッケージ名を含めたクラス名で指定なので 「java test.Test0」 ではないでしょうか。

reiman
質問者

お礼

ありがとうございました。 既に同じ回答を得ていたのですが動きました。

回答No.1

package testとしているので cd .. java test/Test0 としたらうごくはずです。 追加ですが、プログラムはsuper userで作らないほうがいいと思います。 おそらく初めてlinuxを使っていると思うのですが、Windowsと違ってmaltiuser対応のOSなので自分の権限で動かすようにつくったほうがいいと思います。参考までに。わたしも始めはそうでしたので。

reiman
質問者

お礼

失礼しました。 入力ミスがありました。 修正後やりましたが以下のようにうまくいきませんでした。 [root@Prime test]# cd /root/workspace/test [root@Prime test]# pwd /root/workspace/test [root@Prime test]# CLASSPATH=.:/root/workspace:/root/workspace/test [root@Prime test]# export CLASSPATH [root@Prime test]# javac test/Test0.java test/SayHello.java [root@Prime test]# java test/Test0 Exception in thread "main" java.lang.NoClassDefFoundError: test/Test0 at gnu.java.lang.MainThread.run(libgcj.so.7) Caused by: java.lang.ClassNotFoundException: test/Test0 at java.lang.Class.forName(libgcj.so.7) at gnu.java.lang.MainThread.run(libgcj.so.7) [root@Prime test]#

reiman
質問者

補足

ありがとうございます。 次からメンバでやろうと思いました。 御指摘の通りやってみると以下の様になり やはりエラーが出ます。 因みにeclipseから実行する限りは動いています。 何か他に手順が抜けていないでしょうか? [root@Prime test]# cd /root/workspace/test [root@Prime test]# pwd /root/workspace/test [root@Prime test]# CLASSPATH=.:/root/workspace:/root/workspace/test:/root/workspace/test/test [root@Prime test]# export CLASSPATH [root@Prime test]# javac test/test0.java test/SayHello.java [root@Prime test]# java test/test0 Exception in thread "main" java.lang.NoClassDefFoundError: test/test0 at gnu.java.lang.MainThread.run(libgcj.so.7) Caused by: java.lang.ClassNotFoundException: test/test0 at java.lang.Class.forName(libgcj.so.7) at gnu.java.lang.MainThread.run(libgcj.so.7) [root@Prime test]#