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

★★Java質問・相談スレッド165★★

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/10/20(日) 19:30:39.35
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 (p)ttp://www.wikiroom.com/java/?path,classpath
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
・String に == は使うな。equals() を使え。※

前スレッド
★★Java質問・相談スレッド164★★
http://toro.2ch.net/test/read.cgi/tech/1378219684/
0751デフォルトの名無しさん2013/11/14(木) 23:55:21.09
>>750
無い。
0752デフォルトの名無しさん2013/11/14(木) 23:55:41.90
tomcatにapacheの代用をさせることもできるが
画像表示はapacheの方が圧倒的に早い。
0753デフォルトの名無しさん2013/11/15(金) 00:47:44.20
>>750
httpのログは?
0754デフォルトの名無しさん2013/11/15(金) 01:26:35.14
>>727 の件で
ときどき 503 がでてるみたいでその後に GET したときに必ずエラーが出てるみたいです

根本的な解決方法がわからないけど
とりあえず例外はいたら HttpClient のインスタンスを作り直して
ログインからやり直すって感じの応急処置にしてみました

若干解決方法が気持ち悪いけど現状安定してるみたいです…

アドバイスくれた方々ありがとうございました!
0755デフォルトの名無しさん2013/11/15(金) 07:14:27.22
次はいつかな
0756デフォルトの名無しさん2013/11/15(金) 08:54:29.06
>>383
荒らすなゆとり
0757デフォルトの名無しさん2013/11/15(金) 09:58:50.12
>>754
ちょっと>>727を見ていて思ったのだけれども、for(;;)で無限ループを回すのは
良いとして、一回GETリクエストをしたら次のGETをする前にちゃんと数秒間の
スリープは入れているよね?
0758デフォルトの名無しさん2013/11/15(金) 09:59:18.75
あらすな馬鹿とあらしがいう
0759デフォルトの名無しさん2013/11/15(金) 11:49:49.48
GCC開発者「Javaはオワコン。GCJをやめてGoをやろうぜ」
http://engawa.2ch.net/test/read.cgi/poverty/1384481613/
0760デフォルトの名無しさん2013/11/15(金) 11:53:27.41
>>759
すれち
0761デフォルトの名無しさん2013/11/15(金) 18:53:51.84
PNaClがAppletを反面教師として堅牢なプラットフォームに育ちますように…
0762デフォルトの名無しさん2013/11/15(金) 19:09:06.23
ネットで拾ったソース実行しようとしたらjava.until.vectorがないって言われたんですけど
どっかでダウンロードすることはできますか?可変長配列を使えれば別のものでも大丈夫とは思うのですが
0763デフォルトの名無しさん2013/11/15(金) 19:10:04.62
utilとuntilのタイプミスでは
0764デフォルトの名無しさん2013/11/15(金) 19:14:01.01
utilでした。すいません
java.utilはあるのですがそこから予想で挙げられてるクラスがネットに書かれているのよりずっと少ない…
07657642013/11/15(金) 19:34:25.49
すいません、自己解決しました
0766デフォルトの名無しさん2013/11/15(金) 22:26:45.64
>>757
はい! いれてます!
実際に使うときは1時間に1回ぐらいみにいくだけで十分なんですけど
デバッグのために一時的に1分に1回とかにしてました
0767デフォルトの名無しさん2013/11/16(土) 20:51:36.07
ご質問させてください
現在javaの資格について調べているのですが
オラクルjava認定資格アソシエイツ(OCJ-A)とjavaプログラマbronzeはなにか違いがあるのでしょうか
今は駆け出しなので初歩から取得しようと思って調べたのですがいまいちよくわかりません
どなたか返信お願いします
0768デフォルトの名無しさん2013/11/16(土) 21:18:51.69
すきにすれば
0769デフォルトの名無しさん2013/11/17(日) 00:18:24.64
mavenで親子関係のあるプロジェクトを作りたいのですが、親のパッケージングはpomなんですか?
親プロジェクトはmaven専用のプロジェクトになる気がするのですが、気のせいでしょうか
0770デフォルトの名無しさん2013/11/17(日) 07:21:45.14
>>767
アソシエイツって何か知らないけど、java プログラマー bronze
は、日本だけの資格だから取るならsilverをお勧めします。
ちなみに、silverの問題は、「こんなコード誰が書くか!」とか
「問題文が曖昧すぎるんだよ!」みたいな問題ばっかりで
俺の場合、silverの公認教科書を100%解けるレベルで
試験結果は、80%後半だった。
0771デフォルトの名無しさん2013/11/17(日) 10:31:55.87
Sevletでwebアプリ作ってるんですが、
アプリ稼働中はログインしたユーザー情報を個別にMapに突っ込んでおきたいのです。
そこで、認証が済んだユーザ情報をコントローラから

