【初心者】Java質問・相談スレッド83【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/03/14(火) 13:19:59質問をする前に、貴方が見なければならないサイトについての情報は、
下の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質問・相談スレッド82【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1140878286/
/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
次スレは>>980あたりで。
0232デフォルトの名無しさん
2006/03/19(日) 23:39:00ゴリゴリ実装するしかなさげ?
処理側:
try {
while(! finished) {
synchronized(this) {
while(! stopRequired) {
wait();
}
}
finished = doSomthingALittle();
}
} catch(InterruptedException e) {
// 中断処理
}
制御側:
void synchronized 一時中断() { stopRequired = true; notifyAll(); }
void synchornized 一時中断を再開() { stopRequired = false; notifyAll(); }
0233デフォルトの名無しさん
2006/03/19(日) 23:39:36String str = new String(StringBuilder)
のToString()を除いたほうではどう?
ソースを見る限りでは String と StringBuilder 間で char配列が共有されるみたいだけど…
0234227
2006/03/19(日) 23:39:47フラグ・・・なるほど、
でもできたら単純にメソッドで一時停止みたいのがいかったのですが、
ちょっと調べてみます、ありがとうございます。
0235デフォルトの名無しさん
2006/03/19(日) 23:40:06>>206 へのレスが伸びないところを見ても、
ここの住人はスレッド理解していない人が多い。
>>227の場合sleepじゃなくて、waitしてnotifyかな。
0236デフォルトの名無しさん
2006/03/19(日) 23:40:58じゃあスレッドを分かりやすく解説してくれる本とかサイトとかないですか?
ググっても詳しい解説とか無しにいきなり長文サンプルとか載ってけるだけのとこしかない…
0237デフォルトの名無しさん
2006/03/19(日) 23:42:410239デフォルトの名無しさん
2006/03/19(日) 23:43:27java.lang.Object
0240デフォルトの名無しさん
2006/03/19(日) 23:43:30Object
0241227
2006/03/19(日) 23:43:58ありました。wait
0242デフォルトの名無しさん
2006/03/19(日) 23:44:21されない、されない。
StringBuilder#toString()の戻り値を代入してるだけ。
中身はString(char value[], int offset, int count)だよ。
0243デフォルトの名無しさん
2006/03/19(日) 23:47:44Java のマルチスレッド関係では 100% リファーされるダグリーの本が古典っぽいが、
英文むず。日本語訳が絶版で、でも友達が持ってたの貸してもらったが、ひど。
0244215
2006/03/19(日) 23:48:39幸いにもMatcherを作る場合の引数はCharSequenceですしね。
これにてクローズ、ありがとう。
0245233
2006/03/19(日) 23:51:14StringBufferクラスのToString()は return new String(this);を行っていて、
StringクラスのStringBufferを引数にとるコンストラクタは、
public String (StringBuffer buffer) {
synchronized(buffer) {
buffer.setShared();
this.value = buffer.getValue();
this.offset = 0;
this.count = buffer.length();
}
}
となってるんだけどやっぱり間違ってる?
ソースはj2sdk1.4.2_08のを見てます。
0246227
2006/03/19(日) 23:55:43Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
at yoshimune.MouseListenerAppMain.mousePressed(AppMain.java:350)
at java.awt.Component.processMouseEvent(Component.java:5485)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
スレッドが止まってくれません なぜでしょうか・・・モニターの所有権??
フラグでやってみます
0247デフォルトの名無しさん
2006/03/19(日) 23:57:135.0だとこうだな
public synchronized String toString() {
return new String(value, 0, count);
}
0249デフォルトの名無しさん
2006/03/20(月) 00:03:36これじゃ、だれもエスパーできんだろう。
と、あさはかな凡人は思うのであった。
0250デフォルトの名無しさん
2006/03/20(月) 00:07:48とりあえず、エラーメッセージをよくよめ。
そして、こう叫ぶのだ。
ぬ る ぽ !
0251デフォルトの名無しさん
2006/03/20(月) 00:11:420252227
2006/03/20(月) 00:14:44フラグでもだめでした原因をまとめてみます。
やりたいこと、アプレットのクラスから三つの独立したスレッド実行させます。それぞれのスレッドにはsleep文が入っております。
イベントを発生するとひとつのスレッドがとまる、そしてイベントでまた動き出す。
それを三つ作りたいだけなんです。
sleep時間をイベントで変化させてとめてみたんですけど、入るとそのsleep終わるまで待ってなきゃいけない。
フラグでどうすればいいのですか?
0253デフォルトの名無しさん
2006/03/20(月) 00:17:01だからぬるぽなんだって
0254227
2006/03/20(月) 00:19:300255デフォルトの名無しさん
2006/03/20(月) 00:20:21俺たちは辞書じゃないということをまず念頭に入れて考え直して欲しい。
0256デフォルトの名無しさん
2006/03/20(月) 00:43:47マルチスレッド・プログラミングの基本
http://www.javaworld.jp/technology_and_programming/-/10943.html
>>237
その本ダメ、著者がスレッドのことをあまり理解していないのに本を書いてる。
0257デフォルトの名無しさん
2006/03/20(月) 01:23:19IBM の developerWorks は、結構良い記事が多いっぽく、参考になる。
Javaの理論と実戦: Javaメモリ・モデルを修正する 第1・2回
http://www-06.ibm.com/jp/developerworks/java/040416/j_j-jtp02244.html
http://www-06.ibm.com/jp/developerworks/java/040514/j_j-jtp03304.html
Javaの理論と実践: 安全な構築のテクニック
http://www-06.ibm.com/jp/developerworks/java/020823/j_j-jtp0618.html
前者は、上級レベルになってるけど、これが上級なら
マルチスレッドは上級者じゃないと弄っちゃだめってこと。ていうか、弄るな!orz
0258デフォルトの名無しさん
2006/03/20(月) 01:25:33最後の部分、なんかあったのか?w
0259デフォルトの名無しさん
2006/03/20(月) 01:30:03あれダメなの?
ってか2chで聞くと必ず否定的な答えしか返ってこないんだよな…
0260デフォルトの名無しさん
2006/03/20(月) 01:35:14俺もその本参考になったと思うけど・・・・
0261デフォルトの名無しさん
2006/03/20(月) 10:13:49Javaからとなるとどんなのが手軽?
USB?RS-232C?
0262デフォルトの名無しさん
2006/03/20(月) 10:22:470263デフォルトの名無しさん
2006/03/20(月) 10:26:51Javaとしては通信しやすいんだけど
TCP/IPに対応した機器作るのってめんどくさくない?
0264デフォルトの名無しさん
2006/03/20(月) 10:27:300265デフォルトの名無しさん
2006/03/20(月) 10:33:23おお、こんなものがあったのか。
サンクス
だが高いなorz
0266デフォルトの名無しさん
2006/03/20(月) 10:34:12めんどくさい。↓使うとか。
http://www.shoshin.co.jp/c/lantro/xport.html
JNI で作る気があるならどれもたいして変わらない。
0267デフォルトの名無しさん
2006/03/20(月) 10:40:07そうか・・・
何とかやってみる。
0268デフォルトの名無しさん
2006/03/20(月) 10:59:39いきなり、躓いてしまいました。コンパイルをすると
「エラー:File.javaを読み込めません」となってしまいます。
ファイルは存在しますし、パスの設定もしております。
どんな、原因が考えられるでしょうか?
0269デフォルトの名無しさん
2006/03/20(月) 11:04:34>>268
ファイルが存在しない。
0270デフォルトの名無しさん
2006/03/20(月) 11:08:17つhttp://www.google.co.jp/search?hl=ja&q=%E3%82%A8%E3%83%A9%E3%83%BC%E3%80%80%E3%82%92%E8%AA%AD%E3%81%BF%E8%BE%BC%E3%82%81%E3%81%BE%E3%81%9B%E3%82%93%E3%80%80JAVA&lr=
0271デフォルトの名無しさん
2006/03/20(月) 11:09:47http://javafaq.jp/S002.html#S002-02
解決したらレポして、参考にする。
0272268
2006/03/20(月) 11:24:27解決しました。拡張子が.java.javaになっていました。
お騒がせして申し訳ありません。
0273デフォルトの名無しさん
2006/03/20(月) 12:48:36ニュータイプだな。
0274268=272
2006/03/20(月) 13:14:01Exception in thread "main" java.lang.NoClassDeFoundEroor: file
>>271さんの指摘してくれたサイトには、
>実行時エラーがでていることから、javaインタープリターは動いています。
>HelloWorld という名前のクラスがみつからないというエラーです。
>
>プロンプト> java -classpath . File
>
>でどうでしょう? これでうまくいくならば CLASSPATH環境変数の
>設定に . (ドット、ピリオド)がないのが原因です。
>CLASSPATH環境変数は、間違い易いことが多い機能ですので完全に理解するまでは使わず、
>-classpath 実行時オプションでクラスパス(java VM がクラスファイルを探すパス)を
>教えてあげることをお勧めします。
とありまして上記のようにすれば実行できました。
CLASSPATH環境変数の設定に . (ドット、ピリオド)がないとは、どういう意味ですか?
また、CLASSPATH環境変数はどうやって設定するのでしょうか?
初歩的な質問ばかりですみません。
0275デフォルトの名無しさん
2006/03/20(月) 13:26:48charsetを含まないものを返すの?
ためしに、www.yahoo.co.jpにつないでgetContentType()してみて。
同じインスタンスにgetHeaderField("Content-Type")したときと違う値を返す。
0276デフォルトの名無しさん
2006/03/20(月) 13:57:58. は、カレントディレクトリ。
この場合は、実行したときのディレクトリ
CLASSPATH の設定はシェルによる。OSと環境がわからないと。
0277268=272=274
2006/03/20(月) 14:08:14レスありがとうございます。
動作環境は、Windows XP HOME SP2、Javaは、JDK5.0です。
0278デフォルトの名無しさん
2006/03/20(月) 14:54:14SET コマンドで、
SET CLASSPATH=.:%CLASSPATH%
とかやってみるとか。
恒久的には、マイコンピューターのプロパティの詳細の環境変数のとこに。
ここにいれるのは、SET CLASSPATH で出てきた文字全部であって、%CLASSPATH%ではない
0279デフォルトの名無しさん
2006/03/20(月) 14:55:050280デフォルトの名無しさん
2006/03/20(月) 15:04:31それ以外は自作のサーブレットへ渡したいんだけど、url-pattern はどう書けばええんじゃ?
url-pattern のワイルドカードは正規表現みたいに 「/hoge/* 以外」 って記述できる?
0281デフォルトの名無しさん
2006/03/20(月) 15:24:11コンテナ依存だけど、
Tomcatなら default と jsp というservlet-nameを持つサーブレットへのマッピングを書くことで、
「/hoge/*はデフォルト」という指定ができそうな予感。
0282デフォルトの名無しさん
2006/03/20(月) 15:25:55の三つ目の引数の意味が、ドキュメントを見てもぐぐってみても試してみても
さっぱりわかりません。知ってる方がいたら教えてください。
0283デフォルトの名無しさん
2006/03/20(月) 15:40:50そうか、互換性のある記述はできなさそうね。default サーブレットの簡易版くらいなら自作サーブレットに
組み込めるんだけど、JSP プロセッサはさすがに無理だしなぁ。
ふと思ったんだが、/hoge 以下のリクエストは FilterChain#doFilter()、それ以外は自作サーブレットと
同じ処理をする Filter クラス作って /* にマップすれば良いのかな? お、何か出来そうなふいんき
0284デフォルトの名無しさん
2006/03/20(月) 15:43:31java.awt.font.LineBreakMeasurer のサンプル見たけど、英文の改行処理用の引数だと思われ。
英文は基本的に単語の途中では改行できないって奴ね。ハイフンつけられるなら話は別だけど。
行頭だと false、行頭以外では true に設定してるし。
0285277
2006/03/20(月) 16:06:38レスありがとうございます。試してみます。
0286デフォルトの名無しさん
2006/03/20(月) 16:24:42なるほど。そういわれればそんなふうに意味が取れますね。ありがとう。
ドキュメント分かりにくすぎ
0287デフォルトの名無しさん
2006/03/20(月) 17:24:08//色々
}
なんて書くと思うんですけど。
private なクラスってありえるんでしょうか?
0288デフォルトの名無しさん
2006/03/20(月) 17:27:23メンバ型なら private なクラスもあるよ。
トップレベルには public か無指定(パッケージプライベート)にしかできないけど。
0289デフォルトの名無しさん
2006/03/20(月) 18:16:560290デフォルトの名無しさん
2006/03/20(月) 18:33:55Socket で通信してるとき
一方が close() したのを、もう一方はどうやって調べるんですか?
isConnected() を見てもずっと true のまんまですし
0291デフォルトの名無しさん
2006/03/20(月) 18:36:27プロトコルはちゃんと設計しないと簡単に破綻する。
0292290
2006/03/20(月) 18:48:44ありがとうございます。
read() で調べようとすると、
まだ接続されていた場合はブロックされませんか?
0293デフォルトの名無しさん
2006/03/20(月) 18:55:19available()を使えと思ったが、接続されてないとブロックって何だ?
サーバならServerSocketでacceptするわけだし、クライアントだとconnectするんだから接続しないとStreamが手に入らないと思うぞ
0294290
2006/03/20(月) 18:59:24いや、逆に接続がまだ切れてない場合にブロックされませんかね?
read() のとき
0295デフォルトの名無しさん
2006/03/20(月) 19:04:59ブロックされる。だから 「接続されているかどうか確かめる」 なんてのはそもそも無理。
どうしてもと言うなら Socket に setSoTimeout(5000) とか設定して read() しる。
SocketTimeoutException が発生したらソケットは生きてる。負の値が返ったら閉じてる。
ハンドシェイクの遅延で正しい結果にならないこともあるし、そもそも閉じてないと判定
されても次の瞬間に閉じられることだってある。だから、そもそもそんな判定なんて
しなくても良いようにプロトコルの設計が大切。
0296290
2006/03/20(月) 19:16:24なるほど、そんなもんなんですね。
勉強になりました
0297デフォルトの名無しさん
2006/03/20(月) 21:56:400298デフォルトの名無しさん
2006/03/21(火) 00:48:38でもinterfaceとしてはcharAt乱用だろうし、遅そうだな・・・
0299デフォルトの名無しさん
2006/03/21(火) 02:29:39http://live22x.2ch.net/test/read.cgi/news/1142873437/
0300デフォルトの名無しさん
2006/03/21(火) 04:37:26HTMLファイルはコンボボックスと送信ボタンがあります。送信内容はコンボボックスの値で、送信は送信ボタンが押されたときの処理をJAVA上で実現したいんですが・・
どうか、よろしくお願いします。
0301デフォルトの名無しさん
2006/03/21(火) 08:11:55これらを勉強しなさい
0302デフォルトの名無しさん
2006/03/21(火) 08:17:30⇒要求をもう少し掘り下げて整理したほうがいい
5W1Hって知ってるでしょ?
0303デフォルトの名無しさん
2006/03/21(火) 08:27:06ま、ダイエットしろってことで。
0304デフォルトの名無しさん
2006/03/21(火) 11:45:39入出力ストリームまでちゃんとクローズしてくれる?
0305デフォルトの名無しさん
2006/03/21(火) 11:59:17クライアントのJREバージョンを見分けて、
それ毎に別々に読み込むXMLライブラリを変えることは可能でしょうか。
たとえば、↓みたいに書くとか、、
String javaVersion = System.getProperty("java.vm.version");
if(javaVersion.startsWith("1.0") || javaVersion.startsWith("1.1")
|| javaVersion.startsWith("1.2") || javaVersion.startsWith("1.3")){
//apacheの外付けjarの処理を記入
}else if(javaVersion.startsWith("1.4")){
//crimsonを使用した処理を記入
}else{
//組み込みxercesなどを使用した処理を記入
}
0306デフォルトの名無しさん
2006/03/21(火) 12:09:47XercesJいっしょにくばっちゃえばいいじゃん。あと、
java.vm.versionを見るのは駄目。たとえばうちの処理系だとこうなる。
java.vm.info=J2RE 1.4.2 IBM J9 2.2 Windows XP x86-32 j9n142-20040917 (JIT enabled)
J9VM - 20040916_0908_lHdSMR
JIT - r7_level20040915_1801
java.vm.name=IBM J9SE VM
java.vm.specification.name=Java Virtual Machine Specification
java.vm.specification.vendor=Sun Microsystems Inc.
java.vm.specification.version=1.0
java.vm.vendor=IBM Corporation
java.vm.version=2.2
APIリファレンスにちゃんと説明があるから読むように。
0307デフォルトの名無しさん
2006/03/21(火) 12:15:17使って所望のバージョンのJREがクライアント側に自動インストールされるようにすること。
そのためにHtmlConverter.exeがJDKに同梱されている。
0308デフォルトの名無しさん
2006/03/21(火) 12:49:27今まで"static"って複数ユーザで
使いまわすモノだと思ってた...
こーゆー時は"static"使うと便利だよとか、
ここは使うしかないっしょ!!ってのある?
今はsingletonパターン使うときくらいしか使ってない
こーゆーの
private static Class singleton;
if (singleton == null) {
singleton = new Class();
return singleton;
}
return singleton;
0309デフォルトの名無しさん
2006/03/21(火) 12:54:330310デフォルトの名無しさん
2006/03/21(火) 13:25:04で
return singleton;
とするのが普通だよな
0311デフォルトの名無しさん
2006/03/21(火) 17:47:39なります。
そのアクションにmainを追加して、Javaアプリケーションとして実行すると
うまくいけます。
エラー内容はjava.lang.NoClassDefFoundErrorです。
どういった原因が考えられますか?
0312デフォルトの名無しさん
2006/03/21(火) 17:53:230313デフォルトの名無しさん
2006/03/21(火) 17:54:47>>1を読んでないから。
0314デフォルトの名無しさん
2006/03/21(火) 18:00:370315デフォルトの名無しさん
2006/03/21(火) 18:13:39SELECT FOO FROM BAR WHERE NAME LIKE 'a%'
PreparedStatement のプレースホルダってどう書けば良いの?
stmt = con.prepareStatement("SELECT FOO FROM BAR WHERE NAME LIKE [ここどう書くの?]");
stmt.setString(1, "a");
0316313
2006/03/21(火) 18:28:11Q. PreparedStatement の文字列値はどのようにバインドするのですか。
ttp://edocs.beasys.co.jp/e-docs/wls/docs81/faq/oraclejdriver.html#239847
0317デフォルトの名無しさん
2006/03/21(火) 18:30:30お返事ありがとうございます。
その回避方法はどうすればいいのですか?
eclipseで外部JARの追加でそのJarファイルを追加しているのですが。
0318デフォルトの名無しさん
2006/03/21(火) 18:34:25あれ? PreparedStatement のプレースホルダーって埋め込み値の % や _ をエスケープするんじゃなかったの?
フリー入力値を LIKE で検索するとき注意が必要ってこと?
0319デフォルトの名無しさん
2006/03/21(火) 18:46:25試してみるとか。
あとは、ソース見るとか。
0320デフォルトの名無しさん
2006/03/21(火) 22:12:46Vectorに繋がっているものを移動させています。
Vectorはどんなクラスが格納されているかわかりません。
警告が出てしまいます。どうすればいいでしょう?
↓
「警告: [unchecked] raw 型 java.util.Vector のメンバとしての
insertElementAt(E,int) への無検査呼び出しです。」
‥ ‥ ‥
public void moveElement( Vector VecObje ,int index ,int newIndex )
throws ‥省略 {
Object ObjeTemp1 = VecObje.get(index);
‥省略
VecObje.remove(index);
VecObje.insertElementAt( ObjeTemp1 , newIndex );←ここで警告
}
0321デフォルトの名無しさん
2006/03/21(火) 22:18:38Generics 使ってるなら
public <T> void moveElement( Vector<T> VecObje ,int index ,int newIndex )
とか?
0322デフォルトの名無しさん
2006/03/21(火) 22:20:170323デフォルトの名無しさん
2006/03/21(火) 22:41:08@SupressWarnings("unchecked")
public void moveElement( Vector VecObje ,int index ,int newIndex )
はどう?だめかな。
0324デフォルトの名無しさん
2006/03/21(火) 22:56:060325デフォルトの名無しさん
2006/03/21(火) 23:25:12new String(str.getBytes("ISO8859_1"), "Shift_JIS");
で、文字コードの変換をしてやらないと駄目なんですか?
何かもっと効率のいい方法はありませんか?
環境は、struts1.2、Tomcat5.5です。
0326デフォルトの名無しさん
2006/03/21(火) 23:32:27みなさんどうもありがとう。(320)( ^∇^)
321さんの方法で警告静めました。
Vectorの後の<T>はなんとなくわかりますが、public <T> void の<T>
はどうしてこうなるのかさっぱり理解していません。
>>323
@SupressWarnings("unchecked")
これはすご過ぎて意味が全然わかりません。
0327デフォルトの名無しさん
2006/03/21(火) 23:34:37あのねーちゃんだな
0328デフォルトの名無しさん
2006/03/21(火) 23:41:27ArrayListとHashMapしか使ったことがありません。
他のものを使うことってありますか?
0329デフォルトの名無しさん
2006/03/21(火) 23:42:43型は何でもいいっていってるんだから T じゃなくて ? では。
0330デフォルトの名無しさん
2006/03/22(水) 00:00:02あります
0331デフォルトの名無しさん
2006/03/22(水) 00:03:50request.setCharacterEncoding("MS932");
■ このスレッドは過去ログ倉庫に格納されています