★★Java質問・相談スレッド148★★
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2011/09/20(火) 09:07:19.06JavaScript, 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
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
★★Java質問・相談スレッド147★★
http://hibari.2ch.net/test/read.cgi/tech/1312958339/
次スレは>>950あたりで。
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
0002デフォルトの名無しさん
2011/09/20(火) 09:08:18.85■ AWT と Swing は --
Java低速GUI Swing 9
http://hibari.2ch.net/test/read.cgi/tech/1261232019/
■ SWT は --
Java 高速GUI SWT 3
http://hibari.2ch.net/test/read.cgi/tech/1164877399/
■ NTT DoCoMo の iモード携帯電話用 Java (iアプリ) は --
iモード携帯電話用Java(iアプリ) Part22
http://hibari.2ch.net/test/read.cgi/tech/1295766416/
■ DoCoMo 以外は --
CLDC+MIDP+携帯電話用Javaスレッド part 9
http://hibari.2ch.net/test/read.cgi/tech/1249357352/
■ Androidアプリの作成は --
【Google】Androidアプリ作成part8 ※ dat 落ち
■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 71 ★★
http://hibari.2ch.net/test/read.cgi/tech/1309076891/
0003デフォルトの名無しさん
2011/09/20(火) 09:10:32.33NetBeans Part6
http://hibari.2ch.net/test/read.cgi/tech/1273665879/
■ Eclipseに関する雑談は --
Eclipse統合M31【Java/C++/Ruby/Python/Perl】
http://hibari.2ch.net/test/read.cgi/tech/1295886572/
**** 開発環境が必要の場合は ****
■ J2SE 5.0 (1.5.0)
http://java.sun.com/j2se/1.5.0/ja/
■ Java SE 6
http://java.sun.com/javase/ja/6/
■ Java SE 7(Early Access)
http://jdk7.java.net/download.html
**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
http://www.java.com/ja
0004デフォルトの名無しさん
2011/09/20(火) 09:11:18.14スレの最新化以外は全部そのままです。
0005デフォルトの名無しさん
2011/09/20(火) 09:46:21.41また、Logbackで同様のものはありますか?
0006デフォルトの名無しさん
2011/09/20(火) 10:22:45.641KB未満〜100MB程度の二つのテキストファイル内容を比較したいのですが、VMパラメータが-Xmx128mとケチなため、
ファイルの内容をbyte[]で全て取り込んでからStringにしてequals()で比較することはできません。
両ファイルを一行ずつ読んで順次比較していけばいいのですが、変な条件がありまして、
例えば改行区切りでファイルAには「abc」「def」「ghi」、ファイルBには「def」「ghi」「abc」とある場合、
これは一致していると判定させたいのです。
なお、一時ファイルなどの使用は可能なのですが、実現方法はありますでしょうか?
もともとは両ファイル内容をそれぞれVectorに入れて、
ファイルAのVectorのforeachループ内でファイルAの要素でファイルBのVectorからremoveしていき、
removeできなかったら差異あり、できたらファイルAのVectorからもremoveし、
最後にどちらか片方のVectorに余りがあれば差異あり、などとしていましたが、
ファイルサイズが大きいとOutOfMemoryErrorが出るため、別の方法を検討しています。
0007デフォルトの名無しさん
2011/09/20(火) 10:27:13.46子プロセスでJavaVMを起動。その際-Xmxを望みの値にすればよい。
0008デフォルトの名無しさん
2011/09/20(火) 10:36:35.32一時ファイル使っていいなら、
ファイルAをソートした整列済みファイルA(一時ファイル)を生成、
ファイルBをソートした整列済みファイルB(一時ファイル)を生成、
整列済みファイル同士を先頭から比較。
ファイルが大きすぎて一度に整列済みファイルにできない場合は
複数に分割してソートして、その後マージする。
宿題とかでないのなら素直にヒープ増量した方がいいと思う。
0009デフォルトの名無しさん
2011/09/20(火) 10:39:45.17改行のない100Mのファイル食わせたら死ぬんじゃね?
0010デフォルトの名無しさん
2011/09/20(火) 10:49:26.56ファイルの参照、行の先頭位置と長さを保持した
CharSequenceの実装クラスでも作っておいて
比較の度に1Mぐらいで区切って読み込むとか。
0011デフォルトの名無しさん
2011/09/20(火) 11:46:15.32Aの行がBにあれば、一致した行を除いてB'に書き出し。
一致行が無ければDiffあり。
一致行があれば、B'をBに置き換える。
欠点は、ディスクIOが凄まじくなる。
最悪、Aの行数*Bのファイルサイズ分のIOになるか。
メモリとのトレードオフだ。
こりゃパズルだな。
0012デフォルトの名無しさん
2011/09/20(火) 13:01:31.650013デフォルトの名無しさん
2011/09/20(火) 13:45:35.83ググれよ
0014デフォルトの名無しさん
2011/09/20(火) 15:46:21.34>一時ファイルなどの使用は可能
1.まずAをソートしたA'と、BをソートしたB'を作る。
2.A'とB'のMD5チェックサムを求め、比較する。
0015デフォルトの名無しさん
2011/09/20(火) 16:58:12.63どのクラスがSerializableじゃないのかってどうやったら特定できますか?
001615
2011/09/20(火) 17:03:17.33http://www.java2s.com/Open-Source/Java-Document/6.0-JDK-Modules-sun/awt/sun/awt/util/IdentityArrayList.java.htm
あるクラスのArrayListを上のIndentityArrayListに書き換えると>>15の例外が出るんです
上のクラスに
implements Serializable
って入れてみたけど変わりませんでした。
なぜこのクラスはSerializableにならないんでしょうか。
0017デフォルトの名無しさん
2011/09/20(火) 18:14:34.66また、Logbackで同様のものはありますか?
0018デフォルトの名無しさん
2011/09/20(火) 18:14:47.90ファイルの内容を何も保持しないでソートできるか?
外部コマンド前提?
0019デフォルトの名無しさん
2011/09/20(火) 18:34:36.85という制約をinterfaceに書く事は出来ますか?
JAppletを継承しているクラスが複数あり、それらを抽象的に扱いたい場合、
どうすればいいでしょうか。
0020デフォルトの名無しさん
2011/09/20(火) 18:49:02.56もうわかってると思うけど
Exception in thread "main" java.io.NotSerializableException: sun.awt.util.IdentityArrayList
で表示されてるクラス(この場合はIdentityArrayList)が直列化可能でないクラスね。
>>16
いやimplements Serializableで例外は出なくなったけど?
elementDataフィールドがtransientなのでおそらく期待通りには動作しないと思うけど。
>>19
言葉通りの意味でとらえると、Javaでそれを実現するのはインタフェースでなく抽象クラスだね。
JApplet <- 抽象クラス <- 自作JApplet継承クラス
のように継承を作ることになる。
…けど、継承でなく委譲を使うべき典型的なパターンではないかと予想。
>>17
ここで聞くよりググれボケ。
両方あるだろ。
0021デフォルトの名無しさん
2011/09/20(火) 19:54:22.94変更前のクラスが残っててそっちがロードされてるとかじゃないの?
0022デフォルトの名無しさん
2011/09/20(火) 20:06:30.24MD5等のダイジェストを各行毎に求めて何らかの方法で足し合わせる
加算は可換なので、順序が入れ替わっても同一視される
一行が長くとも、ストリームからダイジェストを求めるようにすればOK
あとは神様に、
同一のダイジェストを生成する異なるメッセージが含まれてないことを祈る
また、足し合わせたら同じダイジェストの合計値になるような異なるメッセージの組が含まれていないことを祈る
002319
2011/09/20(火) 20:11:15.56委譲の使い方は例えばどんな形をイメージしてますか?
Appletクラスは1つだけにして委譲先のオブジェクトを外部から注入する事で異なるアプレットとして振舞わせる
という事も考えましたが、
エントリーポイントでApplet系クラスを継承しないとアプレットとして動作出来ないんじゃないかと思ったんです。
だから各エントリーポイント毎に(各アプレットアプリ毎に)Applet系クラスを継承したものを使っていました。
0024デフォルトの名無しさん
2011/09/20(火) 20:34:01.50Scanner s = new Scanner(System.in);
int a = s.nextInt();
入力要求で求めたsをaに入れる
javaとしたらこう書くのが当然なの?
C厨UZEEEになるのかもしれないけど
Scanner s;
s = new Scanner(略)
int a;
a = s.nexInt();
みたいのがしっくり来る。
nextInt()の方は1行でもいいけど、型や定数の宣言をしながら値の入れ替えをする
というのがJava文化?
0025デフォルトの名無しさん
2011/09/20(火) 21:17:03.81C++ でも C でもそういう文化になりつつある。
for (int i = 0; i < N; i++)
というのをみかけませんか?
0027デフォルトの名無しさん
2011/09/20(火) 21:21:40.63あれ?むしろCだと
const int a;
a = s.nextInt();
みたいなのができないので1文で書くのが普通なんじゃないの?
今のCだとできるのかな?
0028デフォルトの名無しさん
2011/09/20(火) 21:22:24.24それはスコープの話が絡むのでまた意味合いが異なる。
0029デフォルトの名無しさん
2011/09/20(火) 21:30:36.34int a;
s = new Scanner(略)
a = s.nexInt();
みたいに変数宣言と処理がきっちりわかれてるのが
昔のC言語風な感じ。>>24の後者のは変態的に見える。
003027
2011/09/20(火) 21:32:43.62宣言と代入は別々にするのが普通だったね。
それをひきずってるのなら>>24の通りかも。
Javaについてはどっちの書き方も普通に見かける。
書籍なんかだと行数の都合等で前者の書き方が多いのかもしれない。
あとfinal変数は宣言と同時に代入を行わないといけないという誤解をしてる人もいるので
そういう人は前者になるだろうね。
0031デフォルトの名無しさん
2011/09/20(火) 21:34:36.17実際はそういう書き方になるね
24はちょっとキモいけど分解したという事で宣言をきっちり分かれさせなかった
ただやっぱJavaだと宣言しつつ〜というのに慣れろって雰囲気というのが分かったので十分っす
0033デフォルトの名無しさん
2011/09/20(火) 21:39:53.91また、Logbackで同様のものはありますか?
URLを貼ってもらえると助かります。
0034デフォルトの名無しさん
2011/09/20(火) 22:26:36.86private DelegationClass delegation = new DelegationClass();
public void method(){
delegation.method();
}
みたいにやりますよね?
このメソッドを透過させるコードが面倒なんですが
継承とかを使って省略する方法は無いんでしょうか?
複数のスーパークラスから継承可能な仕様の言語なら‥‥‥。
0036デフォルトの名無しさん
2011/09/20(火) 23:58:54.980037デフォルトの名無しさん
2011/09/21(水) 00:13:30.79Javaだと、っていうより
近代的な言語は変数スコープを狭めるのが
良いコーディングプラクティス
冒頭で変数宣言がずらずらずら
そのあと代入が始まって、ってのは言語問わず時代遅れ
003837
2011/09/21(水) 00:14:52.29だから、一行で書くかどうかは余り本質じゃない
0040デフォルトの名無しさん
2011/09/21(水) 00:55:17.790041デフォルトの名無しさん
2011/09/21(水) 01:05:21.810042デフォルトの名無しさん
2011/09/21(水) 01:12:57.56http://www.nurs.or.jp/~sug/soft/java/java32.htm
>この「委譲」は「継承」の代わりとして、「クラス継承」の手法として使えるのであり、
>もう1つは「委譲」と呼ばれ、形式的にはクラス継承ではないのだが、クラス継承とほぼ同様の効果を得ることができる。
委譲って実質的に継承をメソッド単位にしたものでしかないんじゃないの?
考えがあるなら言えよ。
0043デフォルトの名無しさん
2011/09/21(水) 01:28:16.74頭悪くなりませんか?
0044デフォルトの名無しさん
2011/09/21(水) 01:35:46.45わかってないことがわかってない
そいつがまたわからない奴を量産する
0045デフォルトの名無しさん
2011/09/21(水) 02:57:20.41具体的にやりたいことが分からないと答えようがない。
> JAppletを継承しているクラスが複数あり、それらを抽象的に扱いたい
だけ見るとJAppletにアップキャストすりゃいいじゃん、となる。
0046デフォルトの名無しさん
2011/09/21(水) 08:37:30.15すごいなそれ。
0047デフォルトの名無しさん
2011/09/21(水) 20:00:33.42ネット繋がらないところでJava開発環境構築したいなら、
くれぐれもMavenには手を出さない方がいい。
0048デフォルトの名無しさん
2011/09/21(水) 20:13:59.28とりあえずjavax.swing.text.Document通じて
JTextComponentのコンテンツを更新する方法をググろうな。
0049デフォルトの名無しさん
2011/09/21(水) 20:21:41.41業務でも利用してたりするの?
GUIならC++で作っちまえって感じなのかな
簡単以外でJava良さってよくわからない
通信関係が楽とかいう噂を耳にしたけど
そういうライブラリやらメソッドが多い?
0050デフォルトの名無しさん
2011/09/21(水) 20:31:59.59Javaでかいとけば、WindowsでもLinuxでもうごくとおもう
new と delete の整合性はどうする?
0052デフォルトの名無しさん
2011/09/21(水) 20:37:12.57excelみたいなソフトを自作してて一つのセルの中に複数行の文字を入れようとしたらできなかったりして、
C#でやったらどっちの問題も起きずにスムーズにいったからもうJavaでGUIアプリは作りたくない
0053デフォルトの名無しさん
2011/09/21(水) 21:25:39.26通信関連が楽と言うのはあるのかもしれないね
0054デフォルトの名無しさん
2011/09/21(水) 21:27:09.550055デフォルトの名無しさん
2011/09/21(水) 22:51:39.05俺は業務アプリもJavaで書いてるプロジェクトにいたけど、
元々VBとかMFCのものを移植しようと思ったときには、やっぱり.NET系の選択になるんじゃないかな。
あと、商用コンポーネントは.NETの方が揃ってるよね。
>>53
それってApplet全盛期に作られたもの(の後継)だったりしないかな。
そういうのもやっぱり選択肢としてはJava以外にはなりにくいと思う。
>>52
良かったね。
0056デフォルトの名無しさん
2011/09/21(水) 23:07:09.740057デフォルトの名無しさん
2011/09/21(水) 23:09:48.95PDFで出力してたな
0058デフォルトの名無しさん
2011/09/21(水) 23:21:20.09http://poi.apache.org/
0059デフォルトの名無しさん
2011/09/21(水) 23:25:54.68下記はいかがでしょうか。
つ http://www.hitachi.co.jp/Prod/comp/soft1/eur/
0060デフォルトの名無しさん
2011/09/22(木) 01:15:49.97お願いします。
0061デフォルトの名無しさん
2011/09/22(木) 01:47:55.73JavaのAPIドキュメント
0062デフォルトの名無しさん
2011/09/22(木) 02:05:32.330063デフォルトの名無しさん
2011/09/22(木) 02:23:33.21その中でVK_SNAPSHOTというWindowsAPIの定数を使います。
javac でコンパイルすると当たり前のようですが、「シンボルを見つけられません」というエラーがでます。
どうすればいいんでしょうか?
ちなみに、WindowsAPIプログラムだとSendInput関数はこう書きます。↓
SendInput(VK_SNAPSHOT, 0, 0, 0);
006463
2011/09/22(木) 02:24:52.800065デフォルトの名無しさん
2011/09/22(木) 03:19:24.99ヘッダからVK_SNAPSHOTの値しらべて
static final byte VK_SNAPSHOT=0x2cとか
006663
2011/09/22(木) 11:38:23.73どうもありがとうございます。
ヘッダに書いてある値をそのまま使えばいいんですね。なにしろ、jnaとかjniは
初めて使うので、よく分かりません。
SendInputの使い方、やはりおかしいですか。
こちらは、WindowsAPIのスレで聞いてみます。
どうもありがとうございました。ヘッダの値を使えばいいということが分かり
大変ありがたいです。
0067デフォルトの名無しさん
2011/09/22(木) 13:34:20.60今朝から java.lang.OutOfMemoryError: PermGen space が発生してしまい、
対策を考えています。
Permanent領域のサイズを変更するってネットでは書いてあるのですが、
レンタルサーバー(共有)の為できないと思います。
まず確認なのですが、これはメモリ不足って事でいいのでしょうか?
0068デフォルトの名無しさん
2011/09/22(木) 14:03:44.95単純に言えばメモリ不足、と言う認識で合ってる。
で、そのエラーはハードウェアとしてのメモリが不足しているわけではなく、
JVMに割り当てるメモリが足りていない場合に出る。
つまりjavaコマンドのパラメータで設定できるわけで、OSのユーザ権限は気にしなくて良い。
-XX:MaxPermSizeオプションだったかな?詳しくはそのエラーメッセージでググってくれ。
アプリケーションサーバの話なら、起動スクリプト辺りに設定例が載ってたりもする。
0069デフォルトの名無しさん
2011/09/22(木) 14:09:09.52メモリ不足だけど一般的なヒープ領域じゃなくて、
クラスやメソッドの情報が置いてある特別な領域。
JSPとかで実行時にバイトコード生成しまくると足りなくなる。
007067
2011/09/22(木) 14:22:46.63>>67
はい、アプリケーションサーバーです。趣味でjavaでゲームサイトを作成しています。
1stレンタルサーバーを使っていますが起動スクリプト設定について調べてみます!
>>69
バイトコード生成しまくるとですか。
jspは多用していますが、もっと不必要なコードは無くした方がいいと言うことですか?
System.out.println(Runtime.getRuntime().freeMemory());を書いて
メモリを見て見ましたが、同じJSPページを開くたびにメモリが減っていきます
JSP開く前 78500536
JSP開いた後 77765592
ガベージコレクションの対象にはならないのでしょうか
007167
2011/09/22(木) 15:38:33.47export CATALINA_OPTS="-server -Xmx1280m -Xms640m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=128m"
を書いたらエラーが無くなり表示できました。
本当にありがとうございました。正直死ぬかと思いました
0073デフォルトの名無しさん
2011/09/22(木) 17:34:05.790074デフォルトの名無しさん
2011/09/22(木) 18:05:50.97こんなとこで聞かずに入手元に聞けよ
0075デフォルトの名無しさん
2011/09/22(木) 19:15:30.10よろしくお願いします。
0076デフォルトの名無しさん
2011/09/22(木) 19:23:51.54double Math.pow(double, double)ではdoubleなので不満です。
long Math.pow(long, long)みたいなものはないのでしょうか?
0077デフォルトの名無しさん
2011/09/22(木) 19:30:44.26http://commons.apache.org/math/api-2.2/org/apache/commons/math/util/MathUtils.html#pow(long, long)
0078デフォルトの名無しさん
2011/09/22(木) 19:36:44.880079デフォルトの名無しさん
2011/09/22(木) 20:31:07.10http://java.sun.com/javase/ja/6/docs/ja/api/java/math/BigDecimal.html
0080デフォルトの名無しさん
2011/09/22(木) 20:49:21.07整数同士の累乗ぐらい自力で書けよぉ
0081デフォルトの名無しさん
2011/09/22(木) 21:11:07.34Javaでの最大勢力を知りたい。
0082デフォルトの名無しさん
2011/09/22(木) 21:15:24.13http://www.oracle.com/technetwork/java/codeconventions-136091.html
個人的は2スペース
0083デフォルトの名無しさん
2011/09/22(木) 21:35:58.820084デフォルトの名無しさん
2011/09/22(木) 21:36:41.510085デフォルトの名無しさん
2011/09/22(木) 21:38:12.340086デフォルトの名無しさん
2011/09/22(木) 21:39:02.89aiに興味があるのでaiを使ったjavaのゲームなんかを作りたいのですが、トランプやオセロくらいしか思いつかなかったのですが
javaで作れそうなものでaiを使ったゲームって何かありませんか?
0087デフォルトの名無しさん
2011/09/22(木) 21:41:37.69おなじ会社にいるなら関係ない
すぐやめてあっちこっち転職するなら意味あるかな
0088デフォルトの名無しさん
2011/09/22(木) 22:24:16.24could not open session org.omg.CORBA.COMM_FAILURE : java.net.ConnectException:
Connection refused
のようなエラーが出て接続できない。ちなみにDIIOPサービスもHTTPサービスもあがっている
数日前まで普通に接続できていたのになぜか業者がnote.iniの設定を(クラスターがらみ)
加えた後から接続できなくなった。マイナーなノーツとJava関係だけど、知っている人いたら
教えてください。_(_ _)_
0089デフォルトの名無しさん
2011/09/22(木) 23:10:22.73会社によっては手当てがついた事もある。今はどうか知らん。
0090デフォルトの名無しさん
2011/09/22(木) 23:28:23.59可愛い後輩がネスト大好き病にかかるとかわいそうなので、
新人教育では8スペースをインデント単位にしてる。16でもいいと思っているぞ
0091デフォルトの名無しさん
2011/09/22(木) 23:54:55.830092デフォルトの名無しさん
2011/09/23(金) 00:01:44.57ClassCastException occured : java.lang.String cannot be cast to java.lang.Integer
というエラーが起きてしまいます。
numはintで定義しているのですが、原因わかりますか?
0093デフォルトの名無しさん
2011/09/23(金) 00:10:15.630094デフォルトの名無しさん
2011/09/23(金) 00:11:09.190095デフォルトの名無しさん
2011/09/23(金) 01:12:40.91おまえにあたる後輩がかわいそう
0096デフォルトの名無しさん
2011/09/23(金) 01:23:06.16今までに無いゲームを新しく作り出してくれるソフト。
若しくはai作成のゲームの面白さを競うゲーム。
0097デフォルトの名無しさん
2011/09/23(金) 01:26:48.78という事をやろうとした時に、検索エンジンをどう常駐化させるのが良いと思いますか?
Java Service Wrapperを使って常駐プロセス化するか
そうするとプロセス間通信が必要になりプラットフォームに依存するんじゃないか
あるいはWEBフレームワークにそういう機能が無いか探してみるか
(常駐させたいオブジェクトを登録できるような)
0098デフォルトの名無しさん
2011/09/23(金) 01:29:14.23それからだ
009997
2011/09/23(金) 01:37:21.00JSW+ODBCならプラットフォームに依存せずに書けそう
ただ他のアプリケーションから利用されるものではないから別段常駐プロセス化する必要は無い
使用するWEBフレームワークはまだ決めていないので
主要なフレームワークで、各アクセスでオブジェクトを共有する機能があればいいんだけど
010097
2011/09/23(金) 01:51:37.631つのWEBコンテナ内で1つのインスタンスしか作られないのかな?
staticメンバの初期化がどのタイミングで行われるのかが分からない。
Webコンテナの役割が分かってない。
0101デフォルトの名無しさん
2011/09/23(金) 02:24:23.53「ObjectOriented を理解している」と周囲にアピールすることはできませんかね?
■ このスレッドは過去ログ倉庫に格納されています