public class LoginUtil{
 private static Map loginUserSubInfo = new Map();
 public static void setLoginUserSubInfo(){};
 public static User getLoginUserSubInfo(){};
}

みたいなpublicクラスのクラス変数にstaticメソッド経由で入れようと
思ってるんですが、これだとloginUserSubInfoはスレッドセーフにはならず
同時アクセスがあった場合は意図しない値がセットされたりするんでしょうか?

そもそもこういう実装にはせず、sessionオブジェクトとかで
ユーザー情報を管理したほうがいいですか?
0772デフォルトの名無しさん2013/11/17(日) 10:51:06.45
>>771
最初のうちはstaticつけようが何しようが
動くものを作る。
その後で、「あっ、これをこうすればstaticいらないや」
とか後から改変したら良し。
0773デフォルトの名無しさん2013/11/17(日) 11:19:02.91
>sessionオブジェクトとかでユーザー情報を管理したほうがいいですか?
YES
0774デフォルトの名無しさん2013/11/17(日) 11:20:33.92
あとsessionだと範囲が狭いならservlet context(applicationスコープ)で管理すべきです。
07757712013/11/17(日) 16:49:07.93
>>772-774
ありがとうございました。
HttpServletクラスのgetServletContextで
applicationスコープ使うことにしました。
0776デフォルトの名無しさん2013/11/17(日) 17:00:07.81
てとりあしとり、みんなしんせつだね
0777デフォルトの名無しさん2013/11/17(日) 19:26:40.38
後継者を育てる楽しみ
0778デフォルトの名無しさん2013/11/17(日) 19:49:06.95
布教しないと終了だからね。
GCCがJava見捨てるとか検討だって。
もちろんc#とかMicrosoft関連は崖っぷち。
ハーメルンの笛吹きに踊らされた連中のデスマーチだけどさ。

未来は意外と最古の言語Lispかも。
0779デフォルトの名無しさん2013/11/17(日) 19:53:56.58
OpenJDKがあるからGCJいらなくね?って話を「Javaが不人気だから見捨てられた」と読み替えるネガキャンはもっとレベルの低いスレでやらないと意味ないよ

> OpenJDKという活発な開発コミュニティが存在していること、
> OpenJDKの活動を引き出すというGCJの当初の目的はすでに果たせたこと、などが理由としてあげられている。
0780デフォルトの名無しさん2013/11/17(日) 19:56:30.49
>>172
0781デフォルトの名無しさん2013/11/17(日) 19:59:03.79
>>759
0782デフォルトの名無しさん2013/11/17(日) 20:23:48.22
>>172と>>759はオワコン
0783デフォルトの名無しさん2013/11/17(日) 20:33:48.13
GoよりもDartのほうが普及しそう

動的型付け言語は使っててストレスが溜まる
やっぱり静的型付け言語のほうがいい
0784デフォルトの名無しさん2013/11/17(日) 20:37:35.99
>>296
0785デフォルトの名無しさん2013/11/17(日) 20:41:23.58
>>296はオワコン
0786デフォルトの名無しさん2013/11/18(月) 00:42:36.52
javaって自由すぎて、難しいよね
フレームワークが沢山あるくせに古かったり・まともに動かなかったりする所が
もう、.リソース分散しないで欲しい
0787デフォルトの名無しさん2013/11/18(月) 00:57:16.91
本来なら規格化された電子部品の様に中身を知らずに何処でも使えるソフトウェアの部品化だったはず。

所が現実はどの部品も信用ならずだし、他の言語に比べ異常に長い名前を知らなきゃ何も出来ない。

大昔にGOTO文の多用で分岐するFORTRANがスパゲッティプログラムと揶揄されたがJavaは店じゅうにスパゲッティをブチまけて隣りテーブルと繋がってる様な惨状だ。
0788デフォルトの名無しさん2013/11/18(月) 10:48:08.48
惨状ってほどでもねぇな。ゴミゴミした街並みを記憶できる程度には整理されている。
0789デフォルトの名無しさん2013/11/18(月) 10:50:08.16
普段生活してない他所の街について汚ねぇ街並みだと言うことはできるが、同時それはおまえがまるで余所者(プログラマに向いてない者)である事を意味している。
0790デフォルトの名無しさん2013/11/18(月) 11:38:16.34
Javaが主に扱ってる領域って
同名やバージョン別で区別とか平気で出てくるぞ

