- 1 名前:デフォルトの名無しさん [2007/06/27(水) 07:23:27 ]
- プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。 Web製作板をご利用ください。pc10.2ch.net/hp/ 過去ログ、関連スレッド、よくある質問とその回答など、 質問をする前に、貴方が見なければならないサイトについての情報は、 下のwikiのページにまとめてあります。 www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、 wikiからのリンクをおたどりください。 よくある質問 ・「コマンドまたはファイル名が違います」 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 「Exception in thread "main" java.lang.NoClassDefFoundError: 」 www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。 ・「\12288 は不正な文字です。」 文字リテラル以外で全角スペースは使えません。半角スペースに。 ・その他の質問→「APIのjavadoc見ろ」 前スレッド 【初心者】Java質問・相談スレッド102【大歓迎】 pc11.2ch.net/test/read.cgi/tech/1180419689/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。 質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */ また、当スレで質問をするかたは、回答をもらえたときに、 wikiの更新をして頂ければ、忝なく存じます。 次スレは>>980あたりで。
- 29 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 17:56:54 ]
- >>28
> apptet以外にクライアント側でGUI表示できる そんなこと誰も書いてないと思うが。
- 30 名前:デフォルトの名無しさん [2007/06/27(水) 18:04:41 ]
- そういうことじゃないの?
- 31 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 18:18:26 ]
- というか、>>20 早く帰ってきて収拾してくれwww
- 32 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 18:32:38 ]
- ていうか誰が誰だよw
idない板はこれだからややこしい
- 33 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 19:26:06 ]
- servletがクライアントに渡すのは基本的にはHTMLや画像なんだから、ク
ライアントにAWTのウィンドウ等が表示されるわけないでしょ。どこで JVMが動いているか考えればあたりまえ。 servletでAWTのウィンドウを出したりすると、とうぜんservletが動いて いるサーバの画面にウィンドウが出ることになる。そんなことして意味 があることはまずないが、できないわけじゃない。(>>22) 画像処理などのためにservlet内でAWTを使うことがある。そういうとき のために headless モードというのがある。(>>27)
- 34 名前:デフォルトの名無しさん [2007/06/27(水) 19:32:52 ]
- 今までphp+mysqlでやってたものですが、
jdbc+postgreSQLに手を出してみました。 php+mysqlのときみたいにaddslashをして エスケープをしたいのですが、どうやったらいいかわかりません(涙) java.sqlの中にはそういうものはないみたいだし・・・
- 35 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 19:48:52 ]
- 涙を出す前にJDBCについて調べる気は無かったのだろうか?
- 36 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 19:53:47 ]
- なんでheadlessっていうの?
brainlessの印象を受けるからfacelessの方が良かった
- 37 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 21:10:26 ]
- >>28
GWT
- 38 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 22:55:55 ]
- >>34
PreparedStatementが勝手にやってくれる
- 39 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 23:32:07 ]
- LGPLが適用されているライブラリを利用する場合、
作成したプログラムの再配布の際にはソースコードの公開が必要でしょうか? 「動的なリンク、であれば利用元のプログラムはLGPLの呪縛から逃れられる」 というような解釈のようですが、動的なリンクとはJavaではどこまで該当するのでしょうか?
- 40 名前:デフォルトの名無しさん mailto:sage [2007/06/27(水) 23:38:12 ]
- ソースコードを使うかバイナリを使うかじゃない?
- 41 名前:デフォルトの名無しさん [2007/06/28(木) 00:11:12 ]
- 入力した値が文字(列)か数か判定したのですが、どのような条件で判定できますか?
- 42 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 01:23:29 ]
- 文字列.matches("\\d+")か文字列.matches("\\d*")
- 43 名前:デフォルトの名無しさん [2007/06/28(木) 03:26:37 ]
- 未だなにも調べてない状態なのですが
java3Dの中のvecmathパッケージについて このパッケージでできるベクトル計算の利点はどんなところにあるんでしょうか また、java3Dの直近の日本語Documentを探しているのですが見つからず、 できたらURLを教えていただけないでしょうか
- 44 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 06:40:37 ]
- >>42
「.」とか「-」とかは?
- 45 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:34:54 ]
- Javaでゲーム開発を考えているんですが、思考ルーチン関連での入門書で最適な本ってありませんか?
ゲーム理論系を探すと経済学関連のが多くて選択しにくいもので、実際のプログラム例などが載っている本がいいです。 言語はJavaが得意ですが、Cなども最低限の知識はあります。
- 46 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:39:51 ]
- >>45
ゲームという大きな括りではなく、どういう種類のゲームを作るかによって 学ぶものは変わってくると思うが。
- 47 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:44:00 ]
- >>46
確かにそうですね。 やりたい種類は、ターン制のストラテジーゲームです。 手札などに制限が多く、打てる手数は高々10〜20程度。 ただし、先読みの要素が多いという感じです。 ぐぐってみたりするとげミニマックス法とか色々でてくるのですが、本として1冊は欲しいもので
- 48 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 08:57:05 ]
- >>40
ありがとうございます 単純に実行部分のバイトコードを添付するだけでいいわけですか ↓の部分が適用されるってことですか? >もし著作物が『ライブラリ』とリ ンクされた実行形式ならば、著作物を完全かつ機械読み取り可能な >「『ラ イブラリ』を利用する著作物」のオブジェクトコードあるいはソースコー ド(どちらかでも可) と一緒にし、 >ユーザが『ライブラリ』を改変した後 に再リンクして、改変された『ライブラリ』を含む改変された実行形式を >作成できるようにする
- 49 名前:デフォルトの名無しさん [2007/06/28(木) 11:16:54 ]
- postgresqlに接続しようとしてるんだけど
org.postgresql.util.PSQLException: The connection attempt failed. Caused by: java.net.UnknownHostException: localhost こんなエラーがでて接続できないんだけど、 これってJDBCドライバ自体は認識できてるんかな? ずっと「JDBCドライバがないYO」って言われてたんで、そこが気になる。 誰か教えてくれー
- 50 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 11:53:45 ]
- >>49
いえす localhost が解らんって言われているけど、postgresqlならば jdbc:postgresql://localhost:5432/test のようにURL指定してないとか? それでもダメなら、localhost を 127.0.0.1 で試す。 後、WindowsのFireWallの可能性もあるかな?
- 51 名前:49 mailto:sage [2007/06/28(木) 13:37:37 ]
- >>50
レスありがとう。 なんとか動きました。 postgresqlにTCP接続する設定をやっていなかった。 // これがダメだったのかな? postgresql.confを編集して URL指定に「jdbc:postgresql://127.0.0.1:5432/hoge」で接続できました。 loclhostだと失敗したんで根本的な解決はしてない気もするけど、とりあえず動いたからおk!!!
- 52 名前:34 mailto:sage [2007/06/28(木) 13:52:52 ]
- >>38
ありがとうございます。 さっそく実行してみたのですが、次は org.postgresql.util.PSQLException: The column index is out of range: 2, number of columns: 1. と表示されてしまいます。 ?の数とsetStringやsetIntの数が違うのかなと思ったのですが、 一緒でわかりません・・・
- 53 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:02:01 ]
- >>45
「15歳からはじめる〜」って本を良く耳にする。でも読んだ事はない。 Javaでゲーム作成 2本目 pc11.2ch.net/test/read.cgi/gamedev/1130373830/
- 54 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:25:08 ]
- >>52
配列の要素数が0で始まるのか1で始まるのかをもういちど確認してくれ
- 55 名前:デフォルトの名無しさん [2007/06/28(木) 14:34:25 ]
- 現在の実行コンテキストが Applet として実行されているかどうかを判定することってできる?
- 56 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 14:44:03 ]
- getCodeBase()
- 57 名前:デフォルトの名無しさん [2007/06/28(木) 15:10:44 ]
- Eclipse使ってたら・・・
PreparedStatement のメソッド setDate(int, Date) は引数 (int, Date) に適用できません。 どういうことだよorz
- 58 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 15:15:27 ]
- 要するに
setDate(int, java.sql.Date) は引数 (int, java.lang.Date) に適用できません。 ってことだ。エラーメッセージが悪い。
- 59 名前:デフォルトの名無しさん [2007/06/28(木) 15:44:17 ]
- サーブレットから別のデーモン スレッドを実行した場合、
そのスレッドを長時間実行してもタイムアウトになることはありませんよね?
- 60 名前:45 mailto:sage [2007/06/28(木) 15:47:26 ]
- >>53
それは既に読了です。 いい本ですが、あくまでSwing関連のJavaの入門書でした
- 61 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 18:35:06 ]
- >>60
まぁ、>>47みてやりたいことは大体判った。 結局のところ探索、評価の繰り返しをいかに精確かつ高速にやるか、というところが肝なわけで… まともにやろうとすると結構専門的なところまで踏み込むことになるけれども一応参考資料(英語ですが) ttp://www.cs.ualberta.ca/~mburo/publications.html もともとはリバーシのアルゴリズム解説だけれど、探索や評価のアルゴリズムは他にも応用がききそうなので。 日本語の資料だとつっこんだところまで解説したものってみたことないので情報工学とか数学関係の専門書を あたった方が早いかもです。
- 62 名前:デフォルトの名無しさん [2007/06/28(木) 19:28:14 ]
- >>60
ボーンデジタル
- 63 名前:45 mailto:sage [2007/06/28(木) 20:45:50 ]
- >>61
やはり専門的な分野になると英語になるのかぁ・・・ 最初の1〜2冊は日本語で勉強したかったんです。 Amazonで漁っていくつか候補があったのでとりあえず片っ端から買ってみますw
- 64 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 20:51:31 ]
- >>62
これですか・・・ ttp://www.amazon.co.jp/Game-Programming-Gems-Mark-DeLoura/dp/4939007286/ref=pd_sim_b_1_img/249-4142550-3954713?ie=UTF8&qid=1183031211&sr=8-11 流石にいい値段しますが興味はあります・・・むぅ
- 65 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:39:12 ]
- HttpURLConnectionで取得したデータ(画像)のnputStreamを
複数回読みたいんですが、どうしたらいいですか?
- 66 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:55:51 ]
- >>65
できない InputStreamのStreamの意味を調べたことあるか? 尚、普通の人は画像データを変数に格納するだろう
- 67 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 22:58:41 ]
- >>65
一回closeしてしまったら、もう読み込めないから、もう一回接続して新しいInputStreamで読み込む。 もしくは、最初のInputStreamで読んだデータは手元にあるはずだから、それを利用する。
- 68 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:02:55 ]
- >>66
> InputStreamのStreamの意味を調べたことあるか? あります、すみません resetメソッドとかよくわからずに使ってうまくいかなかったもので… > 尚、普通の人は画像データを変数に格納するだろう InputStreamが引数なメソッドを2つ呼び出す必要があるんですが、 やっぱそのたびに生成しなきゃいけないんでしょうか。 ↑これがよくわからんかったのでリサイクルしたいと思いました。 >>67 接続は1回にしたいです。
- 69 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:05:13 ]
- ああ、closeしてなくても一回読み出したデータをもう一回読み出すのはInputStreamでは無理だから、
頭からもう一度とはいかない。全データのプッシュバックをサポートするstreamを作って、 HttpURLConnectionのInputStreamに接げばいけるかもだが、 それは最初に読んだデータを再利用するようにした方がいいような気が。
- 70 名前:66 mailto:sage [2007/06/28(木) 23:11:05 ]
- >>68
言い方がきつかった、すまん ただ、Streamってのは流れなんだ、流れてくるものを2回読むことはできない だからデータを溜めておかなければならない。 ちなみに、使うメソッドがInputStreamで引数を持つという事自体がおかしいということはないか? Imageで受けたり、byte[]で受けたり出来ないような特殊な事情があるのか、検討して欲しい。 それでも、どうしてもInputStreamにしなければならないならば、byte[]等でキャッシュしておき、自前で再度流すようにコーディングする必要があるな
- 71 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:11:30 ]
- >>68
InputStreamのサブクラスにはByteArrayInputStreamというものもある。 何もネットから読み込むだけのストリームではない。 最初にそのメソッドを呼ぶ前にHttpURLConnectionでバイト配列にデータを読んで、 そのメソッドにはバイト配列をバッファにしたByteArrayInputStreamを渡してやればいい。
- 72 名前:デフォルトの名無しさん mailto:sage [2007/06/28(木) 23:31:38 ]
- >>70
最終的にはswtのImageを作るんですが、 その前に元のデータのハッシュを取る必要があるんです。 最初はImageを作って それからgetImageData().dataのハッシュを 取ればいいかと思ってたんですが、dataってビットマップ(広義)と知って… >>71 そうですね、 一旦bete[]にバッファしてそれぞれByteArrayInputStream作ることにします。 ご協力ありがとうございました。
- 73 名前:57 [2007/06/29(金) 00:12:38 ]
- >>58
ありがとう やっと意味がわかったよ
- 74 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:22:36 ]
- >>72
そういうのってNIOでやるんじゃない?
- 75 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:29:41 ]
- >>72
DigestInputStream
- 76 名前:デフォルトの名無しさん [2007/06/29(金) 00:51:14 ]
- Javaを使って遠隔機械操作をしたいんですが関連するパッケージを
教えてください。 RMIとかなんでしょうか
- 77 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 00:54:31 ]
- >>76
遠隔機器操作だけじゃわからん。どういう事をやりたいか具体的に書く。
- 78 名前:デフォルトの名無しさん [2007/06/29(金) 01:05:56 ]
- サーボモーターの制御及び遠隔監視ですが、被制御側にJAVAとCのプログラムを配する予定です。
知りたいのは、ネットワークのストリームの確立方法と制御命令の伝達方法、及び監視情報のリアルタイム での送受信方法です。
- 79 名前:デフォルトの名無しさん [2007/06/29(金) 01:10:10 ]
- 78の補足
回線は優先無線の両方を考えてますが、とりあえず有線の方法、通常のインターネット経由の方法で 教えていただけたらと思います。
- 80 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:17:50 ]
- Cも使うのならベタにSocket使えばいいんじゃね。
- 81 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:20:20 ]
- Set<Foo> set = new HashSet<Foo>();
for(Foo f: set) { // ここで set を変更 } で ConcurrentModificationException が出るときの解決案って for(Foo f: set.toArray(new Foo[set.size()])) { // ここで set を変更 } 以外にどのようなものがありますか?
- 82 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 01:43:20 ]
- なんか1.5ぐらいからJavaの文法、複雑になっちゃったな
>>81とか俺には理解できない・・・
- 83 名前:81 mailto:sage [2007/06/29(金) 02:14:21 ]
- >>82
大丈夫。Java7 あたりから俺もわからなくなる。
- 84 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:26:47 ]
- やさしいjavaで勉強初めて一週間程たちます。
色々調べたのですがわからなかったので、初歩的な質問ですが教えてください。 class Car { int n; } とした時に Car car[ ] = new Car[3]; のような配列ぽい変数にできるのでしょうか? 今試しているのですがエラーになります。 コンストラクタを使ってオブジェクトを作る時は配列は使用できないのでしょうか? 先のページには出来ている様なコードが書いてあるのですが、抽象クラスでないとダメなんでしょうか?
- 85 名前:デフォルトの名無しさん [2007/06/29(金) 02:27:12 ]
- >>80
失礼Cはマイコン用のCで低レベルの制御用にのみ使うものです、通信そのもは複雑なネットワークに も対応できるようにJAVAを使おうと思っています。
- 86 名前:デフォルトの名無しさん [2007/06/29(金) 02:29:50 ]
- >>84
配列要素それぞれをnew Car()で生成する必要があります Vector使ったほうが簡単では?
- 87 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:31:17 ]
- >>84
エラーの種類がわからないから断定は出来ないけど、 おそらく発生しているエラーは NullPointerException だと思う。 Car[] car = new Car[3]; for (int i = 0; i < car.length; i++) car[i] = new Car();
- 88 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 02:34:24 ]
- >>86
>>87 なるほど!! まずは配列要素それぞれで生成するわけですね。 早速試してみます。
- 89 名前:88 mailto:sage [2007/06/29(金) 02:42:00 ]
- >>87さんのコードを書き加えたら出来ました!
ありがとうございました!
- 90 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 03:11:34 ]
- Javaアプレット(ファイル名:abc.jar)でOKボタンを押したときのイベントで、Javaアプレット自身を再起動させるプログラムを書きましたが、時々動作しなかったりしています。
OKボタンを押したときのイベントの中にRuntime.exec()で2つのシェルスクリプトを実行するプログラムを書きましたが、 1つ目のJavaアプレットのプロセスをkill するスクリプトは常に動作しますが、2つ目のJavaアプレットを起動するスクリプトが動作したり、動作しなかったりしています。 ・1つ目 stop.sh:(abc.jarのプロセスをkill するスクリプト) ・2つ目 start.sh:java -jar abc.jar String[] cmd= {"stop.sh", "start.sh"}; Runtime.getRuntime().exec(cmd) でcmdにスクリプトを渡すようにしています。 この書き方はだめなのでしょうか? ソースは手元にありません。すみません。 よろしくお願いします。
- 91 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 03:22:45 ]
- アプレットから Runtime.exec ですか。実に危険だな。
- 92 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 03:35:31 ]
- >>90
2つ目動作することある? Runtime#exec(String[]) の2つ目以降の要素は1つ目の要素の引数ではないか?
- 93 名前:90 mailto:sage [2007/06/29(金) 03:47:39 ]
- すみません。間違えていたと思います。
>String[] cmd= {"stop.sh", "start.sh"}; >Runtime.getRuntime().exec(cmd) String cmd[] = new String[2]; cmd[0]="stop.sh" cmd[1]="start.sh" Runtime.getRuntime().exec(cmd[0]) Runtime.getRuntime().exec(cmd[1])
- 94 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 04:39:48 ]
- >>85
組み込み用Cしか動かないような環境でJava動くの?
- 95 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 04:43:53 ]
- >>90
どうせネタだろうけど Runtime.getRuntime().exec(cmd[1]); Runtime.getRuntime().exec(cmd[0]); これでいいよ
- 96 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 06:48:01 ]
- >>81
setの変更がremoveのみなら、こういう手も。 for(Iterator<Foo> iter = set.iterator(); iter.hasNext();){ Foo f = iter.next(); if(...){ iter.remove(); } } せっかくの enhanced for loop が使えないのはもったいないけど。
- 97 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 07:45:23 ]
- >>81
こんな感じにする Set<Foo> set = new HashSet<Foo>(); Set<Foo> temp = new HashSet<Foo>(set); // 丸々コピー for(Foo f: set) { // ここで temp を変更 } set.clear(); // 一度、空にしてから set.addAll(temp); // 全部詰めなおす 参照の問題が起きないのであれば、2行を、set = temp;としてもいいけど、 このメソッドでSetを生成して返すのでもなければ、clear addAll のコンボのがいいと思う。 もし、他のスレッドからsetの更新の可能性があるならば、同期も取ろう
- 98 名前:デフォルトの名無しさん [2007/06/29(金) 15:40:33 ]
- URLConectionでリクエスト送信→レスポンス受信な処理をやろうとしてるんですが、
ループ内でリクエスト送信後、レスポンス受信の前に次のリクエストを送る事ってできないんでしょうか? レスポンスを待たずにリクエストを送りたいと思っています。 こういうのはthreadを使うべきなんでしょうか?
- 99 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 17:11:46 ]
- threadを使うべき
- 100 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 17:53:15 ]
- 国際化対応って最後にまとめてやったほうが効率いいですか?
- 101 名前:デフォルトの名無しさん mailto:sage [2007/06/29(金) 19:48:07 ]
- >>100
はじめから考えなきゃだめな部分とそうでない部分がある。 まあ、とにかくはじめに検討することが大事。
- 102 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 00:14:50 ]
- ArrayList<Integer>クラスのインスタンスをint[]クラスに代入したいのですが、どうしたらよいのでしょうか?
toArray()メソッドを使おうと考えたのですが、Integer[]クラスへの代入はできるもののint[]クラスへは代入できませんでした
- 103 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 01:00:43 ]
- >>102
ArrayList<Integer>とint[]は一方が他方のサブクラスの関係でないので代入できない。 リストの各要素をint[]の各要素に代入したいのなら、 toArrayでInteger[]を生成したあとで、同じ要素数のint[]を作って、各要素に代入していく。
- 104 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 01:03:39 ]
- ArrayList<Integer>から各要素を直接取り出してint[]の各要素に代入してもいいし。
- 105 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 01:25:21 ]
- 配列a[]と変数b,c,dがあったとして、
if(a[ i ] && b+c<=d) という条件文の場合、条件を日本語を訳すと「a配列の@番目の要素とb+cがともにd以下の場合」ということでいいんでしょうか?
- 106 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 01:30:52 ]
- 「a配列の@番目の要素とtrueかつb+cがd以下の場合」
- 107 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 01:31:33 ]
- ×要素と
○要素が
- 108 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 01:32:17 ]
- JAVAの通信についての質問です、お願いします。
URL url = new URL(address); URLConnection connection = url.openConnection(); としたとしてサーバーに「GET」としてリクエストが行くと思うのですが、ヘッダーのUser-AgentがJava/1.5.0_12となっています。 ネット上のデータを取得するときに、指定したヘッダーをサーバーに送信するやりかたはあるでしょうか? 今はテストとして、www.cybersyndrome.net/evc.htmlをURLクラスで取得して、User-Agentの書き換えをあれこれ試してるんのですが、 URLConnectionのsetRequestPropertyなど試してもなかなかうまくいきません。 よろしくお願いします。
- 109 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 02:16:26 ]
- >>108
setRequestPropertyはストリームを開く前にセットしないと効果がないよ。 URLConnection u = new URL(...).openConnection(); u.setRequestProperty("User-Agent", "hogehoge"); InputStream s = u.getInputStream(); こんな感じで。 もし、hogehoge Java/1.5.0_12みたいに後に元のUser-Agentが付いても構わないなら、 javaのオプションに-Dhttp.agent=hogehogeとかやるだけでいける。
- 110 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 02:24:22 ]
- BufferedReaderクラスのreadLineメソッドで一行ずつ読み込む処理を行っているのですが,
現在まで読んだ文字数を知る方法はないでしょうか? 読み込んだ文字列の長さを足していけばいいと思ったのですが, 改行が削除されているために,改行コードがCRかCRLFかわからない場合うまく数えられないのです.
- 111 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 02:30:11 ]
- >>110
BufferedReader#readLineではたぶん無理 一文字ずつ読んで行にまとめる処理は自分でやる
- 112 名前:110 mailto:sage [2007/06/30(土) 02:31:56 ]
- >>111
thx 了解です
- 113 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 02:35:55 ]
- もし改行コードが一貫していることが分かってるなら
とりあえず最初の行末端が出るまでは一文字ずつ読んで 改行がLFかCRLFかCRかを判断したら あとはreadLineで読んで改行の種類に応じて行ごとに文字数に1か2を足してやる手もある
- 114 名前:110 mailto:sage [2007/06/30(土) 02:37:43 ]
- すみません,追加で質問させてください.
BufferedReaderで現在まで読んだバイト数(現在位置)も知ることは無理でしょうか?
- 115 名前:108 mailto:sage [2007/06/30(土) 02:44:38 ]
- >>109
継続的にUAの改変をしたいのでプログラム中に書こうと思ってます。 試した処理が URL url = new URL(String address); URLConnection connection = url.openConnection(); //オブジェクト取得 connection.setRequestProperty("User-Agent", "hogehoge"); //ヘッダーセット connection.connect(); // 接続 という風にやってます。 その後は、BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));で読み込んでreadlineでデータ読み込むとやっぱりUAがJAVAのままになってます。 ぐぐって出てくるサイトはPOST処理について書かれてるものばかりで。 URLで中身取得するだけなら、これ以上処理はないと思ってるのですが。 connect()前にヘッダー送られてるのでしょうか…
- 116 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 02:52:28 ]
- URLConnectionの方でUser-Agentを設定してるのに
実際にデータを読むときはなんでURLからストリームを開いてるの?
- 117 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 02:54:22 ]
- if(blp==0) i=2;
for(;i<bln;i++){ } と if(blp==0){ i=2;} for(i=2;i<bln;i++){ } は一緒の意味?
- 118 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 02:56:18 ]
- >>114
多分無理っぽい。自分でカウントするしかなさそう。 >>115 わざわざconnectしなくてもデータを読もうとした時点で勝手に接続してくれるよ。
- 119 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 02:58:50 ]
- >>117
blpの値によって違う
- 120 名前:110 mailto:sage [2007/06/30(土) 02:59:18 ]
- >>118
ありがとう.了解です. >>113の方法でやってみることにします
- 121 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 03:01:21 ]
- >>119
もしblpが0と1の2種類の場合、0と1でどう違うのでしょうか?
- 122 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 03:09:07 ]
- blpが非零の時にif文が終了した時点でiに何がセットされてるか考えてみ
- 123 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 03:10:59 ]
- >>122
実際に実行してみて分かりました!
- 124 名前:108 mailto:sage [2007/06/30(土) 03:15:28 ]
- >>116
ありがとうございます、UA表示が変わりました。 どうやら、本でURL先のデータ表示だけをする部分に ttp://journal.mycom.co.jp/column/java/054/index.html ここのヘッダー取得処理を加えたときに、ごっちゃになったようです、すみません… >>118 私も最初はconnect()いらないんじゃないかと思ったんですが、ぐぐったときに出たサイトで // コネクション生成(この時点では、接続されていない) con=(HttpURLConnection) url.openConnection(); とあったので、そういうものだとばかり思ってました。 ありがとうございました、またがんばろうと思います。
- 125 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 06:27:34 ]
- 仕様書よりも馬の骨サイトの方を信用する癖は無くした方がいいよ
- 126 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 07:33:53 ]
- 実行中のウィンドウがアクティブでなくなってもキーボード入力を受け付ける方法ってありませんか?
- 127 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 08:41:40 ]
- ありますよ
- 128 名前:デフォルトの名無しさん [2007/06/30(土) 21:08:43 ]
- Servlet アプリケーションの設定って、どこに記述すればいいの?
Windows アプリケーションでいうところの INI ファイルみたいな 設定ファイルって Servlet にはないの? properties ファイルはローケール依存テキストを記述するものだから 適当じゃないよね?
- 129 名前:デフォルトの名無しさん mailto:sage [2007/06/30(土) 21:18:21 ]
- ここにその質問文を書く時間があれば、
グーグル先生に「Servlet 設定ファイル」で聞いてみろよ。 www.google.co.jp/search?q=Servlet+%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
|

|