質問編集履歴
1
依頼の明確化
test
CHANGED
File without changes
|
test
CHANGED
@@ -879,3 +879,101 @@
|
|
879
879
|
|
880
880
|
|
881
881
|
解決していただけましたら宜しくお願いいたします。
|
882
|
+
|
883
|
+
|
884
|
+
|
885
|
+
追記
|
886
|
+
|
887
|
+
<IT技術の処方箋:NoClassDefFoundErrorへの対処>
|
888
|
+
|
889
|
+
|
890
|
+
|
891
|
+
C:\java>java HelloWorld
|
892
|
+
|
893
|
+
Exception in thread
|
894
|
+
|
895
|
+
"main" java.lang.NoClassDefFoundError: HelloWorld
|
896
|
+
|
897
|
+
|
898
|
+
|
899
|
+
|
900
|
+
|
901
|
+
エラーの原因として、考えられる理由は二つです。
|
902
|
+
|
903
|
+
|
904
|
+
|
905
|
+
まずは、HelloWorldのスペルはあっていますか?
|
906
|
+
|
907
|
+
HelloWorld.classというファイルが本当に存在しますか?
|
908
|
+
|
909
|
+
|
910
|
+
|
911
|
+
|
912
|
+
|
913
|
+
次に考えられるのが、クラスパスです。
|
914
|
+
|
915
|
+
クラスパスの詳細は省きますが、
|
916
|
+
|
917
|
+
かりに、
|
918
|
+
|
919
|
+
C:\java>java -classpath c:\java HelloWorld
|
920
|
+
|
921
|
+
Hello World!
|
922
|
+
|
923
|
+
|
924
|
+
|
925
|
+
として、うまくいくようなら、間違いなくクラスパスの問題です。
|
926
|
+
|
927
|
+
|
928
|
+
|
929
|
+
クラスパスとは、HelloWorld.classファイルがどこのディレクトリに存在するかを教える仕組みです。
|
930
|
+
|
931
|
+
上の例でいうと、-classpath c:\java とすることで、
|
932
|
+
|
933
|
+
c:\javaディレクトリに、HelloWorld.classファイルが
|
934
|
+
|
935
|
+
存在しますよ、と明示的に示しています。
|
936
|
+
|
937
|
+
|
938
|
+
|
939
|
+
|
940
|
+
|
941
|
+
ちなみに、↓でも同じ結果になります。
|
942
|
+
|
943
|
+
C:\java>java -classpath . HelloWorld
|
944
|
+
|
945
|
+
Hello World!
|
946
|
+
|
947
|
+
|
948
|
+
|
949
|
+
こちらの場合は、-classpath . が、現在(カレント)の
|
950
|
+
|
951
|
+
ディレクトリを表します。
|
952
|
+
|
953
|
+
|
954
|
+
|
955
|
+
|
956
|
+
|
957
|
+
あと他の理由としては、
|
958
|
+
|
959
|
+
packageを無視していることも考えられます。
|
960
|
+
|
961
|
+
|
962
|
+
|
963
|
+
例えば、
|
964
|
+
|
965
|
+
C:\workspace\test\bin\info\searchman\HelloWorld.class
|
966
|
+
|
967
|
+
があって、
|
968
|
+
|
969
|
+
HelloWorldのpackageが
|
970
|
+
|
971
|
+
info.searchmanとするなら、
|
972
|
+
|
973
|
+
以下のような感じで実行できるはずです。
|
974
|
+
|
975
|
+
|
976
|
+
|
977
|
+
cd c:\workspace\test\bin
|
978
|
+
|
979
|
+
C:\workspace\test\bin>java info/searchman/HelloWorld
|