そういう分野何でもかんでもグローバル空間にぶちまける言語使うと
すぐスパゲッティになる
0791デフォルトの名無しさん2013/11/18(月) 12:31:15.04
コンストラクタ呼び出す前って、newをつけるけど、つけないで呼び出す場合はあるんですか?
0792デフォルトの名無しさん2013/11/18(月) 12:39:28.41
認識がおかしい
newが本体でコンストラクタはオマケ
0793デフォルトの名無しさん2013/11/18(月) 12:42:41.79
newだけで勝手に呼び出してくれるんですか?
0794デフォルトの名無しさん2013/11/18(月) 12:50:14.09
>>791
自分自身のコンストラクタ呼ぶときには付けない。
別クラスが呼び出すなら、まずない。
他はリフレクションでのnewInstanceぐらい。
0795デフォルトの名無しさん2013/11/18(月) 17:30:29.48
スーパークラスのコンストラクタって明示的に呼び出さないとダメなんすか
0796デフォルトの名無しさん2013/11/18(月) 17:34:04.72
>>795
引数なしのデフォルトのコンストラクタでよければいらない
0797デフォルトの名無しさん2013/11/19(火) 01:22:23.74
Smatraってどうよ?
0798デフォルトの名無しさん2013/11/19(火) 03:12:54.36
ArrayList list

list.get(0);
list.remove(0);

これを同時に処理はできるような方法はありますか?
0799デフォルトの名無しさん2013/11/19(火) 03:16:15.59
>>798
釣りなの?removeの戻り値って何か知ってる?
0800デフォルトの名無しさん2013/11/19(火) 03:44:23.53
自己解決しました
0801デフォルトの名無しさん2013/11/19(火) 06:23:14.29
自己解決じゃねえw
0802デフォルトの名無しさん2013/11/19(火) 13:11:30.08
俺も知らなかったw
0803デフォルトの名無しさん2013/11/19(火) 13:19:40.26
スタックから削除と同時に要素も取得とか普通の発想だろ…
0804デフォルトの名無しさん2013/11/19(火) 13:31:51.29
>>803
それはJavaでの常識でしょ
0805デフォルトの名無しさん2013/11/19(火) 13:42:45.77
スレッドセーフの幻想が健在だった頃の名残だよな
0806デフォルトの名無しさん2013/11/19(火) 16:36:36.99
まさか返してくれるなんて・・知らんかったw
0807デフォルトの名無しさん2013/11/19(火) 17:08:01.69
>>804
プログラミング全般の常識だが…
配列操作でpush/pop/shift/unshiftは当たり前のテクニックだし、
Ruby, JavaScript, Perl, Pythonなどスクリプト言語では組み込みでshift関数(配列の先頭の要素を削除して返却)が用意されてる
0808デフォルトの名無しさん2013/11/19(火) 17:14:31.63
>>172
0809デフォルトの名無しさん2013/11/19(火) 17:18:44.15
>>172はオワコン
0810デフォルトの名無しさん2013/11/19(火) 17:54:44.78
>>807
俺もそれが普通の発想だと思うが、世の中には削除と同時に取得するのが安全でないC++という言語もあるんだ
0811デフォルトの名無しさん2013/11/19(火) 18:59:40.99
でまわってるコンテナライブラリなら
スレッドセーフかどうかくらい明記してるとおもう。
0812デフォルトの名無しさん2013/11/19(火) 22:21:10.09
Queue使えよー。ArrayListの頭チョップとか何の罰ゲーム。どこがスタックなのよ。
0813デフォルトの名無しさん2013/11/19(火) 22:21:44.83
3ヶ月javaやって使って、ようやく簡単な画面作れたんだけどさ
これって、時間かかりすぎかな?
ちなみに、職業プログラマね
0814デフォルトの名無しさん2013/11/19(火) 22:25:17.83
tomcatにデプロイしたのですが、*.jarが読み込めないよーみたいなエラーがでます。
/webapps/sample/WEB-INF/libに、*jarを配置したのですが...
何でダメなんですか?
0815デフォルトの名無しさん2013/11/19(火) 22:34:12.02
>>813
ちょっと長いかな程度。注入時間わからないけど。
サーバとか組込とかいろいろあるわけで、Javaというキーワードだけで仕事取ってくる営業は無能だと思うの。言語の文法覚えるのはすぐだが、フレームワークや開発手法を理解するのには時間かかる。
0816デフォルトの名無しさん2013/11/19(火) 22:56:56.62
>>815
会社では.NETで開発しているんだけど、上からjava覚えてきてねーと言われた
だから、3ヶ月間家に帰ってきてから、一人でjavaの勉強しているわけなんだ

