Windows2000 + Tomcat + Apaceh 連携
パート / 失敗連続メモ(2002/12/18)
OS
Windows2000
J2SE
1.4.1.01
Tomcat
4.1.12
Unix環境ではありえないことなんですけど、Windows は大小文字の区別が無いので例えば、MURACHI と murachi は同等となってしまうのです。これ普段は問題ないのですが Javac でコンパイルするときにこれをやると・・・・・。悲惨になります。っていうか実行時にエラーがでます。
教訓:大文字小文字をちゃんと区別してコンパイルすべし。面倒だったらスクリプトを書くべし!こんなエラーとなります。
C:\>javac murachi.java
C:\>java murachi
Exception in thread "main" java.lang.NoClassDefFoundError: murachi (wrong name: MURACHI)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:250)
at java.net.URLClassLoader.access$100(URLClassLoader.java:54)
at java.net.URLClassLoader$1.run(URLClassLoader.java:193)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)
at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
ある日、JDBCとのアクセスプログラムを試していたのですが実行すると NoClassDefFoundError エラー発生して、うまく動いてくれませんでした。これは私の環境設定がいけないのだと思い何度もインストールを繰り返してもうまくいかない・・・。何故だーとおもったら(爆)
教訓:カレントディレクトリの指定がなかったせいでした。もっとましなエラーメッセージだせよ!と 怒
set CLASSPATH=.;%CATALINA_HOME%\common\lib\servlet.jar;%JAVA_HOME%\lib\tools.jar;C:\mysql\jdbc\mysql-connector-java-2.0.14-bin.jar
「失敗その1」続きで、2分だけ失敗したこと。それは、クラス名とファイル名の密接な関係があるってこと。具体的には、「public class Hellos」としたら、ファイル名を "Hellos.java" にしないと×ってこと。あー
教訓:よくやる事は、基本がマスターしていないってことだ。