->
ちょっとハマッたのでメモ.
JavaでTCPサーバを書いてWindowsのコマンドプロンプトでコンパイルして実行しようとすると,
java TCPServer
Exception in thread "main" java.lang.NoClassDefFoundError: tcp/TCPServer (wrong name: tcp/TCPServer)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
Could not find the main class: tcp.TCPserver. Program will exit.
という,エラー.
コンパイルは通る,classファイルもある.
どうしたものかと思って原因を調べると,原因が判明.
どうやらJavaのクラスファイルは、
packageの階層と同じディレクトリ構造にしないといけないらしく.
この例であれば、tcpserverというディレクトリを作り、
その中にコンパイルしたTCPServer.classを入れ、tcpserverの上位ディレクトリから
java tcpserver.TCPServer
もしくは
java tcpserver/TCPServer
で起動できるらしい.
Java未だによく分かってない.
勉強せねば...
参考リンク
実行時のNoClassDefFoundErrorが解決できません (http://oshiete1.goo.ne.jp/qa3105812.html)
分散プログラミングがしやすそうなのでErlangの勉強を始めた.
Erlangの本はコレ1冊あれば十分らしいので,とりあえずこれを読んでいく.

プログラミング言語Erlang
早速,ErlangをCentOS5.3にインストールしてみた.
yumで入れられなかったため,Erlangのサイトから最新のソースをDLしてコンパイル.
% wget http://www.erlang.org/download/otp_src_R13B01.tar.gz
% tar zxf otp_src_R13B01.tar.gz
% cd otp_src_R13B01/
% ./configure
% make
% su -
% make install
%
configureの最中に
No curses library functions found
というエラーが発生.
% sudo yum install ncurses-devel
で無事に解決.
ひとまずインストールは終わった.
Ubuntuならapt-get,MacならMacPortsでいれられる模様.
参考
http://d.hatena.ne.jp/shimooka/20070527/1180201255
http://d.hatena.ne.jp/sotarok/20080204/1202123608
EclipseでGoogleのAPIをいじるプログラムを書こうと思い、Coding in the Shade: Using Eclipse with Google Data APIsを見ながら設定していたのだが、いつまでもサンプルプログラムが動かず苦労したので、ここに導入方法をまとめておく。
Eclipse導入・目次
1.
Eclipseのダウンロード
2.
GData Java Client Libraryのダウンロード
3.
その他必要なライブラリのダウンロード
4.
サンプルプロジェクトの作成
5.
サンプルプログラムの実行
まずは、
公式サイトからEclipseを落とす。いろいろ種類があるが、ひとまず「
for Java Developers」で大丈夫そう。DLが終わったら、起動して適当な場所にworkspaceを作成する。
続いて様々な機能を提供してくれる
GData Java Client Libraryをダウンロードしてくる。
ここからダウンロード可能。ライブラリの中身も見たい人は
srcをダウンロードしてもいいが、APIを利用するだけであれば、
samplesの方でOK。解凍したら、eclipseフォルダに入れておく。
そのほか必要になるファイルをダウンロードしてくる。
これらのファイルは、
eclipse/gdata/third_partyに入れておく。
適当な名前のプロジェクトを新規作成し、最下部の「next」を押す。上のタブから「Libraries」を選び、「Add External JARs」から、
/gdata/java/libにある
gdata-client, gdata-client-meta, gdata-core, gdata-media, data-docs, gdata-docs-metaを追加する。
次に、3で
/gdata/third_partyに保存した
mail.jar, servlet-api.jar, activation.jarを読み込む。
Googleのドキュメントには上のライブラリを読み込めばいいと書いてあるが、これだけでは何度やってもサンプルプログラムで “
java.lang.NoClassDefFoundError“エラーが出てしまっていたが、
gdata/java/depsにある
google-collectと
jsrを読み込むことで解決した。
ここまで来れば、あと一息。Googleドキュメントの文書タイトルを読み込むサンプルプログラムを実行してみる。
import java.net.URL;
import com.google.gdata.client.docs.DocsService;
import com.google.gdata.data.docs.DocumentListEntry;
import com.google.gdata.data.docs.DocumentListFeed;
public class testDocumentsList {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
DocsService service = new DocsService("Document List Demo");
service.setUserCredentials("your_id@gmail.com", "your_password");
URL documentListFeedUrl = new URL("http://docs.google.com/feeds/documents/private/full");
DocumentListFeed feed = service.getFeed(documentListFeedUrl, DocumentListFeed.class);
for(DocumentListEntry entry : feed.getEntries()) {
System.out.println(entry.getTitle().getPlainText());
}
}
catch(Exception ex){
System.out.println("Exception: "+ ex.getMessage());
}
}
}
このとき、アカウント情報を追加しておくことをお忘れなく。これを実行すればコンソールにGoogleドキュメントに保存された文書のタイトルが表示されるはずである。
以上が、EclipseでJavaを使ってGoogle APIをいじるため下準備であった。
関連書籍



