アプリ版:「スタンプのみでお礼する」機能のリリースについて

こちらの
http://www.hellohiro.com/socket.htm
サーバー(マルチスレッド)とクライアントのプログラムを
Windows環境でサーバーのアドレスを"localhost"にして一台のPC上で実行したところ
うまくいったのですが
今度はサーバー側のプログラムをlinuxサーバーにおいてアドレスを指定して行ったところ
コンパイルは正常に行えて(classファイルは作成されました)、実行するとクライアントからの接続までは
うまくいくのですが
("172.0・・・ から接続がありました"とは表示されます)
その後通信が切れてしまい
Exception in thread "main" java.lang.NoClassDefFoundError:
Connect
という例外が起きてしまいます。
過去ログなどを調べたところクラスの定義が見つからないとのことなのですがソースにはしっかり定義されていると思います
またサーバーのプログラムの実行を
java -classpath . HelloWorldMultiThreadServer
などでも行ってみましたが同じ状況になってしまいます
どなたか是非アドバイスをいただけないでしょうか
よろしくお願い致します

A 回答 (1件)

linux側でjava -versionを叩いて、1.4と出ますよね?



コンパイル時と実行時のJavaバージョンが異なっていたり
しないでしょうか?

私は、下記のようなシェルを作成して問題なく動作してます。
クラスパスも指定無しですので、Java1.4で
JAVA_HOMEの設定があれば大丈夫だと思います。
※JAVA_HOMEの設定が無いとjava.net.*等のライブラリに
パスが通らないかもしれないです。(たぶん。。。)

#!/bin/sh

JAVA_HOME=/opt/java1.4

echo $JAVA_HOME

PATH=$JAVA_HOME/bin:$PATH

echo $CLASSPATH

java -version
javac HelloWorldSocketServer.java
java HelloWorldSocketServer


例外のスタックトレースをもっと付けてもらえると
良いのですが・・・
Exception in thread "main" java.lang.NoClassDefFoundError:
Connectの続きを

この回答への補足

一応下の内容に補足ですが
マルチスレッドではない方のサーバープログラムは
Classファイルだけで動いてました、なぜか日本語も大丈夫だったし
不思議です・・・

補足日時:2006/11/14 18:16
    • good
    • 0
この回答へのお礼

>コンパイル時と実行時のJavaバージョンが異なっていたり
しないでしょうか?

正にそれでした!

両方ともver1.5でしたがwinで作成したclassファイルを持ってきていたためlinux側でちゃんとjavaファイルからコンパイルしたところ一部文字コードのマッピングエラーが出たため日本語をすべて削除して実行したところうまくいきました。

linuxの環境は自分で設定したわけではないことと(レンタル)
環境がIPv6であることでそこらへんに原因があるかと思ってずっと
ソースと睨めっこをしていました

自分の周りにjavaをやっている人がいなくてずっと悩んでいました
本当に感謝いたします、ありがとうございました。

お礼日時:2006/11/14 18:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!