spring/mybatis/tomcatを作って、画面項目4個でDBへ問い合わせるプログラムを作ってみた
そしたら、進捗遅くねー?って言われた。だから、皆さんどのくらい時間がかかるのかなって思ったんだ
0817デフォルトの名無しさん2013/11/19(火) 23:02:04.86
勤務時間外に勉強してるのに泣かせる話だな
0818デフォルトの名無しさん2013/11/19(火) 23:04:03.51
>>812
一般的なスタックは動的配列のサブセットとして実装されるのが普通だからだよ
だからって動的配列がスタックの操作を提供しなきゃいけないという理屈はないが、慣習的にそうなってることが多い
.NETではスタックと動的配列は別になってて、動的配列のRemoveも値を返さないね
0819デフォルトの名無しさん2013/11/19(火) 23:21:32.22
removeが値を返すのが標準か否かじゃなくてさ
removeをAPIリファレンスも読まずに使ってるのが怖いなあって思うわ
他のメソッドとかも注意書きとかも読んでないで使ってるんだろうなって思う
0820デフォルトの名無しさん2013/11/19(火) 23:23:58.38
phpとかweb(js)からjavaに来たゆとりだとそんなところだろ
0821デフォルトの名無しさん2013/11/19(火) 23:24:55.81
感覚的に使えるものってマニュアル読まなくてもある程度使えちゃうからマニュアル読む人減るんだよね
車や家電の操作だってそう
0822デフォルトの名無しさん2013/11/19(火) 23:47:52.14
LIFOとFIFOの区別は付けとこうな・・・
0823デフォルトの名無しさん2013/11/19(火) 23:49:50.76
>>814
エスパーできねーや、残念
0824デフォルトの名無しさん2013/11/19(火) 23:55:49.00
java.nio.Buffer をなぜリングバッファにしなかったのか、残念
0825デフォルトの名無しさん2013/11/20(水) 00:06:03.54
話のネタにもならない一般の知識しか持ち合わせていないならそろそろブログでやってくれる?
0826デフォルトの名無しさん2013/11/20(水) 00:07:55.33
そのBuffer系列は全部抽象クラスでオーバーライド面倒
0827デフォルトの名無しさん2013/11/20(水) 00:10:34.90
え?
0828デフォルトの名無しさん2013/11/20(水) 00:11:59.02
馬鹿には無理
0829デフォルトの名無しさん2013/11/20(水) 00:56:58.73
java.nio.Bufferはコンストラクタ公開されてないからそもそもオーバーライドできんかったような記憶が……
0830デフォルトの名無しさん2013/11/20(水) 03:31:37.20
メジャーなアプリでのShift_JISなどの日本語文字の対応といい、Javaの公式日本語ドキュメントといい、世界は日本への配慮しすぎだは
0831デフォルトの名無しさん2013/11/20(水) 04:14:36.10
>>810
C++が使いにくいのは確かだが、
Atomicかどうかに言語関係なくないか?
0832デフォルトの名無しさん2013/11/20(水) 13:31:52.47
java8のByteBuffer, java.nioについては、もともとは配列wrapperでもあるしmemory mappedが作れるのだからCharSequence::charsと同じくstream対応の方がいい。
0833デフォルトの名無しさん2013/11/20(水) 22:05:20.55
>>831
810 ではないが、810 で言っている「安全でない」というのは
例外安全性のことであって、GC がない C++ では本質的な問題。
0834デフォルトの名無しさん2013/11/20(水) 23:04:28.14
>>833
なんでGCが?それ、ものすごく狭い範囲で言ってないか?

