siteあるプログラマの勉強部屋。wrong.」というエラーで起動しない件について。開発者向けの記事なので、解決策だけ知りたい方は飛ばして結論から読んでください。事の始まりは、Twitterでの@shimashimanekoさんのこのツイートから。jUploadrが起動しなくなった。shimashimanekoshimashimaneko僕自身はjUploadrを使っていないのですけど、FlickrやZooomrなどの写真共有サービスにバッチ的にアップロードするソフトだって事は知ってました。Javaプログラムなんだし、スタックトレースみれば分かるんじゃないかなーと思って調べてみることにしました。解析まずjUploadrのサイトはあちこちリンク切れになってて、紛らわしいことに、似たような「JUploader」と言うツール(jUploadrと違う)もあって混乱。jUploadr本体を入手するのもちょっと迷いました。ダウンロードして解凍してみると、jUploadr.exeというWindows用の実行ファイルがあります。wrong.」というエラーメッセージとともに終了してしまいます。Javaでできたソフトウェアなんですが、Windowsユーザ向けにexeから起動する形式になっています。実際にはjavaVMで動くのでおんなじです。EXEファイルがどうやってJavaを実行しているのか分からず、解析しにくくなりました。org.scohen.juploadr.app.JUploadrとあるのでここから起動すれば良いんだと分かります。クラスパス属性もあったのですが、全部通して起動してみます。...libフォルダの中を見たときに気づいたのですが、UIにswtというeclipseなどで使われているGUIライブラリを使用しています。これはOSネイティブなUIをJavaから使えるというやつでして、JNIをつかっているためDLLを参照できるようにしなければなりません。-Djava.library.pathで、DLLのおいてあるlibフォルダを追加。...Javaのスタックトレースって親切ですねぇ。なんでこんな文字を数値化しようとして、NumberFormatExceptionが出てるか意味不明だったので、スタックトレースにでてるクラス名からCVSに置いてあるソースコードを追いかけてみると、ImageUploadApiというクラスのversionCheckメソッドでやっている処理がアヤシイ。ダウンロードして、そこから取得した文字列をparseIntしている感じです。「じゃあversion.txtの配信がおかしいのかな?」と思ったところで、jUploadrの本体を入手するときにリンク切れだらけだったのを思い出しました。juploadr.sourceforge.netというドメインが失くなって、version.txtを取得できていないのです。foundとか返されないまま200番でエラーページ風なものが表示されちゃう。これをjUploadrは正常に取得できたとみなしちゃってエラーになって落ちちゃってるようです。2007年から更新されてないみたいなんで、とりあえずこのバージョンチェックで落ちないようにすれば解決しそうです。HTTPのステータスコードがエラーになれば、それでバージョンチェックもスキップされるので、hostsファイルにjuploadr.sourceforge.netの設定を適当に書いてみると、ちゃんと起動できました!この回避策はちょっと良くないので、ImageUploadApiクラスのversionCheckメソッドを実行しないようにして、それを配布すれば良いかなと考えました。ImageUploadApi.javaは、CVSから取ってきても良かったのですが、一応現在利用しているものから取り出すことにして、jadという逆コンパイラでクラスファイルから逆コンパイル。コメントアウトして再コンパイル。ImageUploadApi.classと匿名インナークラスのImageUploadApi$1.classが出力されました。これをJARファイルにしました。jUploadr.exeが起動するときに、おそらくlibフォルダにあるJARファイルを全部クラスパスに通すのだろうと予想して、libフォルダにJARファイルを入れることに。オリジナルのImageUploadApiクラスよりも先にクラスパスから見つからなければならないため、JARファイル名を辞書的に先頭に来るようにa_fix.jarとしました。これで起動してみると見事に起動!試しにファイル名をz_fix.jarとしてみると、予想通りオリジナルのImageUploadApiクラスが先にロードされるようでエラーになります。フォルダにa_fix.jarをcopyする追記まだうまく動いていない人もいるようです。Mac版も用意してみました。これでも動かない人もいるようです。ファイルと上書きするもう少し完璧な方法を調査したいと思います。2011/07/05追記:最終的にjuploadrの作者さんがドメインの問題に対処してくれる事になって、上記のパッチは無くても起動できるようになりました。コメントをキャンセルメールアドレスが公開されることはありません。date*日本語が含まれない投稿は無視されますのでご注意ください。コメントデータの処理方法の詳細はこちらをご覧ください。@civicガジェット好きなソフトウェアプログラマー。SeatNextなどを開発しました。