トップページ⇒tech
1001コメント334KB

【初心者】Java質問・相談スレッド78【大歓迎】

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん2005/12/22(木) 11:12:49
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals を使え。
・内部クラスから外部クラスのローカル変数は使えない。他の方法を考えろ。

前スレッド
【初心者】Java質問・相談スレッド77【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1134019617/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/

次スレは>>980あたりでお願いしまする。

0809デフォルトの名無しさん2006/01/09(月) 04:20:45
よーし、俺も釣られちゃうぞ。
>>755=>>793
「簡単なプログラム書けばすぐ終わる」ならさっさと書きやがれ。
お前が同じにならない例を1つでも出せばそれで終わるんだからな。
まあ、そんな例出せるわけないわな。pgr
0810デフォルトの名無しさん2006/01/09(月) 04:38:01
>>808
http://www.y-adagio.com/public/standards/tr_javalang2/lexical.doc.html#101083
>・定数式(15.28)によって生成される文字列は,コンパイル時に計算され,リテラルのように扱われる。
http://www.y-adagio.com/public/standards/tr_javalang2/expressions.doc.html#5313
>コンパイル時の定数式 (constant expression) は,次のものだけを使用して構成されるプリミティブ型の値又は String を表す式とする。
>・初期化子が定数式である final 変数を参照する単純名
0811デフォルトの名無しさん2006/01/09(月) 05:02:50
ここまで釣ったのだから、
責任を持って >>755 は反論しる
ワクテカ
0812デフォルトの名無しさん2006/01/09(月) 07:48:17
Windows 用の J2SE Development Kit 5.0をインストール
しています。インストーラではインストールする項目
が選べますが、

【開発ツール】J2SE Development Kit 5.0 (専用 JRE 5.0 を含む)
【Public JRE】スタンドアロン JRE

このうち、上の「専用 JRE」てのはなんなんでしょうか?
0813デフォルトの名無しさん2006/01/09(月) 08:24:21
Sun の JVM って、起動時に固定サイズのメモリがっつりOSから
取るんでしょうか?それともアプリケーションからの要求に
応じて動的にメモリ取ってくれるんでしょうか?

Java アプリ動かすと、javaw.exe が激しくメモリ
占有しているんで、気になります。
0814デフォルトの名無しさん2006/01/09(月) 08:32:30
>>755は前にも出てきた半端な知識のリアル厨房だろ
釣りじゃなくてリアルで分かってないと思われ
0815デフォルトの名無しさん2006/01/09(月) 08:35:59
>>813
動的にとるが上限あり
0816デフォルトの名無しさん2006/01/09(月) 08:56:43
>>815 ありがとうございます。安心しました。
0817デフォルトの名無しさん2006/01/09(月) 08:57:23
CDT って C/C++ Indexer を On にしていると、
激しく固まったりして使い物にならないのはなぜ?
08188172006/01/09(月) 09:00:53
すんません、 Eclipse スレと間違えました。
華麗にスルーしてください。
0819デフォルトの名無しさん2006/01/09(月) 09:45:36
>>774
mustang ならタスクトレイ使えるよ。
メモリ掃除ソフトは作れないと思うけど。
0820デフォルトの名無しさん2006/01/09(月) 10:26:05
>>812

privateJREというやつだ
SDKを動かすためにいれるランタイム

publicはレジストリ登録やパスを通していてシステム全体で使えるものだが
privateJREはそのアプリが必要とするランタイム

だから、publicとしてシステムには1.4.2をいれておいて
開発用に1.5.0ということも普通にある