Javaでクラスの配列を作った場合、newしただけでは初期化されないらしい。
class example[] = new example[10];
では、null Exception Errorが出てしまうので、
class example[] = new example[10];
for(int i=0; i<10; i++){
example[i] = new example();
とすると大丈夫なようだ。
ところで,Javascriptならオライリーのラクダ,Perlならラクダ本などがあるが,Javaの入門書ってあまり評判のいい本の話を聞かない.僕自身も,大体は授業のプリントとAPIドキュメントで一通り学んだ気がする.気になったので,Amazonで調べてみたら,以下の本の評判がよさそうだと感じた.
よくわかるJava (単行本)
Rubyで何か作ってみようと思ったので、勉強の過程を残しておこうと思う。
Rubyのインストール
Rubyの実行環境をインストールするにはいろいろな手段があるが、ここではWindowsで最も簡単と言われる「
One-Click Ruby Installer」を使ってみる。
Rubyには様々なバージョンがあるが、今回はこのブログを設置しているCORESEAVERに合わせて
1.8.5を選択。文字通り、ダウンロードしてクリックするだけで簡単にインストールすることができた。
とりあえず“Hello World”
新しい言語を始めた時はやはりこれから。
テキストエディタで以下のファイルを作成
hello.rb
JAVAやC言語のように、Hello Worldと表示させるためだけでも様々な宣言をしなければならない言語と違い、
たった1行だけで処理できる。このあたりが、最近Rubyが流行っている理由なのだと思う。
ファイルができたら、
[WINDOWSキー] + Rでファイル名を指定して実行を出して“cmd” と入力してコマンドプロンプトを立ち上げて、hello.rbが置いてあるディレクトリに行きファイルを実行。
% ruby hello.rb
% Hello Ruby!!
無事、“Hello Ruby!!”が出力されていればOK。次のステップに進む。
技術評論社が主催する、『エンジニアの未来サミット』という企画を見つけたので、早速申し込んでみた。
エンジニアの未来サミットとは、アルファギーク、そして今最も活躍しているエンジニアが集まり、『不況のこの時代にこそ求められるエンジニアとは何か』、『エンジニアは世の中をどのように変えていくことができるのか?』といったことに関して意見をぶつけ合う企画とのこと。
ライブドアやマイクロソフト、mixiといった企業で働くエンジニアの方の話が聞けるらしいので、今後の参考にするべくいろいろなことを聞けたらいいと思う。
「Write once, run anywhere.」これは,米Sun MicrosystemsがJavaを売り込むために,1990年代半ばに唱えたキャッチフレーズです。これは,ソフトウエアの本質でもあります。
ハードウエアなら,こうはなりません。まだ持っていない人の手にそれを届けるためには,もう1台,だれかが作らなければいけません。創っただけではなくて,作り続けないとダメなのです。裏を返せば,創る仕事だけではなく,作り続ける仕事もあります。
ソフトウエアは違います。だれかがそれを一回創ってしまえば,残りの人はほとんどもう何もしなくてもいいのです。もちろん,「新しいソフトウエアができた」と宣伝しなければほかの人は使ってくれないでしょうが,それはプログラマの仕事ではありませんよね。ましてやそれがWebアプリケーションだった場合は,検索エンジンやソーシャル・ブックマークが勝手に宣伝してくれたりします。
印象に残ったので引用。
僕が考えるソフトウェアの魅力がなんとなくこの“Write once, run anywhere.”という言葉に詰まっているような気がしました。プログラミングばかりしていると煮詰まるときもありますが、そんなときは弾さんがおっしゃているように、
もし,努めて強いないとプログラムが書けないのだとしたら,悪いことは言いません。一度,足を洗いましょう。プログラミングが恋しくなったら,また始めればよいのですし。
という心構えも大事なのかもしれませんね。僕も楽しみながらプログラムしていきたいものです。