1 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 23:47:15 ] プログラミング言語Javaに関する質問スレです。 JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作管理 pc11.2ch.net/hp/ Webプログラミング pc11.2ch.net/php/ をご利用下さい。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド129【歓迎】 pc12.2ch.net/test/read.cgi/tech/1247322478/ 次スレは>>990 あたりで。 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/
175 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 23:09:05 ] >>165 インターネットオプション→詳細→Microsoft VMの項があればインストールされている。 されている場合はコマンドプロンプトからjview.exe。 JViewはXPの初期の段階で排除された。今はもうダウンロードすら出来ない。 それは踏まえてレスするがJViewのjavaの言語仕様は1.1。 それとSun Java VMとMicrosoft VMには互換性がないのでそもそもJ++が吐いたclassファイルくらいしかまともに動かない。 さらに、JViewの外部バージョンが同じでも内部バージョンが違うと動かない。 もう一つ、バージョンを完全に揃えたところでJViewがリンクするDLLのバージョンが完全に一致しなければ動かない。 んで、JViewではSwingがまともに使えないからsun java pluginを入れるんだがこの状態でアプレットを使うと変な挙動をすることがある。 その場合はアンインスコしてsun javaの JREを使う。 方法は↓ ttp://www.java.com/ja/download/help/uninstall_msvm.xml
176 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 23:17:42 ] 言い忘れた。JViewはコマンドラインインタプリタだがIEにはJViewとは別のランタイムが組み込まれててそっちの言語仕様は1.3で止まってる。どっちにしてもSwingがryなので以下略。 んでバグフィックスだけC#が出るまで密かに続いてたが今は放置されてるはず。 だからまともに動かない。
177 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 23:27:33 ] >>175 Microsoft (R) Command-line Loader for Java Version 5.00.3810 Copyright (C) Microsoft Corp 1996-2000. All rights reserved. 使用法 : JView [オプション] <クラス名> [引数] こんなのだろ?苦労してたんだな。お前
178 名前:165 mailto:sage [2009/08/06(木) 23:33:31 ] >>175 詳細な解説ありがとうございます。事情を理解できました。 手元の環境WindowsXP SP3で、 jview.exe を叩いてみましたが見つかりませんでした。 インターネットオプションから、Microsoft VMも探してみましたがありませんでした。 アプレットは、Java6で作ってから、 ランタイムのインストールを促す作りにしたいと思います。 ありがとうございました。
179 名前:165 mailto:sage [2009/08/06(木) 23:40:31 ] >>176 対応してて1.3ですか。 Javaは1.4以降しか触ったことないので残念です…。 アプレットについては、私は仕事でなく趣味なので ぜんぜん大丈夫ですが、おっしゃる互換性のなさは 仕事だと苦労が絶えなそうですね…。
180 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 23:45:19 ] そして誰も使わなくなった。よって大丈夫。
181 名前:デフォルトの名無しさん mailto:sage [2009/08/06(木) 23:53:24 ] >>177 Java1.1→1.2→1.3の過程で皆通った道だが?だから今は>>180 なわけだが。
182 名前:デフォルトの名無しさん [2009/08/06(木) 23:56:54 ] Microsoftアプデートで、JVMもサポートしてくれりゃいいのにな・・正直なところ。
183 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 00:05:23 ] もともとappletはアニメーションやキャンバス2Dが売り(得意)だったはず。 さらにwebアプリと同様、<form>程度ならawtのコンポーネントで十分だし別に今でも廃れてないんだが。 変なIT記事読んで流行に流されてるようなら技術というものはちゃんと勉強しないといつまでも身につかないよ。
184 名前:165 mailto:sage [2009/08/07(金) 00:17:13 ] 実は普段は流行に流されてFlashをいじっているんですが、 先ほどふと思いついて10年振り?に先行者ゲームをやりまして。 あまりの軽さに驚き、アプレット作ってみたいなと…。 こんなに軽いなら、今もっとモダンなJavaアプレットが沢山あってもいいと思うんですけどね。
185 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 00:22:23 ] >>183 アプレットの話じゃなくてMS VMの話だ。 >>184 sun自体がアプレット=Java FX、従来のアプレットの役目はJWSに徐々に移行させている。
186 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 00:32:01 ] アプレットでは有用なライブラリが無いから、開発者のうちライトユーザはflashの方に流れていった。 javafxのようにアプレットとライブラリを一緒にリリースしてたら、たぶんアプレットはサーブレット(とwebコンテナ)同様にトレンドになってたと思うけどね。 もし2D,3DやUIやイベントについてのスキルがあるなならアプレットはかなり自由度が高いよ。 いまは、javascriptとflashを使えてVBとは違った意味でUIについて多少経験があるユーザが増えたから、 アプレットはそのユーザが戻ってくることを期待して整備が進んでいる。 たとえば、appletとjsがさらに強く連携してDOMが簡単にいじれたりする。 ただ、webやappletはブラウザのJS実装に強く依存するけど、webやnetを主体としたアプリを考えてるなら、 IE以外のmozilla,chrome,operaとかの方がMSの俺様ネイティブルールがないぶん素直でいいんじゃないか。
187 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 00:34:24 ] >>185 お前はjava.applet.Appletや<applet>タグしか頭に無いのか? 旧式な奴だなw
188 名前:デフォルトの名無しさん [2009/08/07(金) 00:36:05 ] >>185 MSVMなんてもう使ってる奴いねーってw 脳味噌腐っちまってんじぇね?ww
189 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 00:58:26 ] >>187-188 こいつら同一人物か? 165からのスレの流れ読んでないし日本語理解できてないし。 >>186 mozilla系以外でLiveConnectって使えるの? IEだとActiveX ScriptでJava呼べるけどさ。
190 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 01:31:28 ] >>189 もともとお前に対してのレスじゃないだろ お前は日本語を理解できず状況把握も出来ない落ちこぼれ 一回糞まみれになって死んだほうがいいんじゃね?w
191 名前:デフォルトの名無しさん [2009/08/07(金) 01:47:16 ] 夏厨元気だな
192 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 01:59:57 ] >>189 ここは学校じゃないんだし、そういう態度のままだとこの業界では落ちこぼれになっちゃいますよ?!
193 名前:デフォルトの名無しさん [2009/08/07(金) 02:26:51 ] しかし188が文脈読めてないのは間違いないがな。
194 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 08:36:32 ] >>193 ageるなザコw
195 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 14:01:15 ] 質問なんですが、BufferedReaderのreadLine()でユーザーの入力を待っている状態で、 一定時間が過ぎたら"時間切れです"と表示させて処理を進行させたいんですが、 どうすればいいんでしょうか?
196 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 14:02:19 ] >>195 マルチスレッドで処理する
197 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 14:55:00 ] >>196 ありがとうございます。 スレッドを作って、そっちで10秒時間を計って"時間切れです"と 表示させる事はできるんですが、readLine()の入力待ち状態を強制的に終了させる方法が わかりませんでした。
198 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 17:26:21 ] >>197 データが読めなくなってから10秒後にIOException(を継承したInterruptedIOExceptionとか) を発行するようなread()を持つFilterInputStreamを作って、間にかませたらどうだ
199 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:11:13 ] ready() で入力があるか確認してから読めば?
200 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:23:00 ] 空文字列のチェック (1)str.equals("") (2)str.length() == 0 (3)str.isEmpty ←Java6以降 (×)str == "" ←!!!間違い!!! で、(1)(2)(3)それぞれの使い方のメリット・デメリットを教えて欲しいのですが
201 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:32:12 ] こういうのもあるよ (4) "".equals(str)
202 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:38:55 ] あるけど(4)じゃない。
203 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:49:16 ] うまくいかないです。そもそもうまくいうものかどうかさえわかりません。 eclipseで動的WEBプロジェクトを作成してeclipse内部のtomcatサーバを 起動して、プロジェクトエクスプローラからサーブレットのxxx.javaを 右クリックして実行すれば正常に動いてくれます。 しかし、eclipse内部TOMCATサーバを終了させて、通常のTOMCATを起動して URLを入力してアクセスするとNOTFOUNDになります。 お聞きしたいのは。一つの動的WEBプロジェクトで、 eclipse内部のTOMCA起動でもサーブレットを実行できて、 その動的WEBプロジェクトをコンテキストで参照する外部のTOMCATでも 実行できるようにするのは可能なのでしょうか。いろいろやってみましたが 外部TOMCATで動けるような構成にすればeclipse内部tomcatでは動けず、 eclipseで普通に作れば内部tomcatでは動くければ外部TOMCATでは動かない。 今思っているのは、開発用にはeclipse内部tomcatで動くようにして (テストがしやすいです)、もう一つ外部tomcatで動く別の 動的WEBプロジェクトを作って、そちらにサーブレットを公開用に持ってくる というような二重管理するしかないのかなあと思っていたりします。 みなさまは、どのような感じになっているんでしょうか?
204 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 18:50:04 ] うるさい
205 名前:デフォルトの名無しさん [2009/08/07(金) 19:09:05 ] >>203 外部のTOMCATは公開用? ふつーは開発は手元のマシンでやって、 公開用は別のマシンだぞ? ふつーは開発と公開用は別物。 それを二重管理とは言わん。
206 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:15:01 ] >>205 eclipse内部のtomocatと、インストールしたtomcatの違いです。 別物らしいです。
207 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:20:08 ] eclipseはそういう部分でもポンコツだからね
208 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:21:42 ] swingでボタンとかをクリックした瞬間に、イベントを発生させられます これを任意のコードの中で発生させたいのですが、どうすればいいのですか?
209 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:22:48 ] 公開用サーバに配備するときは.war形式にしない?
210 名前:デフォルトの名無しさん [2009/08/07(金) 19:23:25 ] >>206 だからそのインストールしたtomcatを動かす必要がない。 公開するのであれば別のマシンでやれ。
211 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:24:30 ] >>208 ボタン 「とか」 って言われてもこまるけど、 JButton には doClick() メソッドがあるよ
212 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:29:41 ] >>211 言葉が足りませんでした。例ではswingを出しましたが、 自作イベントを作って、それを任意の場所で発生させられるか? という所が知りたい事です
213 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:34:56 ] >>210 eclipseで作ったプロジェクトは、あくまで開発用であるから eclipse内部のtomocatのみで開発は終始すればいいということですよね。 203に書いたことが出来ないようなので、そうしようかなあと思います ありがとうございました。
214 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:37:30 ] >>212 自作のXxxListenerインタフェイスを定義して、 それをaddXxxListenerメソッドで登録できるようにして、 その登録されたものを普通に呼び出すだけでは?
215 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:37:45 ] >>212 イベントとは何かといえば、単なるメソッドの呼び出しだ。 XxxListener の実装やそのイベントの発生元のコードを真似すればいい。
216 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 19:45:49 ] >>200 なぜ1,2で出来ることにわざわざ3を作ったか考えろ
217 名前:デフォルトの名無しさん [2009/08/07(金) 19:52:36 ] まeclipseは元来素人向けだから その辺注意しながら使わんとね
218 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:44:49 ] だからIDEがらみは該当スレでやれ。アンチまで連れてくるな。
219 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:49:17 ] >>200->>202 答えてくれる人いませんか?
220 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:51:05 ] いませんよアホらしい
221 名前:198 mailto:sage [2009/08/07(金) 20:52:52 ] >>197 すまん。 出来るかどうかやってみたんだが、どうも一旦 in.read() で待ちに入ってしまうと interrupt しようが close しようが戻ってこないようだ。 ポーリングするしかないのかねぇ。
222 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 20:55:10 ] >>200 1と2は間違えて str.equals(" ") str.length() == 1 としてもコンパイルエラーにならない。 3はメソッド名間違えたらコンパイルエラーになるので 間違いに気付くことができる。
223 名前:デフォルトの名無しさん [2009/08/07(金) 21:09:14 ] >>213 eclipseのtomcatでも、 インストールしたtomcatでも、 同じwebプロジェクト参照することはできるよ。 eclipseで普通に作ってから、 インストールしたtomcatで動くよう設定ファイルを書けばいい。 だけどみなさんはあまりそういうことしない。 意味がないから。
224 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 21:10:59 ] System.out.println("タムをしらんかのう タムをしらんかのう");
225 名前:212 mailto:sage [2009/08/07(金) 21:25:14 ] >>214-215 わかりました。ありがとうございます
226 名前:デフォルトの名無しさん [2009/08/07(金) 21:32:03 ] なあ、なんでEclipseみたいなくそIDEがそんなに人気あんの? マジでわけわかめだわ。
227 名前:デフォルトの名無しさん [2009/08/07(金) 22:10:13 ] >>226 残念ながら なんでWindowsが人気あるかとか なんでMicrosoft Officeが人気あるかとか なんで今のキーボード配列が人気あるかとか そーいったレベルになっちゃったね。 デファクトスタンダードだ。 新しいプロジェクト入ったとして、 一人だけeclipseじゃなくてnet beansでやります! みたいなのが通用しないし。
228 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:13:57 ] Sun的にはどうなんだろうか 名前も含めてw
229 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:27:21 ] 名前、メールアドレス、電話番号が規則的に書いてあるテキストがあります これを、今まではStringBuilderでちまちまとHTMLに変換してswingで表示してきました しかし、StringBuilderで結合してHTMLを作るのは大変です 何か楽をしてHTMLを作り出す方法はないでしょうか?
230 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:42:14 ] まて。 プログラムにやらせてるんだから、一件分の出力部分を書いてループで回す だけなんだから、大変もなにも無いと思うんだが。 強いて言えばXHTMLっていうものをググると幸せになれ・・・Swingで表示なら XSLTのほうかな?
231 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:47:06 ] >>230 ループはちゃんと使っています でも、目的の画面を表示するためにはHTMLをけっこう書かなきゃいけないんです(ループでは表現出来ない) だから、StringBuilderでやっていると何がなんだかてことになるわけです XHTMLで調べてみます ありがとうございました
232 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 22:49:54 ] >>226 ところどころイマイチであるところもEclipseのいいところだからなぁ
233 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:02:15 ] >>231 イミフ
234 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:08:42 ] 多分、今どきのスタイルシート頼り切りのHTML記述に染まっていないピュア な心根の持ち主なんだよ。一つ一つ丁寧に心を込めて属性を書きました。
235 名前:デフォルトの名無しさん [2009/08/07(金) 23:16:45 ] 何か楽をしてHTMLを作り出す方法はないでしょうか?
236 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 23:22:47 ] 雛形を作っておいてreplaceする
237 名前:デフォルトの名無しさん [2009/08/07(金) 23:35:28 ] >>235 すまんがおまいさんの状況がわからん。 そんなに大変だと思えない。 HTMLが複雑なのか? Velocityなんてものがあるぞ。
238 名前:231 mailto:sage [2009/08/07(金) 23:55:45 ] >>237 >>235 はオイラじゃないんだけど なんか、最近なりすましが多いな〜
239 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:17:05 ] なまけもの再登場w
240 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:39:10 ] その、楽にHTMLを作るために、属性はグループ化してスタイルシートにまとめて、 構造はXMLな元データを取り出してXSLTで変換して、という技術が作られた。 たとえば <住所録> <名前>xxx</名前><メールアドレス>xxx</メールアドレス><電話番号>xxx</電話番号> <名前>xxx</名前><メールアドレス>xxx</メールアドレス><電話番号>xxx</電話番号> ・・・・ <住所録> という感じのデータを入力として、XSLTスタイルシートで指定した任意のHTMLに 変換することができる。
241 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:43:19 ] >>231 HTMLがXHTMLになったって大して変わるもんじゃなさそうだが…。 個人情報を出さない程度に実際のコード一式をうpろだに出してみたらどうだ。
242 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:43:43 ] >>212 java.sun.com/javase/ja/6/docs/ja/api/java/awt/Component.html#dispatchEvent%28java.awt.AWTEvent%29
243 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:43:43 ] 本家ならパッケージ javax.xml.transform 参照。 他のプロジェクトからも色々とライブラリが公開されてる。
244 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 00:58:48 ] Eclipse IDE for Java EE Developers (189 MB) と Eclipse IDE for Java Developers (92 MB) は どういった点が異なるのでしょうか? どちらがお勧めですか?
245 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:03:40 ] >>244 >>3
246 名前:デフォルトの名無しさん [2009/08/08(土) 01:09:47 ] >>245 一応言語依存だからいいのでは? >>244 Java EE Developersのほうはなんかいろいろついてくる。 マシンのスペックが悪くないなら Java EE Developersいれとけば後々めんどくさくないよ。
247 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:15:40 ] iアプリを作成しているのですが、java.awt.geom.Point2Dが使えないため同機能のクラスを自作したいと思っています。 似た機能(の1部)は作成済みなのですが使ってみるとヌルポが返されたりして1部機能しかまともに使えません。 どのようにすれば、同機能のクラスとして使えるのでしょうか? 作成済みソース。 public class Point { double x; double y; Point location; Point(Point p){ location = new Point(); location.equals(p); } Point(double X,double Y){ x = X; y = Y; }
248 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:17:39 ] void setLocation(Point p){ location = new Point(); location.equals(p); } void setLocation(double X ,double Y){ x = X; y = Y; } double getX(){ return x; } double getY(){ return y; } } お願いします。
249 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:21:41 ] >>247 ぉぃぉぃぉぃぉぃ
250 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:25:16 ] >>245 申し訳ありませんでした。 気をつけます。 >>246 ありがとうございます。
251 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:30:00 ] eclipseで動的WEBプロジェクトでStruts1が無事に動くようになりました。 一週間苦しみました。3月からjava勉強始めてちょうど5か月です。 ここでの質問は100回以上してます。7割くらいは返答いただきました。 ありがとうございました。一通り概要が理解できたので、もう一度、 Javaアプリケーションに戻って、理解を深めようと思います。
252 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:34:06 ] >>251 それなら今度は答える側になってこのスレに貢献することで恩返ししないとね
253 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:35:22 ] >>251 5ヶ月だろうが50ヶ月だろうが、習うしかしてないのなら違いは無い。
254 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:38:18 ] >>252 >>253 がんばります。
255 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 01:45:14 ] >>244 そんな質問してるうちは上には縁がないので下でいいよ 上はJ2EEね EコマースとかWeb開発で使う
256 名前:255 mailto:sage [2009/08/08(土) 01:46:20 ] まじすまん リロードしてなかった スルーしてちょうだい
257 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 02:05:03 ] >>247 JDKのオープンソースな実装から持ってきた方が早い気がする。 OpenJDK openjdk.java.net/ Apache Harmony harmony.apache.org/ ライセンスとかは自分で調べてくれ。
258 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 02:22:22 ] >>255 でもそれってライセンス料が必要になるでしょ。支払いはどうするの?
259 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 02:30:11 ] ?
260 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 04:37:12 ] >>207 IDEの管轄外にある環境をIDEが管理にするわけないのに何言ってんだこの馬鹿は。 EclipseだろうがNetBeansだろうが関係無いわ。 >>219 (1)str==nullのときぬるぽ。内部的に""の実体を探しに行く分、極めて少しだけ時間がかかる可能性がある。 (2)str==nullのときぬるぽ。str以外の実体にメモリアクセスをともなわない分、(1)より極めて少しだけ速い可能性がある。 (3)str==nullのときぬるぽ。古い環境だと動かない。おそらく最速だが(2)と変わらないような気もする。 (4)str==nullでもぬるぽにならない以外は(1)と同じ。 >>255 ライセンスよく嫁。自分で使うだけなら全部無償。
261 名前:デフォルトの名無しさん [2009/08/08(土) 05:26:33 ] ずいぶん昔のレスを引きずってんだなこいつw EEを自分で使うんなら素直にMS使ったほうがいいんじゃね? それともUNIX使うスキルもねーのかよ お前はただの「おのぼりさん」だろお前?w
262 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 07:41:55 ] >>260 >>219 ですが、ありがとうございます。 見易さ優先の(1)、速さを優先の(2)といったところでしょうか。 空文字列チェックを行うからには、前の行でnullでないことをチェックしておくので、ぬるぽに関しては気にしなくて良いと思いますが。
263 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 08:22:02 ] >>262 260じゃないけど横から。 str != null && str.equals("") って書くよりは "".equals(str) って書く方がソースとしてもバイトコードとしてもコンパクト。 equalsの引数にはnullを渡してもよいからこう書けるわけです。 str != null && str.length() == 0 よりは遅いかもしれないけど、毎回こう書くのは面倒でしょ。 特に1つのif文内で複数の変数をチェックする場合とか。 とはいえ、両方変数なら結局は str1 != null && str1.equals(str2) って書くはめになるんだけど。 あるいはorg.apache.commons.lang.StringUtils.equals(String, String)を使う。
264 名前:デフォルトの名無しさん [2009/08/08(土) 10:56:35 ] 開発環境での実行時のメモりの使用量をコントロールするツールとかってありますか? ソースの書き方でパフォーマンスを違いを知りたいのですが
265 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 11:24:54 ] >>201 >>263 もし実際に自分でそう書いているのなら、これを機会に改めた方がいい。 if("".equals(str)){ //処理 }else{ System.out.println("length=" + str.length()); } とか書かれたときのことを考えるべき。
266 名前:263 mailto:sage [2009/08/08(土) 12:01:56 ] >>265 そりゃstrのメソッド呼ぶ気なら事前にnullチェックするでしょうよ。 でもその場合は、 if (str != null && str.equals("")) { //処理 } else { } と書いてもelseにはnullでも来てしまう訳で、 if (str != null) { if (str.equals("") { } else { } } とか、 if (str == null) { return; } if (str.equals("")) { } else { } と書く事に。 もし、nullまたは空文字とそれ以外を分けたいなら if (str == null || str.equals("")) { } else { } って書きますけどね。
267 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:02:58 ] 良く話題になる文字列のチェックだが、nullチェックはそこでするのか?と思う。 例1) public void method(String str) { if(str != null && str.eqals("XXX") { // 処理 } } はおかしくて public void method(String str) { if(str == null) throw new IllegalArgumentException(); if(str.eqals("XXX") { // 処理 } } だろ? String str = buf.toString(); ならば、nullチェックしないだろ? nullチェックと比較はまとめる方が珍しいと思う
268 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:04:43 ] >>266 どんな状況でもこうやればいいという感じで書いておきながら屁理屈こねるなや 後出しで色々いっても見苦しいぜ
269 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:06:44 ] これだからJavaやってる奴は
270 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:09:21 ] これだからプログラムやっている奴は
271 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:11:50 ] >>268 こんなザコために定石なことをわざわざ丁寧に答えたお前の方が「マヌケ」だと思うが?
272 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:13:19 ] 別に>>263 の書き方に賛成ってわけではないが、 >>263 と>>265 ,267は検査する内容が異なってる。
273 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:20:08 ] >>271 スレの趣旨に反しない限り、別に何書いたっていいだろ?
274 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:26:06 ] >>271 まあまあ人格攻撃はやめようよ。 >>265 で、どう書くのが良いのか見せてよ。
275 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:29:43 ] 暑苦しいなあ
276 名前:265 mailto:sage [2009/08/08(土) 12:43:21 ] >>274 nullをどうするかによる。 nullを許すなら>>267 の上のように書くし nullを許さないなら>>267 の下のように書く。
277 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:51:23 ] jframe→jscrollpane→jpanel→jeditorpaneの順番で張り付けていくと、 jframeでは何も表示されません jscrollpaneを経由せずに、jpanelをjframeに張り付けるとちゃんと表示されるのですが なぜですか?
278 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:54:39 ] 自演多すぎ。
279 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 12:58:25 ] >277 jpanelいらん
280 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:05:54 ] >>279 あの〜、まったく表示され無いんですけど JFrame mainFram = new JFrame(); mainFram.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JScrollPane scrollPane = new JScrollPane(); mainFram.add(scrollPane); for(JEditorPane view : viewList) { scrollPane.add(view);
281 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:12:44 ] 全部はれやカス
282 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:18:11 ] >>281 全部貼れと言われても、JEditorPane pane = new JEditorPane("text/plain",str); viewList.add(pane); しているだけなんだけど これ以上コードは無い
283 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:29:02 ] jframe→jpanel→jscrollpane→jeditorpane じゃないの?
284 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:31:29 ] つかこれ以上ないってsetVisivle(true)はしてるだろ。全部貼れよ。
285 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:33:02 ] >>277 Swing知らないが、この辺関係あるのでは? ttp://iiyo-tabun.blogspot.com/2008/10/jscrollpanejpanel.html
286 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 13:42:29 ] >>284 お前、そんくらい誰でもわかるだろJK お前、本当にプログラミングやってんの?
287 名前:デフォルトの名無しさん [2009/08/08(土) 13:59:49 ] >>274 自演乙
288 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 14:06:13 ] >>286 あのな、そーゆー当たり前だと思ってることをやってないってことが結構あるんだよ。 経験者ほどそれを知ってるから、284は全部貼れっていってるんだよ。
289 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 14:13:31 ] >>285 やってみましたが、表示されませんでした
290 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 14:28:54 ] >>288 自演乙
291 名前:279 mailto:sage [2009/08/08(土) 14:45:37 ] JScrollPane scrollPane = new JScrollPane(mainPanel); としたら、なぜか表示されました >>283 ,>>285 本当にありがとうございました >>280 で、ちゃんとコードを表示したのにヒントもくれなかったので >>281 ,>>284 ,>>288 、口だけは達者なのがわかりました 威張っているだけならレスしないでください
292 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 14:45:54 ] >>282 mainFram.pack(); mainFram.setSize(800,600); どこがおかしいか分からないくせに勝手に省略すんなってんだ。 ポカミスは誰だってやるんだよ。 一行違うだけで結果は全く違う。お互い推測でおかしいおかしいって 時間食っても仕方ないだろう。 百聞は一見に…ってことだ。
293 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 14:51:52 ] >>291 280のコードのどこに mainPanel があるんだよw
294 名前:281 mailto:sage [2009/08/08(土) 15:40:47 ] >>279 なんで俺がお前さんのために、ずっと2chに張り付いていなければいけないのか教えてくれw
295 名前:デフォルトの名無しさん [2009/08/08(土) 16:09:41 ] >>291 そうやって調子の乗るならちゃんと質問料を収めてくれますか? あなたはスレに貢献すらしてませんよね。
296 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 16:12:38 ] 醜悪だなあ
297 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 16:25:49 ] 貧乏人がくぶる
298 名前:デフォルトの名無しさん [2009/08/08(土) 16:52:27 ] >>291 クレジットで一括にしてくれますか?
299 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 17:03:37 ] まあEclipse使うってことは周りから10年取り残されるって言うのと同じ意味だからな 覚悟は要るよな
300 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 17:21:26 ] Javaの勉強を始めたばかりのものです。 Eclipseで今学習中なのですが、違うものに変えたほうがいいでしょうか? ひとまず基本情報の午後問題、Javaを解けるレベルまでを考えています。
301 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 17:33:28 ] >>300 まったくない。 世界で一番使われてるIDEだし、 大抵の職場でつかわれてる。 一部アンチがいるだけだ。 気にするな。
302 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 17:42:39 ] >>300 javaの勉強なら、eclipseだろうがなんだろうが関係ない。 IDEの機能に惑わされなければな。
303 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 17:53:51 ] >>301 ,302 お二方ありがとうございます。 急に不安になったので書き込みましたが、 引き続きROMりながら勉強に励みます。
304 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 18:19:30 ] >>303 ちゃんと勉強したいなら2ちゃんねるを見るなんて馬鹿なことはするな
305 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 19:44:00 ] 夏になったらおかしいのが沢山発生した
306 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:52:11 ] public final class Struts1Process extends Action { public ActionForward execute (ActionMapping map, ActionForm frm, HttpServletRequest request, HttpServletResponse response) { Struts1Form outFrm = (Struts1Form) frm; request.setAttribute ("outFrm",outFrm); return map.findForward ("success"); この場合に、ActionForm frm のオブジェクトとしてアクションフォームBeanの 内容を引き継いでいると考えていいのでしょうか。
307 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:54:19 ] はい
308 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:57:08 ] パッケージってネーム空間みたいなもん?
309 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:58:28 ] コンポーネントを複数重ねあわせた際、マウスイベントを 全コンポーネントに処理させるのはどうすればいいですか? トップのコンポーネントにイベントが持って行かれちゃって困っております
310 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 20:59:08 ] >>307 ありがとうございました。
311 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:02:36 ] >>308 ja.wikipedia.org/wiki/%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8_%28Java%29
312 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 21:10:03 ] >>311 ありがとう!
313 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 22:06:17 ] >>308 パッケージってディレクトリ(フォルダ)のことだよ
314 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:03:20 ] >>308 >>313 ディレクトリと違って階層構造になってないから気をつけて。
315 名前:デフォルトの名無しさん [2009/08/08(土) 23:52:55 ] 階層構造になってるだろ(´・ω・`)
316 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 23:54:21 ] >>292 >mainFram.pack(); >mainFram.setSize(800,600); これだとフレームの中のコンポーネントのサイズが狂うからパネルのサイズを設定した後フレームをパックじゃないか?
317 名前:292 mailto:sage [2009/08/09(日) 00:30:25 ] >>316 推測してた名残だと思って無視してくれ、すまん。 ちなみにsetSize→packだと、packで再計算されるからsetSizeの意味が無い。
318 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 01:23:03 ] >>317 packに任せるにはsetSizeではダメで、setPreferredSizeが必要なんじゃ?
319 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 01:26:46 ] >>315 www.atmarkit.co.jp/bbs/phpBB//viewtopic.php?mode=viewtopic&topic=44675&forum=12&start=0 こーゆーことがいいたかったわけで。 まぁ、ごめん気にしないでくれ。 初心者はパッケージ≒ディレクトリだと考えてくれれば。
320 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 02:33:30 ] JDK6u14って日本語版ないみたいだけどこれって内部メッセージはちゃんと日本語なんだよね あとJREの最新版はu15みたいだけどSDKのバージョンとJREのバージョンが違うことってあるの?
321 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 02:35:51 ] >>320 java.sun.com/javase/ja/6/download.html
322 名前:デフォルトの名無しさん [2009/08/09(日) 03:09:44 ] >>321 バカ? そこのダウンロードするとlanage選択でEnglishしか選べないんだよ! 死ねかす!
323 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 03:27:15 ] >>322 眠いなら寝ろ
324 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 04:12:34 ] lanageってwww
325 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 04:41:42 ] >>322 脊髄反射して上げるなカス
326 名前:デフォルトの名無しさん [2009/08/09(日) 11:21:24 ] 「ねかす!」ってなに?
327 名前:デフォルトの名無しさん [2009/08/09(日) 11:23:13 ] あげないローカルルールってどこ?
328 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 11:30:41 ] 教えてくんはカエレ
329 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 12:55:24 ] javaで簡単なwebブラウザを作ろうと考えているのですが JEditorPaneを使うと遅い気がします、何か他に良いライブラリを知っていたら教えてください
330 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 13:49:46 ] >>326-327 上げるな むさくるしいだろ!
331 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 14:21:11 ] JavaでClass.forNameを使ってクラスオブジェクトを作った場合、 プロセスを落とすまでJavaVMにクラスはキャッシュされたままでしょうか?
332 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 15:08:03 ] >>331 ttp://d.hatena.ne.jp/higayasuo/20090716/1247702860
333 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:23:55 ] テストのときだけ実行したいメソッドがあります。 C言語ではテストかどうかを外部の設定ファイルを見て、実行するかしないかを制御してたのですが、 Javaも同様の制御が無難でしょうか? もっとよい方法はありますでしょうか?
334 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:32:42 ] >>333 リフレクションとかアノテーションとかを使うことになるのかもしれないが、 テストのときというのがどんなことをするかによるだろ。 設定ファイルにクラス名.メソッド名を羅列して、その順番に実行するのか? それとも単にランチャーからどのクラスのmain()メソッドを実行するかだけなのか? とかな。
335 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:34:32 ] static final boolean debugFlag = true; を定義して 普通にリリースするときに falseにすればいいだろ・・・
336 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:36:58 ] >>334 言葉足らずでした。 本番時は他社のシステムに接続し(SOAPで)データを受け取るのですが、 テスト時は外部システムに接続できないので、適当な値を変数に設定したいのです。 そこで、処理を分岐させたいのです。 >>335 Javaは新しい言語なので、何かしぶいやり方があるのかと思いまして。
337 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 16:43:41 ] JAVA AWTに関しての質問なのですが 最初のウィンドウ?に コンポーネントをextendsして作成したクラスを追加した後 追加したコンポーネント上でマウスがクリックされた等の動作を最初のウィンドウのクラスで検知することはできるのでしょうか? (よく分からないため 用語の使い方等がおかしい可能性が高いです。) ttp://www.dotup.org/uploda/www.dotup.org18518.jpg イメージ
338 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:11:16 ] 最初のウィンドウクラスにリスナー追加したらおk
339 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:14:50 ] >>336 今どきならばJUnitでモックとか使う。 というか、大昔からそれしかないが・・・(C言語でも似たようなことやってた)
340 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:17:32 ] >>336 おおざっぱに 「他システムに接続してデータ取得」の部分を一つのオブジェクトにしておいて、 interface Transfer { Data receiveData(Param param); } class RealTransfer impliments Transfer { public Data receiveData(Param param) { /*他システムと接続してDataを得て返す*/ } } class MockTransfer impliments Transfer { public Data receiveData(Param param) { /*テスト用のDataを適当に生成して返す*/ } } class Main { public static void main(String args[]) { //転送用オブジェクトを選択生成 Transfer trans = null; if(args.length == 1 && args[1].equals("test")) { trans = new MockTransfer(); } else { trans = new RealTransfer(); } //本番かテストか気にせず使用 Param param = 〜; Data data = trans.receiveData(param); } } てな感じ。
341 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:20:59 ] >>337 すみません その方法を教えていただけないでしょうか。 感で addMouseListener(追加したキャンバスクラス); と書いてみたものの駄目でしたorz また、最初のウィンドウクラスに public void mouseClicked(MouseEvent e) { System.out.println("click"); } と書いても追加コンポーネントをクリックした時は反応がありませんでした。 (ウィンドウ上コンポーネント外では反応しました。)
342 名前:340 mailto:sage [2009/08/09(日) 17:27:42 ] >>340 うああ "args[1]"→"args[0]" その場書きだからとゆるしてやってくれ…汚しスマ
343 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:31:17 ] >>341 ”感”じゃなくて”勘”だろうw 未確認だが 追加したキャンバス.addMouseListener(最初のウインドウ); ではどうだ?
344 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:37:48 ] Javaって機能ごとにクラスを分割するじゃん。(入力チェッククラス、ファイル書き込みクラス・・・) でも、これらって1つのおおもとになるクラスから、いちいちnewして呼ぶんでしょ。 1つのクラスに書いたほうが、たくさんインスタンスを作らなくてよい分、性能がいいんじゃないの? クラスが増えるとメンテナンスも悪くなるし。 きちんとメソッドごとに機能をわけていればよいと思うんだけど。
345 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:42:35 ] >>343 上手くいきました ありがとうございます。
346 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:48:00 ] >>344 んなこた無い。再利用性ってググってみよう。
347 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:55:37 ] /home/ユーザー/hoge1/hoge2/hoge.txtというパスにあるファイルを作りたいと考えています どこのディレクトリまで存在しているか?ということをどうやったら、調べられますか? 例えば/home/ユーザー/まではちゃんとディレクトリが存在して、hoge1以下は存在しないよ〜 って感じです。
348 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 17:58:40 ] >>344 正解。皆騙されているだけ
349 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:09:57 ] >>347 File file = new File("/home/ユーザー/hoge1/hoge2/hoge.txt"); while(!file.exists()) file = file.getParentFile(); //この時点のfileはあるらしい //rootもなけりゃぬるぽ もちろん未確認
350 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:20:26 ] >>347 作りたいだけなら file.getParentFile().mkdirs(); file.createNewFile();
351 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:22:10 ] >>348 やっぱりそうですよね。 僕はそう簡単にだまされません。 先日、入力チェッククラスを作っている童貞がいました。 C++神の僕にはそんなクラスはかっこ悪くて作れません。
352 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:24:07 ] >>344 >>348 一人で全部作ってろ
353 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:24:20 ] 部品化(Bean)など上手くいっている現場は珍しい。 ほとんどはウンコ。わけわかめ。分けりやあいいってもんじゃない。 かえって思考が分散する。以上だ。
354 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:27:05 ] 太古の昔から部品の共通化などと能書きは垂れるが 細部にまで一貫性を保ってプロジェクトを運用し、設計思想を貫けるような SEは殆どいない。理想はそうだろうが人間の頭は付いて来ない。 わかったか。
355 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:27:44 ] 俺できるよ?
356 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:28:47 ] >>351 何で入力チェッククラスがダメなの?
357 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:32:39 ] 分けなくていいもんまで分けたり、 分けられるもんを分けなかったり、 取っておけるもんを毎回作って消したり、 単にツクリが悪いだけだろ。
358 名前:347 mailto:sage [2009/08/09(日) 18:50:47 ] >>349-350 わかりました。ありがとうございます 参考にします
359 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:52:48 ] >>344 1つのおおもとになるクラスから他のクラスを呼ぶってのは、 最近あまりみないよ。
360 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 18:57:42 ] >>336 Java言語向けのやり方としては、外部システム接続がらみの境界線で interfaceを定義して、テスト環境ではモックオブジェクトに切り替える ようにするのが定石。 で、その切り替え処理はある程度DIコンテナ(Spring, Seasar2, Google Guice等)に任せるのが最近の傾向。
361 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:08:33 ] テキストファイルを1行読み込んだら、読み込んだデータをテキストを処理するクラスに渡す という作業をループを使用して実装したいと考えています。 速度向上のためにテキストを処理するクラスはThreadを継承しようと考えています。 しかし、IOの方が遅いので行を読み込み終る前にテキストを処理するスレッドが終了してしまいます どうにかして、勝手におわらせないようにしたいのですが どのようにすればいいのでしょうか?
362 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:12:20 ] 1行1スレッドという発想は神ですね。 感動しました。
363 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:18:35 ] >>362 煽るの好きだな
364 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:21:59 ] >>361 つBlockingQueue
365 名前:361 mailto:sage [2009/08/09(日) 19:29:12 ] >>364 ありがとうございます。 早速ググってみます
366 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:46:02 ] final String str = "str";str = "STR";はダメなのに final ArrayList<String> list = new ArrayList<String>();list.add(str); は問題なくadd()出きるのですか?
367 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 19:54:55 ] Java には代入とメソッドの区別ができるから
368 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:04:11 ] >>366 final はオブジェクトの参照そのものが変化しないことを要求するだけ。 String への代入は参照そのものが変化するから× list.add は list への参照そのものは変化しないから○
369 名前:366 mailto:sage [2009/08/09(日) 20:06:49 ] >>367-368 非常に参考になりました。ありがとうございます
370 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 20:30:23 ] >>366 finalが制限するのは、変数とオブジェクトの結び付きだけなので、オブジェクト自身に対する操作には影響しない。 絶対切れない紐の先に犬を結び付けたら別の犬に取り替えることはできないけど、犬がモノを食っても紐の種類には関係ない。
371 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 21:53:02 ] 1つのメインのクラスから、色々なクラスをよぶとき、 クラス図はどう表現すればよいのでしょうか? 1つのメインになるクラスから、使用しているクラスに矢印をひっぱるのでしょうか?
372 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:03:19 ] アノテーションについて質問です。 アノテーションはあくまでクラス(Class<?>)が持つもので 例えば class Hoge { @Anno Integer i; } Hoge h = new Hoge(); としたとき h.iからそのフィールドに付いてる@Annoを取得(h.getDeclaredFields()してFieldを取得することなく)することはできないという認識でよいのでしょうか?
373 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:23:59 ] >>371 適当にやじるし引っ張っとけ。 あってもいないし間違ってもいないし、理解もしていない。 >>372 正しい。h.iは単なるInteger型の参照でそれからは情報を取ることはできない。 Hogeのクラス情報(h.getClass, Hoge.class)から取得する。 ちなみに、アノテーションはRuntime属性にしておかなければ実行時には情報がなくなるので注意されたし
374 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:37:45 ] アノテーションって何が出来るのですか
375 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:38:23 ] >>373 アノテーションの意味的には取得できてもよさそうなものですが、やはり無理なのですね。 ありがとうございます。
376 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:46:24 ] >374 一言で言えばフィールドやメソッドにラベルを付けられる ラベルが付いているか付いていないかでIDEやフレームワークが「なにか」をするかもしれない >375 いやできないのが自然だろう。 アノテーションは商品の値札のようなもの。 値札はパッケージや陳列棚にはつけるが、商品そのものには付けない が、他の店で等々の品はある。
377 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:51:09 ] javaにはRTTIがないから>>372 の動作が自然だと思ってたんだが>>375 はなんでそう思うの?
378 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 22:52:00 ] >>371 それは依存なので破線の矢印で表す。 矢印の方向はそれであってる。
379 名前:デフォルトの名無しさん mailto:sage [2009/08/09(日) 23:00:58 ] @deprecateは取り消し線が付いて有益だと思う @supressは黄色いびっくりwarningが消えるので有益 他に何かある?
380 名前:>>375 mailto:sage [2009/08/09(日) 23:07:10 ] >>376-377 考えがかなり浅かったようです。 >>376 の例を考えると納得でした。 勉強になりました。重ねてお礼を申し上げます。
381 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 05:15:08 ] 株やFXの業者サイトを開くと有名なjavaのマークの周りを■がぐるぐる回るアイコンが表示され その後チャートなどが表示されますが、あれは「JAVAで作成されたプログラム準備中」という意味でしょか?
382 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 12:12:04 ] BlockingQueueを教えてもらった者ですが、確認させていただきます BlockingQuequeに何も無くなったら、 自分自身(BlockingQueque)があるスレッドを自分自身で止めるということでいいんですよね?
383 名前:デフォルトの名無しさん [2009/08/10(月) 12:20:40 ] >>374 DI
384 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:00:29 ] ファイル読込で、BufferedReaderとInputStreamReaderを使用すると読み込むことは可能ですが、UTF8に変換されるのが困ってます。 SJIS読込→UTF8となって後の処理 SJISファイル出力でファイルを出力すると一部文字が文字化けしてしまいます。 これを解決するために、SJISファイルを読み込んで、内部的にもSJISの状態を保持して読み込むことは可能でしょうか?
385 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:03:54 ] >>382 自分自身(BlockingQueque)があるスレッド、などというものは存在しないよ BlockingQueue自身はスレッドを持っていない 止めるのは要素を取り出そうとした(takeを呼び出した)スレッド あとついでに、満杯のキューにputしようとしたスレッドも空きが出来るまで止められる
386 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:08:37 ] >>384 そもそもInputStreamReaderというのは、byte(バイト)をchar(Unicode文字)に変換するためのクラス 変換を通さずInputStreamから直にbyteを読み取ってOutputStreamに出力すればよいのでは
387 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:20:19 ] >>386 やっぱりそうなりますよねぇ。 一行読込とかやりたかったんだけど、自前で組むしかなさそうですねぇ。 サンクスです。
388 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:23:32 ] if(objFrm.get("idno")!=null && !objFrm.get("idno").equals("")){ このときに、!=nullはヌルじゃないを検査して、 !objFrm.get("idno").equals("")もヌルじゃないを検査しているのですけど どうして2回繰り返すのでしょうか。
389 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:24:39 ] s-jisのreader使って一行読み込んで,s-jisのwriter使ってoutputstreamに書き込めばいいんでない?
390 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:25:51 ] ちゃんと読まなかった結果がこれだよ…
391 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:29:58 ] >>384 もしかして "SJIS" じゃなくて "Windows-31j" とか "MS932" を指定すると上手く動いたりしないだろうか
392 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:31:17 ] >>388 null と "" は別のものなので、2個チェックする必要があります
393 名前:382 mailto:sage [2009/08/10(月) 13:33:58 ] >>385 わかりました、ありがとうございます
394 名前:デフォルトの名無しさん [2009/08/10(月) 13:43:53 ] >>384 "Windows-31j" と"MS932"は、試してみましたがだめでした。 2chのスレッド内容を取得しようと思ったんですけど、httpHeaderに設定されている「content-length」の値と SJIS→UTF8→SJISファイル出力で取得したbyte長が異なるので困ってます。 うーんいい方法はないのかなぁ。
395 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 13:53:40 ] >>394 改行コードの問題とかはない? readLineは\nでも\rでも\r\nでも改行扱いするはずだけど、出力してる改行コードが元と違うとか 具体的に何がどう変わってるのか、バイナリダンプかなんかで比較して調べるべきかと
396 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:19:09 ] >>387 >一行読込とかやりたかったんだけど ttp://commons.apache.org/io/api-release/ こういうのがありますが、使えませんか?
397 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:27:35 ] >>394 やりたいこととやってることが微妙に合っていないように聞こえるが。 2chのhtmlが文字列だからといって、Reader/Writerを使わなければならない訳じゃない。 そもそもContentLengthはhttpのボディ部が”バイナリとして”何バイトあるかを示しているはずだ。 だからReader/Writerじゃなく、InputReader/Writerでバイナリのままファイルに落とせ。
398 名前:397 mailto:sage [2009/08/10(月) 14:29:48 ] >>397 ごめ、イキオイで間違った。 >inputRaeader/Writer じゃなくて InputStream/OutputStream
399 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:45:36 ] >>396 ディレクトリ操作とか便利そうですが、今回のファイル入出力に関してはちょっと用途が違うなと思いました。 >>397 ,398 やっぱしstreamでI/Oするのがスマートそうですね。 ちょっと実装してみます。
400 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:46:08 ] >>394 >「content-length」の値と >SJIS→UTF8→SJISファイル出力で取得したbyte長が異なるので困ってます。 content-lengthの事を書いているのを見ると、差分データを取りに行きたいんでしょ? スレッド番号.infoみたいなのを作ってレスポンスヘッダからconect-lengthの値を取得して、 <content-length>数値</content-length>とかやった方がいいと思うんだけど。
401 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:46:16 ] >>394 改行コードは問題ありませんでした。LFなので特に困ってないです。
402 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:49:46 ] >>400 ご名答。 ずばり2chスレッドの差分データを取得するために、content-lengthの値を設定したいのですが、思った通りに値を設定できなくて四苦八苦してます。 ちょっと悩んでみます。
403 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:51:37 ] うるさい
404 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 14:52:42 ] むしろHTTPなら java.net.HttpURLConnection とか import java.net.URL でまかなえるのでは
405 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:01:25 ] >>402 自分で全体から一部を取り出さなくても、”新着レスの表示”リンクを見れば URLにちょっと書くだけで差分が送られてくることが分かるだろ 全体を得たとしても、htmlを良く見ればレスがdat落ちと似た形式で一行毎になっているのが確認できるはずだ。 その部分を抜き出せば、レスの件数=行数。差分も得やすくなるだろ。
406 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:02:19 ] 受信した生データはいったんそのままStreamでファイルに保存しておいて、 あらためてファイルからReaderで1行ずつ読み込めばいい
407 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:23:52 ] >>402 >>404 にも書いてある通りHttpURLConnection 使った方がいいと思うな www.fk.urban.ne.jp/home/kishida/kouza/kishou/14net.html てか、content-lengthを取得できないっってことはe-tagも取得できていないでしょ? サーバに必要なデータを送らないと、ちゃんとデータを送り返してくれないような気がする 差分データはステータスコードを気にしながらコードを書かないいけないので注意
408 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:28:35 ] >>405 それがdatファイルの扱いに関しては簡単ではないんです。 >>406 ,407 初回は、HttpURLConnectionで取得しているのですが2回目以降は、最初に取得した情報をファイルに出力しておいて ファイルの差分をHttpURLConnectionで問い合わせようとしています。 そこで、content-lengthが重要になってくるんです。 javaじゃなければ簡単に処理できんだけど、なんでUTF8以外を扱おうとするとおかしくなるんだろ。
409 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:32:26 ] >>392 ありがとうございました。
410 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 15:48:57 ] >>408 とりあえず、初回読込はネットから取得してSJISファイル保存。 2回目以降のアクセスは、さきほどのファイルからbyteを取得して、ネットから差分取得でうまくいきました。 ありがとうございます。