また、細かいリビジョンでの違いが存在するため挙動を確保するために
アプリにつけて配布というのはよくあること
0821デフォルトの名無しさん2006/01/09(月) 10:57:43
もうString同値の話題は禁止にしようぜ
0822デフォルトの名無しさん2006/01/09(月) 11:03:39
すれば。脳内で。
0823デフォルトの名無しさん2006/01/09(月) 11:51:00
マルムシさんがタウリン入り飴を好きなように
民度の低そうなやつに限ってGUIアプリだの、
常駐アプリだのを作りたがるね
0824デフォルトの名無しさん2006/01/09(月) 12:05:11
>>809
わからない奴らだな、”常に==が同じになるとは限らない”といっている意味がわからないのか?
どうなるかは常にわからないのだから、何回も繰り返して表示するプログラム書けばいいでないの。
そのうちたまにfalseになるんだから
0825デフォルトの名無しさん2006/01/09(月) 12:09:59
>>824
阿呆だな
「常に〜とは限らない」のならば
常で無い場合には必ず何がしかの条件があるはずだろ
その条件も提示せず結論のみ言ってるのは
細木かずこの占いより信用できない
0826デフォルトの名無しさん2006/01/09(月) 12:13:14
確かに「==比較の結果」だけ着目すれば、既出のように
変数の初期化の仕方によって結果は異なるね。

>>825
勘違いしている
"aaa" == "aaa"
は確かに常にtrueだけど、>>824が言っているのは「==」の部分
両辺のオブジェクトについては触れてないだろ?
比較したいオブジェクトによって結果は異なる。

"aaa" == "aaa" の "=="かもしれないし、
new String("aaa") == new String("aaa") の "=="かもしれない
08278262006/01/09(月) 12:14:58
ごめん、俺こそ勘違いだな
>そのうちたまにfalseになるんだから

これはあり得ないね
忘れてくれ
0828デフォルトの名無しさん2006/01/09(月) 12:16:09
>>825
意味の捉え方が違う
スレッドで割り込むタイミングが全く一緒でしょうか?
アレと同じだよ
0829デフォルトの名無しさん2006/01/09(月) 12:19:37
>>828
それは条件を提示する事が出来るが
>>824は結果のみfalseになる場合もあると言ってる
条件提示できずとも,そのプログラムを是非晒してもらいたいものだ
0830デフォルトの名無しさん2006/01/09(月) 12:26:47
なぜ、equals使いなさいといわれるのかよく考えてくれ

==で常に同じ結果になるとそこまで言うのなら(リテラルパターンの場合だけだが)
==使ってもいいじゃない?なのに(多分)おまえらは使っていないだろう?なぜ?

>条件提示できずとも,そのプログラムを是非晒してもらいたいものだ
そのまえによーお前の使っているPCの種類おしえろやCPUな
0831デフォルトの名無しさん2006/01/09(月) 12:30:01
>>755
簡単なプログラムを書いてくれないためにループしてる件について
期待age
0832デフォルトの名無しさん2006/01/09(月) 12:31:24
>>830
ThinkPadX31(PentiumM1.7GHz)、WindowsXP
VMはIBM1.4.2とSUN1.5.0

で、何で==を使って比較しないか。
それは両辺のオブジェクトの生成経緯を知らないから。
明らかにリテラルなら使うかもしれないが、そもそも
同一リテラルを比較することが明白なら
if(true)とでもしたほうがまし。
0833デフォルトの名無しさん2006/01/09(月) 12:34:22
>>830
ハイ,条件が一つ出ました
どうやらfalseになる条件にCPUの種類が関係するそうです
期待ageage
0834デフォルトの名無しさん2006/01/09(月) 12:36:57
>簡単なプログラムを書いてくれないためにループしてる件について
>期待age

プログラムは簡単だけどよー
環境構築の手順書くのがめんどいんだよ
ここでも読んでくれ
http://tomcat.apache.org/tomcat-5.5-doc/balancer-howto.html

0835デフォルトの名無しさん2006/01/09(月) 12:39:17
>>834
環境構築はTOMCATのサイト見るんで、
プログラム書いてよ
0836デフォルトの名無しさん2006/01/09(月) 12:40:12
>>834
わかった
環境はなんとかしよう
まずはその簡単なプログラムを提示してくれ
0837デフォルトの名無しさん2006/01/09(月) 12:43:29
>なぜ、equals使いなさいといわれるのかよく考えてくれ