操作のAtomicityは実装によるわけで、
DBのトランザクションみたいに、
きちんと気をつけてないと、例外安全にはならないよ。
0835デフォルトの名無しさん2013/11/20(水) 23:13:49.81
removeの戻り値を誰かがきちんと評価してやらないと
C++でfree()するチャンスが永遠に失われるよ、と言う話でわ
0836デフォルトの名無しさん2013/11/20(水) 23:19:45.99
コピーコンストラクタが例外を投げうるということが本質であって
Atomicity は関係ない。だからスクリプト言語のようにすべての
オブジェクトをヒープにおいてコピーしないようにすれば
例外安全に pop できる。
もちろんコピーコンストラクタが例外を投げないクラスであれば
例外安全に pop できるが、テンプレートで実装されているので
C++ である以上仕方ない。
0837デフォルトの名無しさん2013/11/21(木) 00:22:18.67
stlに限っての話でしょ?
結局実装によるって事じゃん。
0838デフォルトの名無しさん2013/11/21(木) 00:30:08.08
>>832の付け足しで思い出したんだけど、charsでIntStreamを取得するだけでなく、各Bufferのバルク処理用としてforEachも欲しいなってこと。
0839デフォルトの名無しさん2013/11/21(木) 00:41:37.28
いや配列に読み出せよ
一個ずつforEachなんてやってたらクソ遅くなってバッファの意味ないぞ
0840デフォルトの名無しさん2013/11/21(木) 01:00:15.55
そうそう、配列、配列。
配列で何か引っかかって考えてたんだけど、streamは、配列で使うよりBufferでラップして、buf.intStream(); buf.forEach();がjavaぽいなと思って。
allocateDirectのときもあるし、配列に読み出すとコピーが発生するし、配列はreadonlyにできないし。
場合によってはIterable, Collectionのように、iterator, spliterator, forEachがBufferに追加された方がバルク処理にはいいかもしれない。
0841デフォルトの名無しさん2013/11/21(木) 01:07:58.32
SIMDではfloatが主役なんだからFloatStreamも追加しろよおい
0842デフォルトの名無しさん2013/11/21(木) 04:29:36.48
javaやってる人間にc++なんて理解できるわけないじゃないですか><
0843デフォルトの名無しさん2013/11/21(木) 11:36:55.05
別に理解しなくていいよ
Javaの常識がプログラミング全般で通用すると思わないでいてくれればそれで
0844デフォルトの名無しさん2013/11/21(木) 16:10:44.72
手続き型言語なら大概通用する
C++が変態すぎる
0845デフォルトの名無しさん2013/11/21(木) 21:45:39.87
CとかC++は自由度が高いからなー
色々経験しとくとおもしろいぞ。

日本語で書くCOBOLとかな
0846デフォルトの名無しさん2013/11/21(木) 23:03:42.58
streemって並列化が効果出るような何万個もあるような要素数じゃないと元々意味ないぞ。
0847デフォルトの名無しさん2013/11/21(木) 23:16:45.09
javaでは元々小手先技は通用しないから、streamは個々の処理の高速化が期待できるという代物ではないと思うよ。
0848デフォルトの名無しさん2013/11/21(木) 23:26:51.03
>>847
いや、悪い。
そうだから外部イテレータ使う処理にforEach使っても意味ないぞと>>840に言いたかったんだが安価忘れた。
やるなら無限ストリームにしなきゃ使い道がない。
0849デフォルトの名無しさん2013/11/21(木) 23:43:45.14
ん?
streamの設計目的は元々バルク処理の効率化(と多少のメモリアクセスの高速化)がメインじゃなかった?
つまり内部イテレートをしたいからstreamを導入したんじゃなかったか。
lambdaはコンカレントの煩雑コード削除と、アクセスをnew経由からmethodhandle経由に切り替えるのが目的だし、lambda,streamはそのゴールは微妙に違う。
基本型のstreamを考慮しているかどうかは知らないけど、project sumatraを見てると基本型int,float,long,doubleのstreamは必要となってくるんじゃないのかと思うけど。
日本語のブログばかり見て勉強した気になってないで、ちゃんと英語ブログとかjavaoneとかの一次二次資料もみないと、どうやって使うのか、どういうときにつかうのか全然理解できなくなるよ。
0850デフォルトの名無しさん2013/11/21(木) 23:58:18.00
一要素一操作ごとに仮想メソッド呼ぶのに速くなるわけないでしょ
相当に粒度の大きい処理でないと大幅に遅くなるよ
■ このスレッドは過去ログ倉庫に格納されています