質問編集履歴

1

依頼の明確化

2020/08/13 20:36

投稿

andersong
andersong

スコア7

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