リテラル値とは限らないからだろ。
0838デフォルトの名無しさん2006/01/09(月) 12:44:43




   も し か し て



   再 現 で き な い の ?




0839デフォルトの名無しさん2006/01/09(月) 12:47:37
次の言い訳
JDKをピッチでダウンロードしている
Eclipseをピッチでダウンロードしている
Tomcatをピッチでダウンロードしている
Apacheをピッチでダウンロードしている
Cygwinをピッチでダウンロードしている
Apache-Tomcatコネクタをコンパイルしている
0840デフォルトの名無しさん2006/01/09(月) 12:52:28
>ピッチ
家に無線LAN来る前はそんなことやっていたな
0841デフォルトの名無しさん2006/01/09(月) 12:54:11
SPARCじゃないと再現できない

とかですか?
0842デフォルトの名無しさん2006/01/09(月) 13:01:35
ロードバランサー環境か・・・ふぅ〜
0843デフォルトの名無しさん2006/01/09(月) 13:11:47
なんかつまんないね
0844デフォルトの名無しさん2006/01/09(月) 13:14:18
要は別VMに持っていった時にfalseになることもあるっていいたいわけ?
0845デフォルトの名無しさん2006/01/09(月) 13:15:21
RMI
0846デフォルトの名無しさん2006/01/09(月) 13:15:54
視野の狭い奴ら
0847デフォルトの名無しさん2006/01/09(月) 13:18:54
そもそもリテラルとStringオブジェクトの区別をつけろよな
リテラルは別なVMにはもってけないだろ
0848デフォルトの名無しさん2006/01/09(月) 13:19:35
そういや昔このスレで、やっぱり==はfalseになるって言ってるやつがいて、
根拠は「BeanShellで確認したから間違いない」だった。突っ込み入れる
気力も失せたね。
0849デフォルトの名無しさん2006/01/09(月) 13:29:09
俺にはすっげぇ趣味の悪いストレス発散の方法があって、
道行くカップルの女のほうに、
「あ、ミキちゃん!久しぶり!
 え〜と、彼氏?同伴?かっこいいね〜!
 ってかミキちゃん最近店で見ないよね〜!!
 また行くからヌイてよね!!ミキちゃんうまいから!!」
とまくし立てて逃げて、隠れて様子を見るのが好きなんだけど、
この前同じ事したら、女のほうが泣きそうになりながら、
「違うよ!人違いだよ!私そんな事してない!!」
とか喚くのね。普通は「?」って感じでスルーするヤツが多いんだけど、
この女ものすごいリアクションとるのよ。
ぎゃーぎゃー喚いて、違う!本当に違う!の連発。
マジで風俗女か前歴があるとしか思えないほどの焦りっぷり。
じゃ、彼氏のほうが、「もういいって」とか言って涼しい顔。
なーんだ、おもんねぇと思った瞬間。女殴った。
街中で。グーで。思いっきり振りかぶって、顔を。
女は鼻血ダラダラ流して、泣きながら男の後を追う。
「本当にじでないよ!ね”ぇ!!ゆうぢゃんだけだよぉ!!」
とか叫びながら。

もう一個のストレス発散方法は、ありえない議論をさもそうであるかのように熱弁し
有識者のみしか対応できないようにして「中途半端な知識をもったやつら」を排除しようと言う試み
どこまでわかっているのかを探る
0850デフォルトの名無しさん2006/01/09(月) 13:29:12
>>846
0851デフォルトの名無しさん2006/01/09(月) 13:30:14
日本語を英語に変換するにはどのように書けばいいんですかね?
0852デフォルトの名無しさん2006/01/09(月) 13:32:53
>>851
つ 和英辞書
0853デフォルトの名無しさん2006/01/09(月) 13:33:32
>>851
ドラゴンブック読んでコンパイラの仕組みを学んで
あなたがこれから中学で学習する英語の知識をそこに
当てはめればいいよ
0854デフォルトの名無しさん2006/01/09(月) 13:34:04
ひらがなをローマ時表記に変えるにはどのようにかけばいいんですかね?
0855デフォルトの名無しさん2006/01/09(月) 13:50:31
javaでmp3を扱うためにJavaZOOMのライブラリを使ってるんですが、
iTunesとかのaacを扱うのにいいライブラリってないでしょうか?
MEPG関係のライブラリでは扱えないですよね?
0856デフォルトの名無しさん2006/01/09(月) 14:03:22
>>855
ffのJava版
0857デフォルトの名無しさん2006/01/09(月) 14:20:03
>>838
www
お隣の不思議の国の黄教授が思い浮かんだ。
0858デフォルトの名無しさん2006/01/09(月) 14:28:27
>>854
自前
08598552006/01/09(月) 15:23:08
>856
ありがとう。
いまからいじってくるよノシ
0860デフォルトの名無しさん2006/01/09(月) 15:43:39
(数字2つ:数字2つ)に一致する正規表現を作ろうとして

Pattern.compile("([^(]\d{2}:\d{2})",Pattern.CASE_....);
とやるとエスケープ文字が不正ですとかでるんですが
\dで1〜9の整数値になるんですよね?
0861デフォルトの名無しさん2006/01/09(月) 15:53:17
通常の正規表現だと
\(\d{2}:\d{2}\)
でよいとは思うが、Javaの場合
\\(\\d{2}:\\d{2}\\)
となるかな
0862デフォルトの名無しさん2006/01/09(月) 16:14:47
>861
\\ですか、レスありがとうございます
0863デフォルトの名無しさん2006/01/09(月) 16:43:53
続きはないのか?
ほとぼりが冷めたころ、また

>だからさ、毎回そうなるとは限らないということを何度いったら・・・

でループするのか?
0864デフォルトの名無しさん2006/01/09(月) 17:26:00

OS WindowsXP
java j2sdk1.4.2
Tomcat Tomcat5.0.28

Tomcatをインストールしました。
startup.batを起動すると、
「'-Djava.endorsed.dirs=' が見つかりません。名前を正しく入力したかどうかを確認してから、やり直してください。」
というエラーが出ます。
yahooで検索したところ、似たような質問があったのですが、解決出来ませんでした。
わかる方いますか?

http://search.yahoo.co.jp/search?p=Tomcat+Djava.endorsed.dirs+%E3%81%8C%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93&ei=UTF-8&pstart=1&dups=1
0865デフォルトの名無しさん2006/01/09(月) 17:30:26
String問題引っ張ってるのは「さあおまいら問題だ!」の人かな。
0866デフォルトの名無しさん2006/01/09(月) 18:28:34
済みません。教えてください。
appletの中でFilewhiterを動かそうとすると
Exception in thread "main" java.security.AccessControlException: access denied (
java.io.FilePermission c:\temp\hoge.txt write)
というエラーが発生するのですが、どうすれば動くようになるのでしょうか?
0867デフォルトの名無しさん2006/01/09(月) 18:33:50
>>866
あきらめて設計を見直しな
アプレットを使うのはネットワーク上の不特定多数ということで
自分の環境で動くようにしたとしても意味ないから
0868デフォルトの名無しさん2006/01/09(月) 18:34:11
アプレットの制限って知ってるよな?
知ってる上で使うのなら
Policyファイルでググれ
0869デフォルトの名無しさん2006/01/09(月) 18:34:41
>>866
署名する
0870デフォルトの名無しさん2006/01/09(月) 21:08:27
インターフェースを使うメリットのガよくわかりません
たしかに実装することによってそのメソッドを確実に使わなければならないっていう保証として
プログラミング時に便利なのかもしれませんが
そんなの仕様書にでも必ずそのメソッドを入れろって書いておけばすむような話の気がしますが
0871デフォルトの名無しさん2006/01/09(月) 21:12:05
>>870
あなたが利点が分かってくるのは大分先っぽい
いまはそんなもんだとおもっておいたほうがよさげ
0872デフォルトの名無しさん2006/01/09(月) 21:17:52
>>870
インターフェースは、オブジェクト指向厨のオナニーなので
あまり深く考える必要はないんだよ。
0873デフォルトの名無しさん2006/01/09(月) 21:28:50
>>870
インタフェースのメリット一つとして、
実装を差し替えられることを挙げておこう。
たとえば、以下のコードは便利だとは思わないか?

interface Executale { public void execute(); }

があったとして、

Executable exec = (Executable)Class.forName("HogeExec").newInstance();
exec.execute();

この"HogeExec"という文字列を外部ファイル化しておけば、
コードを再コンパイルせずに、実装を切り替えることができる。
ファクトリーやランチャー、デバッグモジュールなど
アイデア次第で使い道が広がるだろう?
0874デフォルトの名無しさん2006/01/09(月) 21:32:08
>>873
?
0875デフォルトの名無しさん2006/01/09(月) 21:36:06
>>870
インターフェースって何に使うかっていうとポリモーフィズム実現のために使うんだ
オブジェクト指向の要のうちの一つといってもいい

ポリモーフィズムってのは、同一のメッセージでもレシーバーによって振る舞いを
変えられるってことね

Smalltalkの様に型という概念がない場合は、すべてのオブジェクトに対して
任意のメッセージを送信できる。オブジェクトにメッセージに答えられるメソッドが
なければ実行時エラーになるけど

それに対して、Javaは型がある言語
0876デフォルトの名無しさん2006/01/09(月) 21:37:02
途中で送信してしまった

型がある言語では継承以外にポリモーフィズムを実現するための
手段だってことだ
0877デフォルトの名無しさん2006/01/09(月) 21:37:39
>>874
わるいわるい。
自明だったので、ちょっと説明が足りなかった。

public class HogeExec implements Executable {
public void execute() {
....
}
...
}
という実装があるってことね。
例えばこれを以下のクラスに変えることもできるってことだな。
public class Hoge2Exec implements Executable {
public void execute() {
....
}
...
}
0878デフォルトの名無しさん2006/01/09(月) 21:44:16
>>877
それって
Executableインターフェースがあってそこから
それぞれHogeExecクラス、HogeExec2クラスを見に行くって事?
0879デフォルトの名無しさん2006/01/09(月) 21:48:01
Objective-CもSmalltalkの特徴を持った言語で、
本来はメッセージパッシングは実行時に動的に処理されるが、
protocol(Javaでいうところのinterface)を導入している。
これはNeXTが確か分散オブジェクト機能の発展とともに
その必要性を考慮したからだと思った。
見知らぬ外部から送り込まれたオブジェクトが、
interfaceに合致しているかどうかということは
実行において重要だからね。
0880デフォルトの名無しさん2006/01/09(月) 21:50:19
な〇あ〇〇はJava〇オブジェクト指向〇〇が〇き〇〇のかP.128だな。
0881デフォルトの名無しさん2006/01/09(月) 21:53:15
>>878
newInstance()で作られたオブジェクトを
Executableでキャストして利用するってこと。
実装がどうなっていてもExecutableに適合していれば
使えるってこと。
EJBとかも基本はこんなような仕組みだよ。
0882デフォルトの名無しさん2006/01/09(月) 22:08:30
ちょっと蛇足だけど書いておくと、
この手法は継承を使っても同じことができることに気がつくだろう。
共通の親クラスを継承していれば、親クラスにキャストできるからね。

ただ、以下の点は考慮に入れておいた方がいい。
1.継承は高価。
2.親クラスの仕様に依存する。
これらの点を考慮に入れても、
インタフェースでなく親クラスを使うことに価値がある場合もある。
継承なら、基本ロジックを親側に埋め込めるからね。
適所適所で適切に選択すればいい。
0883デフォルトの名無しさん2006/01/09(月) 22:21:46
>>870
>>875
ポリモーフィズムは抽象クラスでも実現できるよ。
実装の変更がさも便利みたいに言ってるが、実作業じゃメソッドの実装よりも
その定義自体を変更したくなるケースが多いんだよ。
つまり、どう作るかよりも(how)、何の作るか(what)の方が難しく重要なワケ。
しかし、インターフェースは作ったが最後、その後に動的にメソッド定義を
拡張する事が出来ないので全く無用の長物に成り下がってるんだよ。
例えば、デザパタの一つ、ブリッジ・パターンで実装(インプレメンター)と
動作定義(アブストラクター)をそれぞれ別個に拡張できて便利とか言ってるけど、
ここで一番重要なのは、基本となるアブストラクター(Javaでいうインターフェース)の
メソッド定義だ。その初めのメソッド定義に不都合があると後で修正できない為に
全然使えなくなってしまう。しかし、これを上手く定義するのは予知能力者でないと事実上ムリ。
結論からするとインターフェースというのは、実作業で起こる最もポピュラーな
問題をはぐらかしてるだけの無用の長物であり、オブジェクト指向厨の自己満足オナニーに
過ぎないと思う。
0884デフォルトの名無しさん2006/01/09(月) 22:25:53
>>883が設計能力の無い上司に使われていた可哀想なPGだとうことは分った
0885デフォルトの名無しさん2006/01/09(月) 22:28:30
>>883
あなたの場合、抽象クラスもインターフェースも
問題をはぐらかしているだけの無用の長物だと思う
そして、「インターフェースは自己満足オナニー」と
評価してオナニーしているにすぎない
0886デフォルトの名無しさん2006/01/09(月) 22:31:55
>>885
アナタの方がよっぽどオナニストだろう
0887デフォルトの名無しさん2006/01/09(月) 22:35:02
>>886
どのへんが?
0888デフォルトの名無しさん2006/01/09(月) 22:44:44
>>883
抽象クラスは動的にメソッド定義を拡張できるのか?
0889デフォルトの名無しさん2006/01/09(月) 22:52:03
>>883
インターフェイスってのは、ソフトウェア工学的に仕様定義が開発の初期段階として重要な位置を占めることがわかってきたから、それを言語レベルで実現するためのものでしょ。
「仕様定義なんて難しいからインターフェイスなんていらないやーい!」とか言っているように聞こえる。
0890デフォルトの名無しさん2006/01/09(月) 22:59:21
>>883
そこでDependency Injection(DI)の話を展開できれば
聞いてやったのに、、、
0891デフォルトの名無しさん2006/01/09(月) 23:04:10
アスペクト指向も設計厨のオナニーにすぎない。
0892デフォルトの名無しさん2006/01/09(月) 23:06:56
アスペクト指向に関してはなくてもいいがな
0893デフォルトの名無しさん2006/01/09(月) 23:08:30
スレッドについておしえてください。
参照おこなうときは、ワーキングメモリから、メインメモリにコピーされて参照され、
代入をおこなうときは、ワーキングメモリから、メインメモリにコピーされるとききました。
volatileとか、synchronizedでまもらないと、いつ、参照と、代入が、
メインメモリに対しておこなわれるかわからないともききました。
ということなのですが、以下のようなプログラムの場合、mapにputした値が消えたり、
putした値がみえなかったりするもんなのでしょうか。
import java.util.*;
class Runner implements Runnable {
  private String key;private Map map;
  public Runner(String key, Map map) {
    this.key = key;this.map = map;
  }
  public void run() {
    for (int i = 0; i < 1000; i++) {
      String buf = key + i;
      map.put(buf, buf);
    }
  }
  public static void main(String[] args) {
    Map map = new HashMap();
    for (int i = 0; i < 1000; i++) {
      new Thread(new Runner(String.valueOf(i), map)).start();
    }
  }
}
それ以前に、複数スレッドからスレッドセーフでないHashMapを守らずに利用するのが間違いとはおもいますが。
0894デフォルトの名無しさん2006/01/09(月) 23:08:46
おれもアスペクト指向はどうでもいい
あれって単体じゃどうしようもないものな
08958932006/01/09(月) 23:10:43
>参照おこなうときは、ワーキングメモリから、メインメモリにコピーされて参照され、
参照おこなうときは、メインメモリから、ワーキングメモリにコピーされて参照され、

の間違いでした。
0896デフォルトの名無しさん2006/01/09(月) 23:24:26
>>893
良くは知らんが、そういう場合は例外があがると思うけどね。
まずいと分かってるなら、改善すれば良いと思う。
0897デフォルトの名無しさん2006/01/10(火) 00:00:59
Javaでパケットをキャプチャするソフトとか作りたいんですけど
どういった勉強したらいいでしょうか?
本とか探したんですけどなかなか見つからなくて。
良い本があったら紹介してください。
お願いします。
0898デフォルトの名無しさん2006/01/10(火) 00:09:48
>>897
実装の目的は何?
プロトコル解析?

Etherealじゃだめなの?
0899デフォルトの名無しさん2006/01/10(火) 00:10:23
>>897
この質問頻繁に見るけどなんだろ
0900デフォルトの名無しさん2006/01/10(火) 00:16:53
散々考えてどうにもならなかったので、助けていただきたく初カキコします。

method.invokeを利用して取得したObjectの中にString[]が入っているのですが
これをString[]型の値として扱う方法を探しています。

現状ではmethod.getReturnType().isArray()を使用して配列を確認した後
中の配列数分のループを処理しようとしています。

どなたかお分かりになる方いらっしゃいませんか?
09018972006/01/10(火) 00:18:14
>>898
勉強のためです。javaと同時に勉強できて効率良いかなみたいな。

>>899
そうなんですか。初めてこのスレに来たもので。
0902デフォルトの名無しさん2006/01/10(火) 00:26:07
>>901
少なくとも、本を見ながらでないと学習できない人にとっては効率悪い

>>900
String配列でキャストすればいいじゃん
0903デフォルトの名無しさん2006/01/10(火) 00:27:39
>>893
> 以下のようなプログラムの場合、mapにputした値が消えたり、
壊れやすさは HashMap の実装によって変わると思うけど、
それだと put しかしてないので基本的には壊れ難いと思うよ。
仮に put した値が消えても、別のスレッドでも重複した値を put してるから
消えてるのか調べるのも大変だし。

壊れるテストをしたいなら 片方のスレッドでは同じキーで put と get を繰り返し、
もう片方のスレッドでは clear だけを繰り返せば もっと簡単に壊せるよ。
0904デフォルトの名無しさん2006/01/10(火) 00:29:43
>>902
レスありがとうございます。
最初はそう思ったのですが実際にやってみると
InvalidTypeExceptionが発生してしまったのです。

String[] strs = ( String[] ) object;
※ object( String[2] )
0905デフォルトの名無しさん2006/01/10(火) 00:30:12
限りなくしょぼい質問ですが、どなたかお願いします。

DOS窓でコンパイルして作ったクラスファイルを実行すると
「クラスファイルが見つからない」
と出ます。
以前に作ったクラスファイルさえも実行できません。もちろん以前と同じ手順です。
以前と変わった事といえば、
年が変わった
iTunesを入れた

だけです。
独学なので泣きそうな事態です。
よろしくお願いします。
0906デフォルトの名無しさん2006/01/10(火) 00:32:42
>>905
>iTunesを入れた
これをいれるとQuickTimeもいっしょにインストールされる。
すると、QuickTime for Javaもインストールされて、環境変数CLASSPATHが
書き換えられる。実際にはQTJava.jarはlib/ext/にインストールされるから
全く必要のない書き換えなんだけどなぜかAppleの糞インストーラはこれを行う。
というわけでCLASSPATHを見直すこと。
0907デフォルトの名無しさん2006/01/10(火) 00:33:17
>>904
あれ、だめなんだっけ?
元々のメソッドのシグニチャって何?
public Object foo();
とかだったりする?
0908デフォルトの名無しさん2006/01/10(火) 00:33:59
見直すつーか、もうCLASSPATH削除しちゃっていい。
そうすればデフォルトでカレントディレクトリからクラスファイルを
検索してくれるから。
レス数が900を超えています。1000を超えると表示できなくなるよ。