4 :
1 :2011/01/25(火) 03:16:35
テンプレのうち、Eclipseスレに問題があったので訂正。 dat落ちしていたスレッドは、新しいスレッドに置換した。 前スレはP2ユーザーがp2からブラウザでスレを立てた影響で余計な(p)記号があったので消した。 またサブドメインが古いpc12からhibariに変更されたのでそれに伴いURLも変更。 スレ立ては以上。
質問させて下さい。スレ違いでしたらすみません。 tomcat6.0.29を、jdkを、sunの1.6.0_22を使っていました。 今回、同1.6.0_23にしたところ、tomcatの動作には問題ないのですが、jstatで情報が取れなくなりました。 jpsでも該当プロセスが出て来ません。 これはアップデートの際の何かの仕様変更による想定通りなのでしょうか? それとも不具合なのでしょうか?
>>5 JDKをアップデートしたら使えなくなった?
JAVA_HOMEの設定変えてないとか、ではないよな?
>>6 シンボリックリンクの張り替えでバージョン切り替えているので、
パスにおける差異は発生してません。
Apacheと連動させている?
はい、8080は起動せずに8009でajpで連携してます。 tomcat側は今まで取得していた状態から変更はしていません。 ただ、使用するjdkが置き換わっているのみです。 jsvcでの起動を疑ってjsvcを使わないようにしてみましたが結果変わらず。 jdkが_22であれば、jsvcの有無を問わずに正常にjpsもjstatも結果が返ります。
Javaをダウンロードした後でchecksumとかした?
String に入った文字列を nateve2ascii みたいに \uXXXX 形式に変換する方法を教えてください。 1文字ずつ、自力で変換しないとダメですか?
12 :
5 :2011/01/25(火) 22:05:12
ID出ないのを失念してました。
5=7=9です。
>>10 すみません、jdkはハッシュを確認していません。
というか比較すべきハッシュ値がどこにあるか判ってませんでした。
※tomcatなんかは、ダウンロードするすぐ側にあるので判るのですが…。
ダウンロードしているのは jdk-6u23-linux-i586.bin です。
なお、二つの全く異なる環境で同様の事象が起きており、
片方は11/17にダウンロードしたjdk、もう片方は本日ダウンロードしたjdkです。
※どちらもバージョンは一緒で、双方のハッシュはmd5にて同値である事を確認。
13 :
デフォルトの名無しさん :2011/01/25(火) 23:44:40
アプレット上にパネルを2つ置きました。 1つ目はセルに分割し、各セルにボタンを配置しボタンをクリックすると各セルのボタンの色が変わりもう1度押すと元の色に戻るプログラムを入れました。 2つ目のパネルではある計算を実行し、計算結果を出力する画面を作りました。 そこでなんですが、一つ目のパネルで色が変わったセルの位置を2つめのパネルの計算結果に反映させるにはどうしたらいいのでしょうか?
色を変えたタイミングでアプレットに位置情報を保存する
15 :
13 :2011/01/26(水) 00:42:36
class Clickcell implements ActionListener{ public void actionPerformed( ActionEvent evt ){ Cell cellx = (Cell)evt.getSource(); if( cellx.status == 0 ){ cellx.status = 1; cellx.setBackground( new Color(85,136,136)); } else { cellx.status = 0; cellx.setBackground( new Color(185,236,236)); } } 色を変えるクラスはこれなんですが、どのようにして位置情報を保存すればいいんですか?
・Observerパターンにする ・通知先への参照を持つ(例えばClickcellのコンストラクタに渡す) ・evt経由 ・そんだけのコードならClickcellをやめて 親クラスで、匿名クラス経由でactionPerformedを作成し、Parentclass.thisを使って処理 多分どれかで何とかなる
17 :
13 :2011/01/26(水) 00:54:59
やってみます。ありがとうございます
18 :
13 :2011/01/26(水) 01:28:35
どれをググッてみてもいまいち書き方がわかりません。 もしよろしければどれか1つでもいいので詳しく書いていただけないでしょうか?
2番目のやつ。P直下のパネルにCellが無ければパネル経由で委譲する public class P extends JFrame{ /* パネルとか色々。略 */ private HashMap<Clickcell,Integer> m; public void setpos(Integer x,int pos){ m.put(x,pos); } /* 略 */ } class Clickcell implements ActionListener{ private P parent; private int pos; public Clickcell(P p,int pos){parent=p;this.pos=pos;} public void actionPerformed( ActionEvent evt ){ /* 略 */ if( cellx.status == 0 ){ p.setpos(this,pos); }else{ /* p.resetpos(this,pos); 以下略 */}}
Cがわかっていて、一からJavaを始める人におすすめの本を教えてください。 オブジェクト指向の説明が濃いものが良いです。
Cが”本当に”分かってるなら立ち読みすりゃ自分で選べる。
GCJの方バイナリに出来たりしてよくないですか?
よくなくないです
入門サイトに書いてあったサンプルを実行したところ Exception in thread "main" java.lang.NoSuchMethodError: mainと表示されました コンパイルもきちんと出来ているのですが何が原因なのでしょうか? 下がそのサンプルです class Counter{ int num; void init(){ num = 0; } void count(){ num = num + 1; } void printNum(){ System.out.println(num); } }
>>24 no = 無い
such = その
method = メソッド
エラーメッセージでググることもできんのかお前は
1を読まないのが原因だと思うよ
XMLの読みも書きも必要なんだけど どっちも半端じゃないサイズ(数百メガ〜ギガ単位)が必要な時 XMLパーサは何を使って実装すればいいですか。
その前にンなデカいもん作らない方法を考えろ
29 :
デフォルトの名無しさん :2011/01/27(木) 00:00:10
>>27 パーサを作りたいのか内部でパーサを使ったライブラリを作りたいのかしらんが
ひと通りの仕様を満たしてて早くてフットプリントが小さい必要があるならpiccoloあたり。
組み込みとかでそれより小さくしたいなら要件に合わせて既存のライブラリ修正か手書き。
全部入りがほしいいなら手書き一択。
標準ライブラリを使いたくないって理由以外ならJAXPで事足りるんじゃないか?
色々あるからまあググれ。
30 :
デフォルトの名無しさん :2011/01/27(木) 01:43:09
interfaceにメソッドを追加して、でも実装クラスの中で1つだけ異なる引数にしたい場合 設計的にどうするのがいいんでしょうか いくつかの製品モデルがあったとして 製品A.create(Arg1 arg1) 製品B.create(Arg1 arg1, Arg2 arg2) というような形になる場合、 interface 製品 にcreate()を書くにはどうすればいいのかなと Arg1+Arg2を持った新たなクラスを作る、とか?
31 :
デフォルトの名無しさん :2011/01/27(木) 02:11:51
1つのinterface内でパッケージプライベートなメソッドとそうでないメソッドを定義したい場合はどう書けばいいですか?
>>30 public void create(Arg1 ... arg1)でどう?
ただ引数を一緒にする方がよい気がするけどね。
33 :
32 :2011/01/27(木) 06:25:47
>>30 あ、すまん。よく見てなかった。
Arg1クラスとArg2クラスなのか。そしたら(Object ... arg1)か、さらに微妙。。。
public void create(ProductCreateContext context);
public ProductCreateContext getCreateContext();
static interface ProductCreateContext{
public Arg1 getArg1();
public Arg2 getArg2();
}
みたいにしといけば、
製品A.create(new ProductCreateContext(){
public Arg1(){
});
34 :
32 :2011/01/27(木) 06:29:27
送信してしまった。。 後半はこう書きたかった。 製品A.create(new ProductCreateContext(){ public getArg1(){ return local_arg1; } public getArg2(){ return local_arg2; //必要に応じて } });
35 :
デフォルトの名無しさん :2011/01/27(木) 06:34:42
オブジェクトのコピーを簡単に行う方法はありますか? 配列ならSystem.arraycopy()というのがありますがオブジェクト一般に行いたいです。 コピー元、コピー先は同じ型で既存のオブジェクトです。 clone()はコピー先オブジェクトを指定出来なくて新たなインスタンスを作ってしまうようなので求めているものとは違います。
36 :
デフォルトの名無しさん :2011/01/27(木) 06:39:10
javaでclassファイルを「計算」と「描画」の2つに分けて「描画」側でアプレットで表示させるプログラムを作った場合 計算 f=new 計算(); で「計算」の中の関数を「描画」内でfで呼び出せると思うんですが 「描画」内の関数を「計算」で呼び出すときに同じように書くとjavaがアプレット上で空回りし続けてエラーになってしまいます。 どう対策すればよいですか?
>>36 たぶん設計がおかしい
よくあるMVCのパターンで描画=V、計算=Mになるはずで、
計算から描画を参照するのはおかしい
日語可以アルヨ!
39 :
デフォルトの名無しさん :2011/01/27(木) 06:57:12
>>37 この場合描画のほうでMouseListenerから取得した値を計算に送ることはできないということですか?
>>39 そういう場合はListenerがCになる
普通、MからVを参照するコードは一切発生しない
CがMのメソッドを呼び出す事はある
VもMのメソッドを呼び出さない
ListenerとかCのみがMを参照する
41 :
デフォルトの名無しさん :2011/01/27(木) 07:16:30
>>40 何度もすいません。。。
つまりclassファイルとしてもうひとつリスナーファイルを作るのが正しいってことですか?
まあその手の問題は、 MVC+イベント+リスナーを使って、 MのほうでPropertyChangedEventを発生させて、 Mの生成時にCをAddListener()していけば大体解決する。 たぶん、MからVのコードを呼び出したいって Mの状態が変わったときに再描画したいとかだろ?
43 :
デフォルトの名無しさん :2011/01/27(木) 09:02:31
>>42 PropertyChangeEventになるとちょっとわからないことだらけになりますね。。。
基本的には「描画」のMouseListenerほうで取得した座標を「計算」で初期値として扱って計算して
「描画」で再描画したいっていう形ですね。
MouseListner使えば結構あっさりできると思ったんですけど。。。^^;
>>43 MouseListenerでV>Cの流れをやって、
C>Mでモデルにマウス座標を与えて、
Mで再計算された結果を保持しとくフィールドのsetter()でPropertyChangeEventを投げて、
それを見てVが再描画するって話
「座標受け取り」「計算」「再描画」まで手続き的にやりたいのかもしれないけど
この3つの間は全てイベントで繋ぐって話
すみません。 今までマイクロソフトの.netばかり触ってきてたのですが ここにきてJavaの方へ移行しました。 周りにもJavaを扱った人は少なく、周りに聞いてもダメでした。 どなたか情報をいただけたら助かりますm(__)m 最終的に行いたいのはASP.NETのWebサービスをJavaから呼び出す(実行する)です。 ネットで情報を検索し、apache axisを使用してWSDLファイルからJavaファイルを作成 すればよさそうな感じだったのですが 「WSDLファイルからJavaファイルを作成」 の部分がどうやってもうまくいきません・・(WSDLファイルの作成は出来てます) 原因としてはJava環境の作成に失敗していると思うので一旦、整理をしたいと思ってます。 そこでまず、Javaの複数の開発ツールが入った状態になってしまっていると思うのでそのあたりを整理した方がよいのか それとも現在の状況から何とかできるのか・・そのあたりから教えていただけたら助かりますm(__)m (現在の環境をわかる範囲で↓で書きます。)
OS:WindowsVista Javaのインストール状況 ProgramFilesの下に ・Java\jdk1.6.0_23 ・Java\jre1.6.0_03 ・Java\jre6 ・Jrail5 とフォルダが出来てます。(まずはここから問題な気がしてます・・) 環境変数には JAVA_HOME・・ユーザー、システムともに作成されてます。値は両方Java\jre6になってます。 システム環境変数のPATHにはJava関連のものは見当たりません・・(関係ない?) 以上です。まずは環境としてはどうでしょうか?
47 :
デフォルトの名無しさん :2011/01/27(木) 10:01:42
>>44 細かく教えていただいてありがとうございます。とりあえずPropertyChangeEventから勉強しようと思います。
48 :
46 :2011/01/27(木) 10:10:52
axisは ・axis2-1.1.1-RC1 ・axis-1_4 の両方を入れてみたのですがいろいろやってみて両方とも動きませんでした。 実行したときの環境はコマンドプロンプトで C:\axis2-1.1.1-RC1\bin\wsdl2java.bat -uri "wsdlファイルのフルパス" 等をネットで調べながらやりました。 その時に大抵、Exception in thread "main" org.apache.axis2.wsdl.codegen等のエラーが出てファイルは作成されませんでした;;
環境変数AXIS2_HOMEは定義したの?
AXIS2_CLASS_PATHは定義した?
51 :
46 :2011/01/27(木) 11:21:06
>>49 C:\axis2-1.1.1-RC1\bin\wsdl2java.batの実行時に
batファイルの中身を見て
set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_23
set AXIS2_HOME=C:\axis2-1.1.1-RC1
を先頭に追加して実行しました。
>>50 AXIS2_CLASS_PATHはやった記憶がありません・・
javaやってる人でmsに興味ある人など一人もいない .netスレでjavaに詳しい人に聞け
.netと関係なくね?
54 :
46 :2011/01/27(木) 11:54:58
>>52 そうですよね・・
自分は.netのほうが経験が長いのであまりに場違いなようでしたらそちらに移動します・・
55 :
デフォルトの名無しさん :2011/01/27(木) 13:12:42
JSliderで変数を設定したいんだがどうすればいいんですか?
57 :
46 :2011/01/27(木) 14:14:56
>>56 ほんとだ!!!!!!!!
出来ました!!!!
これで一歩進めることが出来ました。本当にありがとうございました。m(__)m
結局、何か違うとしたらaxis2-1.5.4にして、URLに書いてある通り、outオプションが付いたぐらいですね。
助かりました。ありがとうございました。
ズコー
正しいも正しくないもない。 動く作り方は無数にあって、ただお前のがそのどれでもないだけだ。
61 :
60 :2011/01/27(木) 17:08:55
すまん間違って書き込みしちまった
>>12 Linuxか。どこのディストリビューション?
もしかしてだが、Tomcatもyum経由でインストール?
もしかしてもしかしてだが、which javaってやるとどうなるよw
文字列変換で、漢数字、全角数字を半角数字に変換したいのだが 文字列.replaceAll("[0123456789]", "[0123456789]"); 文字列.replaceAll("[零一ニ三四五六七ハ九]", "[0123456789]"); ↑な感じで描いてみたら↓な風に変換されてしまいました 1 → 0123456789 零 → 0123456789 1個ずつ地道に変換するしかないでしょうか?
>>54 つかAXISじゃなくても、標準でついてるwsimportでもいけるよ。
wsimportの方が設定とか楽だよ。設定というかコマンドだけだし。
66 :
65 :2011/01/27(木) 21:25:46
あら、解決してたか。すまん。 そしておめでとうございます。
eclipse重いと思ってたけど自宅のPCだと3秒で起動するw 会社のPC糞すぎww
eclipseと大して変わらんRADがなんであんな高価なん 何か違うん?
サポートありか、ナシか。つまり人件費・・・じゃない? PC部品屋のメモリーだってサポートあり、ナシの値段両方あるし。
eclipseもVisualStudioと比べたら動作というか仕様自体がもっさり
もっさりした仕様ってどんなのだろう?
もっさりはsandy bridgeが解決してくれることがわかった。
そんなキモイの使うなよ
middlegenでO/Rマッパー出力して、メソッド追加したりjavadoc書いたりして、 またmiddlegenで出力しなおすと上書きされますよね? 直接O/Rマッパーを編集すべきじゃないんですか? 継承したり、委譲したクラスを作ってやるべき?
77 :
デフォルトの名無しさん :2011/01/29(土) 07:30:14
C言語なら、 int* test1; char* test2 = (char*)test1; とか配列の参照をキャストできるのに、javaでは byte[] test1; long[] test2 = (long[])test1; と書けませんよね? なぜですか?
>>77 java.nio.ByteBuffer#asLongBuffer()使え
79 :
12 :2011/01/29(土) 15:05:21
>>59 使用しているjavaのバージョンが不明ですが、日本語資料が全然更新されていないだけです。
6以降でエルゴノミクスも大分変わっています。
81 :
デフォルトの名無しさん :2011/01/29(土) 19:43:32
javaに無料のオブジェクトデータベースってありますか?
「明解Java 入門編」という本で独学で勉強しているのですが、以下のプログラムをコンパイル しても、エラーになってしまいます。自分では何度も確認したのですが、どこが間違っているのかわかりません。 import java.util.Scanner; class ArithInt{ public static void main(String[] args){ Scanner stdIn = new Scanner(System.in); System.out.println("xとyを加減乗除します。"); System.out.print("xの値:"); int x = stdIn.nextInt(); System.out.print("yの値:"); int y = stdIn.nextInt(); System.out.println("x + y =" + (x + y)); System.out.println("x - y =" + (x - y)); System.out.println("x * y =" + (x * y)); System.out.println("x / y =" + (x / y)); System.out.println("x % y =" + (x % y)); } }
>>82 をコンパイルしようとすると、以下のような文章が出てきます・・・
ArithInt.java:1: シンボルを解決できません。
シンボル: クラス Scanner
場所 : util の パッケージ
import java.util.Scanner;
^
ArithInt.java:6: シンボルを解決できません。
シンボル: クラス Scanner
場所 : ArithInt の クラス
Scanner stdIn = new Scanner(System.in);
^
ArithInt.java:6: シンボルを解決できません。
シンボル: クラス Scanner
場所 : ArithInt の クラス
Scanner stdIn = new Scanner(System.in);
^
エラー 3 個
>>82 java.util.Scanner がないって事は 1.5以降じゃないのか
javac -J-version でバージョン確認したら?
そのコードをコピペしたら普通に動いた 環境設定が変とか
>>75 は流行に振り回されて結局何の成果も残せないタイプだな
モバグリやスマホ向けのソーシャルアプリ(笑)とか作ってそう
jQuery、Ajax、クラウド(爆笑
一昔前は某広告代理店に乗せられてセカンドライフ(核爆
に手を出してただろ?
87 :
デフォルトの名無しさん :2011/01/29(土) 22:31:02
だろ?
>>84 調べてみたら
java version "1.4.2_16"と表示されました
>>88 oracleのサイトから最新のJDKをダウンロード
>>89 サイトへ行ってダウンロードしたので解決しました
お騒がせしました^^
あれ?なんでsunじゃなくてoracleなん?
買収されたよ
いつの話をしてるんだ
な、なんだってー!
初めまして 質問させてください。 現在JAVAを用いてMySQLを操作していて、データにSelect文をかけて その結果の表をeclipseのコンソール画面に表示したいのですがうまくいきません。 一旦Select結果をresultsetに格納し、rs.next()で回して一件ずつ表示するという方法で 表示していたのですが、「これだとデータが膨大になった時にとても遅くなる」と怒られました。 なのでselect結果をそのまま表示する方法を探しています。 どなたか御助力いただけると嬉しいです。
回す以外の方法はない。 select文を見直せという意味でなければ、 その怒った奴が阿呆。 もしくは、メインの処理とは別に コンソールにログ的に表示してるんなら、 使い方が間違っている。
別スレッドで処理させろという意味かも… なわけないか。
質問です jdk6を使っているのですが HTMLのoptionタグの様なUIを作る時は何というクラスを使えば良いのでしょうか? ラジオボタンやチェックリスト、スクロールは見つける事が出来たんですけど これが見つかりません
Oracle+Pro*Cのときとか一括で取得する方法あったような気が するけどそんなのかな
昭和の人(オオワラ
>>95 一般的なWebアプリケーションもforEachループで回すんだけどな…
数が多いと遅くなるのは当たり前で、大抵はページング処理して
件数を分割して高速に表示されるように考慮する
「ページング処理しろ」って意味じゃないのか?
>>95 その部分を示す模擬的なコードを出せ
エスパーすると、ループの中で1行1行プリントするんじゃなくて
1つのStringにまとめてから1度にプリントしろ
チャットの発言がある度にMySQLに接続してレコードの追加をするプログラム作ってるんだが、 このプログラム単体(接続とレコード登録のみに絞った)だと正常に動くんだけど ソケット接続を含めたチャット機能を加えたら、JDBCドライバーが見つからないエラーになる ソケット接続とDB接続って同時にできないのですか?
そんなことはない
じゃあチャットに問題があるのでしょうか エスパー希望 コンパイルは通るけど、発言ある度にコンソールにエラー吐き出す 発言がある度にじゃなく、起動時にDB接続するようにしてもnotfoundになります・・・
コネクションクローズせずに再度コネクション取得しようとして、接続上限に達したとか
112 :
110 :2011/01/30(日) 21:46:05
NetBeans使ってたのでドライバのjar通す設定を忘れてました。すんません。 答えてくれた方々どうもありがとうございました。
メソッドの返り値を利用する場合に、呼び出し先のメソッドのプリミティブ型じゃない参照型のローカル変数を返して、 呼び出し元の変数に代入する場合ってローカル変数は破棄されないんでしょうか?Cではstaticを使うみたいなのをみたんですが。。。 一応例を public static void main(String args[]){ String str; str=s(); } public static String s(){ String t="aaa"; return t; } よろしくお願いします。
>>113 例のtやstrはCで言うポインター変数。
ポインター変数が破棄されたからといって
それが指す領域は破棄されないでしょ。
JAVAで、ヤフーファイナンスから日経平均の株価の数字だけを自動で取得したい場合 URLからHTMLを解析して、正規表現などをつかって抽出する方法が一般的なのでしょうか? 現在URLからのHTML取得や、文字列の抽出はできるようになったのですが、 HTML取得→文字列抽出までを同時に実行しようとする所でどうすればよいかわからず 行き詰っています。 何か株価抽出に関してヒントや勉強したほうがいい箇所などありましたら ご教授お願いいたします。
ヤフーはhtmlじゃなくてcsvで返してくれる機能あるぞ。少なくともアメリカのは。肝心のURLは忘れたけどな
>>115 プログラムとは関係ない文章中でも、全角大文字を平気で使うプログラマは信用されないぞ
あとhtmlパーサを使え Javaなら沢山あるだろ Jsoupとかがいいんじゃないか
あと分かっていると思うが、スクレイピングするなら合法的な範囲でやれよ 日経平均の更新間隔はどこのサイトも15分程度だから 最初に取得した時にmemcachedか何かに15分後の時刻と値を記録しておいて、 次回アクセス時はその時刻を確認した上で取りに行くようにしないと 自分のサイトにアクセスが集中した時にパクリ側に拒否られる可能性がある
自分のサイトとかどこから出てきたの?
割合的にJavaってWebアプリケーション開発に使われることのほうが 多いから決め打ちで書いただけだよ
皆様いろいろなご意見ありがとうございます。 自分専用に株価のGUIアプリをつくっているので、そこで使う予定でいます。 ありがとうございました。
指定したURLのページのタイトルを取得するには 何が一番処理効率が良いでしょうか? あと、指定したページがHTMLかXMLなどを判断するには getContentType()で判断するしかないでしょうか?
HadoopでAppletを実装したいのですが、具体的な実装方法?がわかりません。 一応ソース書いてコンパイルして、エラー無くして実行(Appletviewer)したのですが、エラーがでます。 java.lang.NoClassDefFoundError :org/opache/hadoop/fs/FSDataInputStream ... といった感じです。FSDataInputStreamのクラスが無いと言われても・・・。 hadoopのバージョンは0.21.0です。 色々無知なので沢山指摘してもらえると助かります。よろしくお願いします
別クラス作ってやったら初期化うまくいって実行できました。いじるとエラーがでますが・・。 ご迷惑おかけしました。
Javaで簡単に特定のメソッドのベンチマークを取る方法とかないの? main()だけでもいいんだけど eclipseのプラグインとかでないのかな
-Xprofとかjconsoleとか。何を調べたいのかにもよるけど。
128 :
デフォルトの名無しさん :2011/02/01(火) 17:58:29
だね
129 :
デフォルトの名無しさん :2011/02/01(火) 20:03:37
Java-aって半年前からまだバージョン変わってない?
130 :
デフォルトの名無しさん :2011/02/01(火) 20:27:48
Javaーaって半年前からバージョン変わってない?
javaでDBMS_PIPEを使いたいのですが、可能ですか?? 出来れば使うときの環境とか、 簡単なサンプルソースとかあれば教えてほしいのですが。。。 お願いします。
Macのコマンドライン上でJava PathFinderを導入したのですが、実行の仕方がよく分かりません .javaや.classを動かすにはどうすればいいでしょうか?
これはひどい
134 :
デフォルトの名無しさん :2011/02/02(水) 18:47:32
例外発生後に通常の処理に戻す方法ってありますか? 以下の2つのケースで、1つ目は"test"は出力されず、2つ目はreturnした後に通常処理になる、 という理解で合っていますか? try{ }catch(SomeException e){ } System.out.println("test"); try{ }catch(SomeException e){ return; }
試してみるべし。return + finallyもやってみたらいい
ジャバーあほだからなんでもキャッチしちゃうよね
137 :
デフォルトの名無しさん :2011/02/02(水) 21:22:45
バージョン代わった?
138 :
デフォルトの名無しさん :2011/02/02(水) 23:05:14
| ____.____ | ||||| | | キャッチ. .│ | _,,..,,,,_ | | ∧_∧ | | / ,' 3 `ヽーっ | |( ・∀・) | | l ⊃ ⌒_つ | |/.⊃━,⊃━━━━━┫ `'ー---‐'''''"┃  ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄ | ┗━━━━━┛ | | | ____.____ | | | アンド リリース . | | | ∧_∧ | | | |( *・∀・).| | ┏━━━━━┓ | |/.⊃━,⊃━━━━━┫ .┃  ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄ | ||||| | _,,..,,,,_ | / ,' 3 `ヽーっ l ⊃ ⌒_つ `'ー---‐'''''"
try{ }catch(Exception e){ } javaの定石
二元配列で質問なんですが String Name [][]={ {"hoge"},{"hogehoge"}}; System.out.println (Name[1]); これだとエラーになるはずなのにコンパイルが通って 実行してみると Ljava.lang.String;@1a758cb と出ます。何なんでしょう
なんでエラーになるはずと思った?
>>140 すべての参照型には toString() ってメソッドがあってだな……
自作MMO作ってます 1. クライアントSocket → サーバ(固定IP)+ポートServerSocket 2. サーバ? → クライアント?+ポート 2の実装なのですが クライアントが1を使ってサーバに対するポーリングを行う以外の方法は何かありませんか? 何が聞きたいかというと、サーバからクライアントに対してコネクションできないですよね? ネットワーク全然わからん・・・ぼすけて
サーバーからクライアントにつなぐ必要ないじゃん
言葉足らずだった・・svchostをjavaからいじいじできないかなって意味でした サーバの状態変化をリアルタイムでクライアントに送信したいのです・・・ ポーリングさせると、サーバトランザクションがすごいことになりそうなのです><
1のソケットをつなぎっぱなしにしておけばいつでも送信できる
回答ありがとうございます 1.フィードバック用ソケットをクライアントに持たせる 2.readさせ、応答があるまでブロック こんな感じでいけそうです。ありがとうございました
KeyListenerをJPanelにつかって KeyEvent::getKeyChar()は文字が取れて KeyEvent::getKeyCode()をつかうと常に0になるのですが 思い当たることはありませんか? 理解不能です><
keyTypedの時のみで keyPressedやkeyReleasedだと0以外の値が取れました・・・ 心霊現象?w
日本語文字の入力を考えるとわかると思うが 文字が入力されたタイミングとキーが押されたタイミングは別
レスサンクス リファクタリングしてたらその状況になったのです・・・ keyTypedでもgetKeyCode()にキーコードは入ってたので さらにこのメソッドにやる気が感じられません public boolean requestFocusInWindow() 100%javaで行きたかったけどDirectInput使うことになる悪寒・・ イベントキューに突っ込む方法とかもあったけど、意外とつらいswing
JavaのGUIフレームワークは総じて糞。
フォーカスとかリスナーに不満はあるけど さくさく書けるよ? ImageIconとかストリームで流すのとか1行でかけちゃうし もう少し完成度がほしかったってのが心情 軽量クライアントでJWS使って毎度読み込ませても軽快だろうと妄想していたんだ さっきまで・・
無限ループ+Thread.sleep()と、Timer+TimerTaskとで、パフォーマンスの差ってそんなにないよな? 後、Runnable.run()内で変更される、外から引数で渡されるList(Map)ってsynchronized必要?
>>154 そりゃListやMapの実装によるでしょう。
無限ループでやるほうはただのHashMapでいいけど タイマータスクに持たせていじいじするなら シンクロブロック無しのコンカレントハッシュマップがおぬぬめ コンカレントのほう使う場合はvaluにnull渡せないから注意ね ときにpublic boolean requestFocusInWindow()なんだけど 一回ウインドウ自体からフォーカスはずすと有効になる謎動作なんだけど どうにかならんかね・・・イベントキューに突っ込む以外に方法が見当たらん・・
ぽまえら助けて...(;´Д`) 日時が、 2011-02-04T00:43:27.134501Z 形式(GMT)でくるんだけど、 SimpleDateFormat svnFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'"); svnFormat.setTimeZone(TimeZone.getTimeZone("GMT")); Date date = svnFormat.parse(element.getElementsByTagName("date").item(0).getTextContent()); で取得したときには、 date.getHours() → 9 ※ローカルのタイムゾーンが+9hなのはわかる date.getMinutes() → 45 ※!? date.getSeconds() → 41 ※!? this.date = new SimpleDateFormat(yyyy/MM/dd HH:mm:ss).format(date) → 2011/02/04 09:45:41 になっちゃう... なんでーーーーーーー!? ちなみに、 TimeZone.getDefault() の結果は、 [id="Asia/Tokyo",offset=32400000,dstSavings=0,useDaylight=false,transitions=10,lastRule=null] でつ。 よろしく頼むぜ!!
時計ズレてんじゃね?
あ、ごめん、 Date date = svnFormat.parse("2011-02-04T00:43:27.134501Z");
フォーマット間違っているんじゃないの
SSSSSS はミリ秒らしいから、 134501 ミリ秒 = 134秒+501ミリ秒 = 2分+14秒+501ミリ秒 で、43:27 に加算すると 45:41.501 と思われ マイクロ秒はどうすりゃいいんだろうね? あきらめて正規表現で解析したら?
162 :
デフォルトの名無しさん :2011/02/04(金) 11:29:29
Date型の、 getYear() getMonth() getDay() などのメソッドを使おうとしたら、deprecationの警告が出ました。 これらが非奨励なら、代わりに何を使うのが適切ですか? 代わりとなるメソッドは見当たらなかったんですが
>>162 Calendar の get を使ってください
>>161 うおおおおおおおおおおおおお!!!!!!
あんたすげぇ!!
マジすげぇよ!!!
俺は今、
>>161 神のおかげで満面の笑みで華麗にコミットしたぜ!!!
ありがとう!!!
変な質問だと思うんですけど JDKでコンパイルして作られたファイルはexeファイルのようにダブルクリックで起動するようには出来ないですか?
jarにすれば?
exeファイルにすることが出来る、GCJを使用して。
.jarを実行するexeを作るのが正解
>>168 それすっと汎用的でいいよね
めんどっちいからBATファイルから起動してるけど
javaのランタイムまで含められれば良いんだけどね。 有償のやつしかしらんけど今なら無償でもあるのかな?
exewrapperはどうだっけ?
javaw -jar hoge.jar %1 こんなバッチファイル作れば関連付け実行とか、送るもできる jarファイルダブルクリックで実行出来るのに、送るとか関連付け出来なくて仕方なくexe作ったけど こんなの使うぐらいならBATでいいやと思ってしまった
HTTP1.0だと問題ないんですがHTTP1.1だとString line = reader.readLine();のところで固まってしまうことがあります。 www.yahoo.co.jpでは大丈夫でした。こういう場合の適切な書き方はどのようなものなんでしょうか? private static void httptest() { String host = "www.google.co.jp"; int port = 80; String path = "/"; Socket socket; BufferedWriter writer; BufferedReader reader; try { socket = new Socket(host, port); writer = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream())); writer.write("GET " + path + " HTTP/1.1\r\n"); writer.write("Host: " + host + ":" + port + "\r\n\r\n"); writer.flush(); reader = new BufferedReader(new InputStreamReader( socket.getInputStream(), "UTF-8")); while (true) { String line = reader.readLine(); if (line == null) { break; } System.out.println(line); } reader.close(); writer.close(); socket.close(); } catch (Exception e) { } System.out.println("finish."); }
>>173 HTTP/1.1 では Connection: close を付けていなければ persistent connection になりますので、次のリクエストを待っている状態です
次のリクエストがあればそれを送ってください
次のリクエストがなければ自分でクローズしてください
最初のレスポンスの終わりがどこかは Transfer-Encoding や Content-Length を見て判断する必要があります
面倒ならリクエストに Connection: close を付ければいいです
>>174 なるほど!
できました。ありがとうございます。
今更だけどHttpConnectionのAPIさらっと見ておくといいかも 泥臭いコーディングしなくていいよ
クラス名間違えてた・・・ java.net.HttpURLConnection これが正解 とってもスマートに実装できまする
SSLSocket等javax.net.sslパッケージのソースを見たいのですが jdkに付属してくるソースには含まれていないですよね? どこから手に入れられるのでしょうか?
180 :
デフォルトの名無しさん :2011/02/05(土) 12:55:30
JPAとかJDO、特にJDOについてよくわからないんですけど 解説記事とかなにか教えてください
また変な質問なんですけど 自分で作ったクラスのインスタンスを参照する時に そのクラスがフィールドに持つ既存のクラスを参照の対象にする事は出来るのでしょうか? JListの中で自分で作ったクラスのリストを文字列でソートがしたいのですが そのままソートすると"クラス名+謎の数列"の形で参照されてしまいます こう言った場合は大人しくString型等を継承したクラスに作り直すべきですか?
JListにソートの機能はありませんが、ソートは何を使って実行していますか? JListに表示される"クラス名+謎の数列"は自分で作ったクラスにtoString()メソッドを書くと変えることができます。ListCellRendererを実装する方法もあります。 Stringはfinalクラスなので継承できません。
ごめんなさいソートはまだしてません間違えました ソートをするために確認しようとして 無理やりStringとして扱った場合でした Stringは継承出来ないんですね・・・ 試してみましたが確かに出来ませんでした
tomcatについて質問なのですが、 ホストのデフォルトのコンテキストをROOTから別の名前に変更できますでしょうか? プログラムを変更せずに設定ファイル等で変更する方法がありましたら教えていただければと思います。 よろしくお願いします。
server.xmlのサービス name=Catalinaってのをいじいじするといいんじゃないかな 誰もレスしないところを見ると それくらい自分でググれないと、やっていけないぜということなんだろうなぁ・・
JAVAってそれぞれなんの頭文字ですか?
とくに頭文字ではないらしいよ 開発チームが出入りしていた喫茶店の店員のシャツにJAVAって描いてたから とかなんとか
javaって、コーヒーのことだよね
Javaティー
>>185 調べてみましたが違うようです?勘違いでしたらすみません
初歩的なことなのかもしれませんがなかなか見つからずで
具体的には、下記のようにHOSTが設定されている時に、
<Host
name="hoge.com"
appBase="/var/www/hoge.com"
・・・>
</Host>
http://hoge.com/ というURLでアクセスしたい場合、
/var/www/hoge.com/ROOT/
配下にWEB-INFとかもろもろ置くじゃないですか
これをROOTから
/var/www/hoge.com/htdocs/
に変えたいのです
alias設定したらいいんでない?
あ、ごめん、Tomcatか。
193 :
190 :2011/02/06(日) 01:34:49
>>192-192 TomcatのHostのAliasだと、
http://hoge.com/ http://www.hoge.com/ の両方でアクセスしたい時に書くものだと認識してます。
ApacheのAliasは、DocumentRootでは無い、配下の特定のパスに対して、別のディレクトリを指定したい場合に使うと思うんですが、
今回のケースには適用できない気がします。
よくよく調べたらROOTってTomcatのプログラムにハードコーディングされているようですね。
/var/www/hoge.com/htdocs/にコンテキストを配備して、
/var/www/hoge.com/ROOTっていうシンボリックリンクを作ればいけるのかな
浮動小数点の扱いについて質問です。 以下のように0.1を10回足しても1.0にはなりません。 double x = 0d; for (int i = 0; i < 10; i++){ x += 0.1; } System.out.println(x); 調べたらコンピュータ上で浮動小数点を扱う上での制限とのことですが、 Cで同様のプログラムを書くと結果は1.0ですし、 途中結果も0.1, 0.2, 0.3...と(人間の目から見て)正しく表示されます。 なぜでしょうか。
195 :
190 :2011/02/06(日) 02:07:31
実数は小数点以下無限に続くのに、有限のメモリで浮動小数が表せるわけないから Cでも誤差が見えないだけ。1000000ぐらいまでやってみ
197 :
110 :2011/02/06(日) 20:58:53
毎回違った長さの文字列を取得して、TextAreaを使わず画面上に表示するプログラムを作ってるんですが、 画面の右端近くに来たときに自動的に改行されるようにしたいです。 文字列には全、半英数、全かな、半カナ等々入り混じっています。 全かなの文字数で改行条件を作ると、半角文字が混じった場合右にまだ余裕がある状態で改行されてしまいます。 そこで moji_byte = str.getBytes( "Shift_JIS").length; を使って文字列のバイト数を割り出すという方法を知ったんですが、 1バイトを0.5文字として扱って・・・等々いろいろ試しましたがだめでした・・・。 これをどう使えば、半角と全角が混じった状態でも改行の位置が丁度よくなるでしょうか、教えてください。
あ、名前が前のままでしたw 文字列はチャットから送られてくるものです
一般的なアプリケーションはみんな同じ現象起きるような そんな気にする必要ないと思うけどなぁ
>>197 「300pxに収まるところで文字列を分割したい」とかそういう話だね?
java.awt.font パッケージにいろいろあるから全部目を通すのがよろし。
アプレットでデシリアライズすると以下のクラスがないと行って怒られます。 org.apache.xerces.dom.DeferredDocumentImpl 回避方法はあるでしょうか? java.lang.ClassNotFoundException: org.apache.xerces.dom.DeferredDocumentImpl at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at java.io.ObjectInputStream.resolveClass(Unknown Source) at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source) at java.io.ObjectInputStream.readClassDesc(Unknown Source) at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source) at java.io.ObjectInputStream.readObject0(Unknown Source) at java.io.ObjectInputStream.readObject(Unknown Source) at org.apache.commons.lang.SerializationUtils.deserialize(SerializationUtils.java:162)
情報系の専門学校通ってるがまったく授業についていけん 今回の後期試験もJavaで赤点とってレポート書いてる そのレポートについて質問だけど「float f2 = 100.0;」が有効ではない理由って何? ここで今躓いててレポート止まってる
Javaでは小数はdouble型として扱われます つまり 100.0 と書いた時点でこれはdouble型なわけ 実際にはfloat型に収まる範囲なんだけど Javaの決まりで小数はとりあえずdouble型だと決めてしまってるの それを float f2 に代入しようとしてるからそれはだめだよと
おまえは向いてないから諦めろ
てきとーな無料入門サイトの基礎レベルで躓くために親に幾ら学費払わせたんだ?
どうなの?
入門書の第一章だな...親が不憫でならない。
俺、知らんかったわ。floatは使わない、使う必要がないってことだけで。
Javaでも100.0fとか書けるよね?
>>209 書けるよ
2秒で書ける
その2秒すら惜しんで2chに書き込んでる時点で
お前はダメだ
今後何をやってもダメだ
という文章を1分近く使って書き込んでるおれの方がもっとダメだ
時は金なり
212 :
デフォルトの名無しさん :2011/02/08(火) 19:41:46
アプレットでプルダウンメニュー内に@,A,B,CとありBを選択しているときにリセットボタンを押すと表示も同時に@に戻るようにするにはどうすればいいんですか?
始めて設計担当にされたのですが クラス設計についてわかりやすいサイトはないですか
>>213 何の設計?とりあえずデザインパターンやUML クラス図でググってみれば
Intellij IDEA使っていたら教えていただきたいですが、 IDEAで、javaファイルからclassにコンパイルして実行することは出来ましたが、 これを、jarファイルにする方法が見つかりません。 Web検索しても、そもそも Intellij 使っている人少ないようだし、、。 Eclipseのときは、jarファイル作るって簡単にできたのに、Intellijではどうやるのだろう?
>>215 自己解決
Configuring Artifacts で設定すれば jarの項目ありました。
普通にhelpにのっていた。
しかし、Intellij IDEA って軽いうえに高機能なDEで、Googleの開発者でも人気だ
というのに、日本語の情報が少ないなあ。
流行ってから使うのが勝ち
218 :
デフォルトの名無しさん :2011/02/09(水) 12:50:53
持ってるドメインが数字から始まるせいで ドメイン名からパッケージ名を付けられないんですけど この場合どんな風にパッケージ名付けたらいいですか?
1ならoneに変えるとか、何でもいいだろ 一意になればいいものだし、ぶっちゃけ外部に公開するライブラリとかじゃなければかぶる機会も無いんだし
外部に公開します マーケット経由でAndroidからアクセスさせる という前提だったりします
Webアプリケーションで、別のコンテキストとセッションを共有する方法ってないのかしら Tomcatで、DBとか使わずにHttpSessionで
DBつかわずってインメモリDBの何が不満なの? H2DBのインメモリモードあたりで手軽にやればいいじゃん。
225 :
デフォルトの名無しさん :2011/02/10(木) 22:23:02
Webシステムの開発に使用するjavaを勉強したいのですが、 javaservlet(JSP)というもので良いのでしょうか? その勉強の為の参考書を購入したいのですが、 お薦めの参考書を教えていただけませんか?
ネットで十分
for(int i = 0; i < 10; i++) { int j = (int)(Math.random() * (i + 1)); num[i] = num[j]; num[j] = i + 1; } ってやれば空の配列に数字を入れながらランダムにできる
230 :
デフォルトの名無しさん :2011/02/11(金) 23:15:53
指定したURLのWebページで下記のmetaタグが設定されている場合、 charsetの値を取得したいのですが、下記の実装だとcontentの値しか取得出来ません。 どうすればcharsetの値を取得出来るのでしょうか? <!-- metaタグ --> <meta content="text/html" charset="utf-8" http-equiv="Content-Type"/> //実装 URL url = new URL(任意のURL); URLConnection urlConnection = url.openConnection();
>>230 meta の書式が間違っているので取得は無理なのでは?
232 :
デフォルトの名無しさん :2011/02/11(金) 23:28:01
>>232 まあ、正式な文法がわからない以上、あとはど根性とカンと運でなんとかするしかないでしょう。
ろくでもないな。
235 :
デフォルトの名無しさん :2011/02/12(土) 07:14:03
糞スレあげ
恥ずかしいからageないで!
237 :
デフォルトの名無しさん :2011/02/12(土) 08:55:19
『つくって覚えるJava入門』(オフィス加減 ASCI) の38Pについて質問です。 「Writeの項目で、Androidアプリケーション実行時に最初に呼び出されるonCreateメソッド の中に次のソースを加えてみましょう。」と記述されていますが、Androidアプリケーション実行 は、どうすればいいのでしょう? 具体的にどういう操作をすればいいのか記述されていないので、困っています。
2章開発環境を準備しようとかに書いて無いのかよ
たしかに回答者はアホしかいないが、もう少し高度な質問にしてくれたまえ
240 :
デフォルトの名無しさん :2011/02/12(土) 11:20:22
2章で開発環境を準備しました。 しかし、「Androidアプリケーション実行」をどうすればいいのか 分からないのです。 ImageViewMainを宣言したいのですが。
>>230 コピペするからにはよく調べて書いてあることを理解してからコピペした方がいい。
ネットには正しくないものもあるってことを忘れちゃいけない。
>>243 >>233 にレスをもらってから「正式な文法」は調べたか?
本人じゃないが
>>233 のレスは「根性とカンでしか無理」って意味じゃないぞ?
正しいかどうか判断できない素人がどっかの糞サイトみて根拠もなく信じこむんじゃなくて、
お前自信が参考にした糞サイトのDOCTYPEにも書いてあるんだからまずDTDを確認することだ。
で、確認したら次に回答者に伝えるべきことがある。
間違ったソースから解析する方法を知りたいのか?
正しいソースから取得する方法がわかればよいのか?
的確な回答がほしけりゃ的確な質問を心がけろよ。
垂直落下式DTD
バカが質問してバカがトンチンカンな回答するから全然解決しないw
エスパーに任せるしかないw
>>264 答えてあげなさい。
>>244 すみません。文法云々を知りたいのではないので。
取得するAPIとかあればそれで済む話です。
249 :
デフォルトの名無しさん :2011/02/13(日) 11:00:13
質問です。 パソコンを軽くしたいので、コントロールパネルを見てたら Java(TM) 6 Update 11 Java(TM) 6 Update 5 Java(TM) 6 Update 7 とあったのですが、11以外削除していいのでしょうか? よろしくお願いいたします。
>>249 基本的には最新の入れたら古いのは削除していい。
古いバージョンの挙動に依存してるアプリ使ってる場合は
古いの消したらそのアプリが動かなくなるってだけ。
251 :
デフォルトの名無しさん :2011/02/13(日) 11:25:07
チャットシステムを作ろうと思い他の方が制作されたソースコードを拝見させて頂いたのですがよくわかりませんでした。 よくわからなかったのは読込・書込処理の部分です。 どういう流れで会話のやり取りが行われているのかよくわかりません。 例えば、Aさんが書き込んでBさんがその書き込みを見るまで、のような一連の流れです。 ・読込処理 URL wi_url = new URL(p_url+"chat1.cgi"); URLConnection wi_connect = wi_url.openConnection(); wi_connect.setDoInput(true); wi_connect.setDoOutput(true); wi_connect.setUseCaches(false); OutputStream wo_stream = wi_connect.getOutputStream(); BufferedWriter wo_buffer = new BufferedWriter(new OutputStreamWriter(wo_stream)); wo_buffer.write("read", 0, 4); wo_buffer.flush(); wo_buffer.close(); InputStream wi_stream = wi_connect.getInputStream(); BufferedReader wi_buffer= new BufferedReader(new InputStreamReader(wi_stream)); 書込処理はchat1.cgiの部分がchat2.cgiになっているだけで他は同じです。
それはcgiの中まで見ないとわからない
シンボルを見つけられません。 シンボル: 変数 afile 場所 : sorting の クラス afileの中にあるs_assign_data.datはsorting.javaと同じ階層です。 afileからデータ引っ張ってきたいんですが、afileの中身がない?状態なんですかね。 一応afileの生成に関係あるところだけ抜粋します。 ご教授よろしくお願いします。 public static void main(String args[]) throws IOException,FileNotFoundException { try{ BufferedReader afile=new BufferedReader(new FileReader("s_assign_data.dat")); }catch(FileNotFoundException e){ System.out.println(e); }
javaじゃなくてクラスファイルと同じ場所に入れなさいよ
じゃなくて、afileという変数がそのエラーが出たところで見つからないと言っている
String line = afile.readLine(); でafileないよ〜と言われます。 クラスはコンパイルできれば、でるんじゃなかったでしたっけ? javacでエラーがでてます。 ちなみにdatの中身は下のようなものです 1, 田中 実,41,21,13
try{ BufferedReader afile=new BufferedReader(new FileReader("s_assign_data.dat")); }catch(FileNotFoundException e){ System.out.println(e); } String line = afile.readLine(); ではなく BufferedReader afile = null; try{ afile=new BufferedReader(new FileReader("s_assign_data.dat")); String line = afile.readLine(); }catch(FileNotFoundException e){ System.out.println(e); } finally { ・・・ } ってことか? コンパイルくらい通せ
>>257 その通りでした。エスパーありがとうござます。
tryの中にString line = afile.readLine();をいれたら解決しました。
アホしかいないんだからこの程度の難易度の質問で頼むよ
自己紹介乙
変数のスコープ覚えろ
1, 田中 実,41,21,13 このデータをリストに読み込みなさいという課題がでています。方向性を教えていただけると助かります。 今自分がやろうとしているのは、ArrayListでそれぞれ全列を読み込み、さらにlist1.add(list2);みたいな形でつなげようと考えています。 こんなことは可能でしょうか? それとも多次元配列とかmapとか使った方がいいんでしょうか?
>>262 「みたいな形でつなげ」がわからなかった。
読み込んで何したいか書けよ てか聞いてたら課題にならんのじゃないか?
>>263 1, 田中 実,41,21,13
2, 田中 けい,22,11,23
↑ ↑
list1,list2
listは1列ごとしか読み込めないと自分は思ってて、それらを最後横から結合できないかなと思ってたんですが、調べるとできなそうでした。
多次元配列が一番自分の中で格納するイメージがわくんですが、型が違ってもいけるんですか?
>>264 ソートしたいです。選択法とかバブルソートとか。
もう7時間ぐらいやってるので、ヒントだけください。
「横から結合」の意味がわからなかったけど、 まともな説明とか無理そうだったら Object 型の多次元配列にしちゃえば?
>>266 ありがとうございます。それで行きます。
コレクションの要素に配列入れられるぞ
「注:〜は推奨されないAPIを仕様またはオーバーライドしています。 注:詳細については、-Xlint:deprecationオプションを指定して再コンパイルしてください。」 これって javac -deprecation ○○.java でコンパイルできる?
Objectの多次元配列にするくらいなら 一行ずつクラスを作りそうだが public class Person { private int no; private String name; ・・・ } みたいなクラス作って一行ずつそのクラスをnewして Listに追加していく
result = ImageIO.write(img, "jpeg", new File("test.jpeg")); で画像保存したのですが青のプレーンだけ無視されて黄色がかった画像になってしまったのですが これは何が原因でしょうか? またjpeg以外で保存することはできないんでしょうか?
>>270 そんな応用はできません><
2次元配列にデータを格納できました。うれしいです。
配列を使えるようになるのに7時間もかかる奴なんてのはそもそもこの世界に向いてない
配列は全ての基本だ。とても難しい。 じっくり時間をかけてマスターしろって エリッククラプトンが言ってたよ。
ボタンとテキストボックスが置いてあるウィンドウを一個開いて、ボタンを押すと テキストボックスにhogehogeと追記するようなプログラムがあるとします。 ・適当に一個クラスを作り、main関数を置く。 ・main関数の中で、JFrameを継承したクラスAのインスタンスを一個作る。 クラスAのフィールドとして、ボタン(クラスB)とテキストボックス(クラスC)を宣言しておく。 ・BにはクラスA型のフィールド(仮にX)を持たせ、AのコンストラクタでBのインスタンスを作成するときに、 XにA自身への参照を保持しておく。 ・Bを押すと、(X)->Cと参照し、Cのメソッドを使って、Cにhogehogeと追記。 とりあえずこういう作り方をしてみて、一応動いてはいるんですが、Bの再利用性とか考えると、 なんか間違ってる気がします(Aじゃないクラスの中にBを置くとおかしなことになるような)。 でも、クラス間で会話できないとならないとすると、 階層が同じ他のクラスを参照する方法は必要みたいに思えます。 何かほかにいい方法があるのでしょうか。
そんなゴミクズ再利用できないからどうでもいいだろ
再利用する時が本当にあるのかという気もするが @ITのJFrameの記事でも読んでみろ
>>276-277 ありがとうございます。@ITの記事参考になりました。
私の場合、どうも処理を書く場所が根本的にマズイみたいですね。
明日作り直してみます。
279 :
デフォルトの名無しさん :2011/02/14(月) 03:02:42
チャットでよく名前の前辺りとかにアイコンを表示させることができるものがありますが、どんなプログラムでやっているんですか?
>>279 エスパーか占い師か霊媒師にでも聞きに行け。
281 :
253 :2011/02/14(月) 08:23:52
1, 田中 実,41,21,13 2, 田中 けい,22,11,23 データをリストにいれた後、選択法でのソートについて教えてください。 今上記のデータをlistArrayでsortListに格納し、sortList.get(0)でprintすると0~150まででてきます。 これらを選択法で指定した列でソートしたいんですが、一度配列にしないとできないように思いました。 どうすればいいでしょうか? Selection(array A){//選択法の関数 for(i=1;i<n;i++){ min=i; for(j=j+1;j<n+1;j++){ if(A[j]<A[min])min=j; } swap(A[i],A[min]); } }
これは本格的にセンスないな
スルーしろ
>>281 いやだから普通に 1, 田中 実,41,21,13 をクラスにすべきなんだが・・
>>281 できるできないはあなたの判断なので、できないと思うのなら、できないで納得すればいいでしょう。
ArrayListとかCollectionとかのマニュアルを読んでも無駄そうなので、一度配列にしましょう。
Comparatorとかあなたには無理。
>sortList.get(0)でprintすると0~150まででてきます。 これは何の冗談だ?
田中 実さんの人気に嫉妬
awt.eventではなくsignal/slotのようなことをやとうとしたらどうやって書きますか?
289 :
デフォルトの名無しさん :2011/02/14(月) 16:18:21
田中実さん・・・ その名前を聞いたのは、「刑事貴族」の再放送を見て以来だ
>>271 たしかimgのカラーモデルが、ImageIO.writeで使われてるカラーモデルと一致しないとそういうことがおきる。
解決法はimgからTYPE_INT_RGB(たぶん)のカラーモデルでBufferedImageを作成して書き出す。
それでダメならwriteのショートカットメソッドは使わないで、ImageWriterから細かく設定するしかないんじゃないか
jpeg以外の保存法はjavadriveのページに書いてあるぞ
>>290 TYPE_INT_RGBで作ったimgにコピーしてからセーブすることで全て解決しました。
ありがとうございます。
たとえばプリコンパイラ命令みたいなもので 実行環境によってコードを切り替えられるようにすることはできますか?
>>292 プロパティなどで指定したクラスを使うようにすればいいんじゃない。
なるほどSystem.Propertiesでしょうか? ありがとうございます。
>>292 コードの切り替えはできなくても実装クラスの切り替えはできる
そういうのはDIコンテナとか使用して、UTやIT環境で実装を切り替えたりするのがいい
SystemOutしたのに表示されません どこに表示されるでしょうか
最初に contain.add(MyPanel); pack(); してあるものを 後からイメージの大きさを変えて 全体枠をリサイズすることは可能ですか? どういう方法がありますか?
JavaでhttpClientを使ってwebサイトのソースコードを取得するプログラムを 作ってますが、javascriptが出力するソースコードが取得できません。 firefoxの「選択した部分のソースコードを表示」の機能で表示することはできます。 どうしたらJavaのプログラムから取得できますでしょうか。
>>296 「SystemOutしたのに表示されません 」が正しければ
どこにも表示されないが正解だよね。
>>298 Java と JavaScript は別言語だから無理なんじゃないかな?
>>298 ブラウザをエミュレートしないと無理じゃね
C#でやった方が簡単そう
>>301 javascriptのinnerHTMLとか叩けば
表示せれるのですが、javaからjavasctipt叩いても無駄ですよね?
C#ならどうやるのでしょうか。あ、スレチか。
javaからjavasctipt叩くとは?
JDK6のScriptEngine使って、すごい頑張るとか……? JavaScriptサポートしてたよね?
innerHTMLとか言ってるレベルがjdk1.6なんかを触れるわけないだろ
>>305 だからすごい頑張れとw
ScriptEngine上のJavaScriptからJava側を触ることができるんだから、
HTMLをJava側でパースしてラップしたDOMオブジェクトをScript上から触るみたいなことはできないだろうかと。
まぁ、そこまでやったら変態だが。
おまえら日本語で喋れ
JCOMやSWTとか使ってIEコンポーネント叩く方が現実的かもね……。
引数をいんすうと読む先生がいるのですが 間違っちゃあいないのでしょうか
「DOM」と書いてあるのを見つけるとガンダムのことをいつも思い出してしまう・・
DownloadOnlyMember パソ通時代はライブラリからダウンロードして お礼も何も書かなかったな フリーソフトなんてそんなもん
おれはmp3だったよ 今じゃyoutubeだもんな そら音楽売れんわ
DOMわかるww SOAPもなかなか
そんなこといってたら「JSON」はどーなるの?(笑)
316 :
デフォルトの名無しさん :2011/02/16(水) 10:30:48
Java6 update24をインストールしたけど、 javaのページで確認したらupdate21になっている システム確認したらupdate24に確かになっているのに... どういうことなの?
そういうこと
ちょっと作りたい物があってjavascriptを勉強しているのですが ランダムで1桁の数字(画像で1~9)が表示され それぞれの数字に対応して別の動作をさせることは可能ですよね?
その一桁のランダムな数字というのは自分で決めるのか? それとも、外部の別の何かが勝手に作った画像を読み取って処理するのか? 前者なら楽勝 後者なら地獄
320 :
319 :2011/02/16(水) 11:48:44
よく見たらJavaScriptか それなら後者でも画像のURL見ればだいたい分かるな スレ違い
失礼しました ありがとう
乱打舞図
323 :
デフォルトの名無しさん :2011/02/16(水) 22:56:26
すみません・・。Windows7 Premier HomeでSDKダウンロードインストールしてPathの設定をしているところなのですが、 javac は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されていません。 と出ます。 Pathはプログラムファイルのjava、sdkのbinフォルダを指定したのですが。 何か考えられる原因はありますでしょうか?
>>323 パソコンを起動したら自己解決。
初歩的なミスだ。。
325 :
デフォルトの名無しさん :2011/02/16(水) 23:16:04
下記のように10MBの値をmarkの引数にセットしたら、 その時点で10MBのバッファが確保されるのでしょうか? BufferedInputStream.mark(10 * 1024 * 1024);
俺たちが唯一答えられる質問だったのに…
>>325 コンストラクタで10MB以上確保してなければ
必要になったとき2倍ずつどんどん増やしてって
最終的にmarkで与えた分確保するんだったような
仕様的には、どーゆー実装にしてもOKなんじゃね?
つまり継承クラスからbuf直接触る場合は決めうちしない方がいいかもしれん。
あんまし気にしすぎるとハゲるけどね。
>>327 bufは弄らないのでこのまま使ってみようと思います。
ただ、resetで例外が発生する場合があるので、
そこだけどうにかしないと…。
リミットサイズがあらかじめ分からないので、
ある程度大きなサイズを確保しておくしか無さそうです。
>>328 いったんローカルファイルに全部保存しておいて
RandomAccessFileなりFileChannelなり使った方が楽だと思うよ。
330 :
デフォルトの名無しさん :2011/02/18(金) 00:43:40
(abc)このような文字列から英数字を抜き出したいので、以下のような正規表現のパターンを考えました。 Pattern.compile("^\(\"([a-zA-Z0-9]+)\"\)$"); ですが、これだとエスケープシーケンスがなんとかでエラーになってしまいます。 どう書くのが正しいのでしょうか?
「なんとか」の部分をちゃんと読めば解決する
332 :
デフォルトの名無しさん :2011/02/18(金) 00:48:45
>>331 エスケープシーケンスが無効となってました。この場合、カッコのエスケープシーケンスはどうしたらいいのでしょうか?
ググれカス
ググレですんだかこのスレいらんのじゃボケ!
んじゃ次回からは「モテナイ男の30年」にしよう
>>330 正規表現でのエスケープ文字は\
では、JavaのStringリテラル中で\という文字はどう表記する?
>>330 Pattern.compile("^¥¥((¥¥w+)¥¥)$")
っつーかその真ん中二つのダブルクオーテーションはなんだよ。マッチさせるのか?
コンストラクタ内で行いたい処理が長くなる場合 その処理をメソッド化することはあると思いますが そのメソッドにつける修飾子はprivateでいいでしょうか?
基本全部privateにして、他から呼ぶ必要があると理解した時だけ変更するようにすればおk. コンストラクタ内で行いたい処理が長くなる場合は、FactoryやBuilderクラスの使用も検討するといいです。
うるせーバカ
>>340 なにその行き当たりばったりは。
ちゃんと設計しなよ。
>>340 >基本全部privateにして、他から呼ぶ必要があると理解した時だけ変更するようにすればおk.
コンストラクタからfinal publicメソッド呼ぶんなら再利用性上の支障はないんだったっけ。
344 :
339 :2011/02/19(土) 16:33:25
レスどうもありがとうございました とりあえずコンストラクタ内でのみ使うメソッドと 他メソッドからのみ呼び出されるメソッドに対してprivateにしたいと思います 教えていただいたFactory、Builderクラスについても調べてみます
>>342 え?リファクタリングとかやったことないですか?
全部privateでアクセス時は全部リフレクションだが特に問題は発生していない
348 :
デフォルトの名無しさん :2011/02/19(土) 18:13:31
>>344 今更で申し訳ないが、コンストラクタでの処理ってのは
そのオブジェクトを具象化する処理なわけだが
コンストラクタでの処理が複雑になっているって事は
該当のオブジェクトの設計を間違えている可能性が非常に高い
単一の物を具象化する処理が複雑になるってことは本来あり得ない
つまり、メソッドとして切り離さなければいけないくらいの処理を行おうとした段階で
一度オブジェクトとしての設計を考え直すのが正解
349 :
デフォルトの名無しさん :2011/02/19(土) 21:01:46.79
byte[]をlong[]にキャストって出来ませんよね? Javaで高速なコードを書こうとした場合、プリミティブ型を統一するしかないですか? forで回して変換するのが嫌なんです。 CとかC++ならキャスト一発で一切コスト無く出来る事なので。
>>349 無理。
ByteBuffer#asLongBuffer()みたいな代替手段があるから、それで我慢。
351 :
デフォルトの名無しさん :2011/02/19(土) 22:43:51.85
byte[] byteArray = {64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64}; ByteBuffer buffer = ByteBuffer.wrap(byteArray); LongBuffer bufferL = buffer.asLongBuffer(); bufferL.array(); 最後のarray()でException出ます。 hasArray()はfalse なぜですか? byteArrayをlong[]にキャストしたものを得たいのですが
>>351 それは無理。
LongBufferのまま使う。
353 :
351 :2011/02/19(土) 22:52:23.48
>>352 BitSetを継承して
long[] words
を自由にセット出来るようにして流用しようとしてたのですが
BitSetをLongBufferに対応させるなら、もうbyte[]直で出来るようにするのと大差なさそうですか?
Javaで集合演算を簡単に便利に行ういい方法って何かありますか?
>>353 大差ないだろね。
何が必要かによって違うからなんとも。
標準でBitSetって名前が使われてるから、
それ以外のBitArrayとかちょい変えた名前で検索すりゃクラスがおっこってるかも?
eclipseのメソッド名変更とか効かなくなるから不便でしょうがない気が
>>351 long[] 欲しいんなら、使うべきなのは LongBuffer#get(long[] dst) だろ。
ビッグエンディアンでいいんならByteBuffer#order(ByteOrder)はたぶん必要ない。
すいません複数のクラスから参照される定数はどのように持たせるのがいいんでしょうか Cだと#define TEISU 10とかをヘッダに書いておいて使いたいクラスのソースで#includeすればいいですよね Javaだとstatic finalな変数だけをもつクラスを新しく作っておくとかでいいんでしょうか
クラスでなくinterfaceにする人も多いかなー すんごく嫌がる人もいるけどね
1.5以降のベストプラクティスはenumを使うことらしい
>>358 enumかstatic finalな変数で持っておいてimport staticする。
>>359 継承先の名前空間汚すから嫌がられて当然。
定数の意味をよく考えて、それに当たるクラスがすでにあればそこに、無ければそのクラスを作ってやるかな。
インターフェースにするのは、技としてはうまいなとは思うが、本来の使い方とは違うと理解しているので、自分ではやらない。
前Enumをちょっと使ってみたけど、思いの他使いにくかった
>>364 そうか?
stateパターン代わりぐらいにはなると思うが。
bmpファイルを読み込んでdrawImageで描画してるんですが抜き色の指定ってどうやったらできますか
まずBufferedImageに変換します 画像の全てのピクセルの色を調べて、抜き色だと判断したら透明色(アルファチャンネルが0)に置き換えます アホらしいと思うなら抜き色なんて時代遅れなものは捨てて最初から透過PNGでも使ってね
>>364 おれenumないと結構キツイんだけどw
ひょっとしてデフォルトコンストラクタしかつかっていないんじゃない?
Oracle認定の資格持ってる人いる? あれ実務で役に立つの?
enum便利だよ 大抵のswitchとif文はenumに置き換えてる
かえって酷いスパゲッティになりそうだな
typesafeのほうがいいとおもうけどな。
typesafeはいいけどポリモーフィズムの乱用はちょっとな
Javaってメンバ変数をmから始めるのが 普通ですよね?それ以外で始める奴って基地外ですよね?
ははっワロス
>>375 eclipseが色分けしてくれるから、プレフィクスなんて気にしたことない。
378 :
デフォルトの名無しさん :2011/02/21(月) 00:16:40.91
379 :
デフォルトの名無しさん :2011/02/21(月) 00:17:02.46
Javaのタイプセーフenumのキチガイじみてるところは、 元がクラスだからメソッド持てちゃうところだな。 手段が目的になりそうで俺は使わないが。
381 :
デフォルトの名無しさん :2011/02/21(月) 01:16:35.44
>>380 お前は何を言ってるんだ?
質問や相談答えれるレベルじゃないぞ?
逆にメソッド持てなかったら、全く使えないけどな。 toString上書きできなかったらすこぶる使えない。
>>378 元質問では用途が伏せられているので、enumが適切かどうか判別不能なんだが
384 :
デフォルトの名無しさん :2011/02/21(月) 02:28:07.20
>>383 C系統がわからない人?
例に出されてる用途ならenumだろ
例も何も用途書いてないじゃん 例えば、ドライバーの用途は「ネジの着脱」であって「回して使うこと」ではない で、用途不明なんだから、その定数はリトライ回数や倍率という可能性だってある
おまえ、相当な負けず嫌いなんだな 友達いないんだろ?
Effective Java読めよ
389 :
デフォルトの名無しさん :2011/02/21(月) 15:22:37.49
ぬるぽ
390 :
デフォルトの名無しさん :2011/02/21(月) 15:36:09.54
>>387 お前も質問答えるレベルにない
勉強しなおしてこい
>>388 何時の本だっけ?
5以降に対応している?
392 :
デフォルトの名無しさん :2011/02/21(月) 20:26:05.35
>>391 第1版が2001年で1.4まで、第2版が2008年で6まで。
ちょっと前のレスでenumについて語られていたのだけど interface作るかフィールドに public static final 持たせることより 優れている点をわかりやすく 俺に教えてください パフォーマンスはstatic finalのほうがいいと思うので、何か意味があるわけだよね それか実際に、有意義に使ってるソースを魅せてください
IDEが設定値を勝手に絞り込んでくれるってだけで十分なメリットだろ。
>>394 ・単なるintやString等の定数は、定数を入れる変数に何でも入ってしまうのでタイプセーフでない
enamを格納する変数はタイプセーフに記述することができる
・String定数パターンの場合、比較はequalsでやる事になると思うが、パフォーマンスが悪い
enamはイコールで比較できる
・インターフェース定数パターンは、一旦外部に公開してしまった場合に仕様変更がしづらい
enamは仕様変更に柔軟
などなど・・・
すいませんNetBeansでマウス操作でGUI画面を作ってたんですが今日起動したら ”コンポーネントを読み込み中にエラー:[JFrame]->Panel1" とか出てマウス操作で作れなくなったんですけどどうしたらいいですか
enam……
399 :
デフォルトの名無しさん :2011/02/21(月) 22:33:25.21
>>397 ローカル編集履歴でソース少し巻き戻してみたら?
定数のStringなら==でもいけてるジャン いあy、まてよ・・・わかりづらいバグ盛り込みそうだ enumがいまさらながら見えてきた気がする サンクル
昨日の夜寝るときはマウス操作でできてたのに今日起動したら何もいじってないのにマウス操作できなくなってたんですよ
402 :
デフォルトの名無しさん :2011/02/21(月) 23:18:44.03
Javaで AAA aaa = null 下で aaa = new AAA() と言う書き方と AAA aaa = new AAA() という書き方で具体的に何が違うのでしょうか? たとえばこうした方がパフォーマンスの点でメリットがあるとか
403 :
デフォルトの名無しさん :2011/02/21(月) 23:19:44.73
int data = 0xffffffff; data = data >> 3; とかやると、左端が1埋めになるけど 0埋めにする方法ってありますか?
404 :
403 :2011/02/21(月) 23:21:49.05
自己解決しました
>>402 フィールドにしとくとJavaDocで出る位だと思う。
DI使うための場合もあるが、aaa = new AAA()してるんじゃ意味ないしな。
>>394 EnumMap使うと、HashMapより高速にアクセスできるらしいからハッシュのキーとしても有用
ちなみにビットフィールド表現はEnumSetで。プリミティブのビット演算と速度の遜色が無いらしいが・・・まあコードはきれいになるな
ちなみにordinalは使ったらダメだからね
enumでスパゲティになるって・・・。まあそう思う奴のスキルだと、何をしてもスパゲティなんだろうけど、ちょっと損してるぞ
407 :
デフォルトの名無しさん :2011/02/22(火) 00:28:57.85
JNIとかJNAやるときって CのコードもEclipseで書くか、VisualStudioで書くかどっちがいいと思いますか?
408 :
デフォルトの名無しさん :2011/02/22(火) 01:07:01.49
>>406 if文全てEnumに置き換えたらそれはただのEnum病のスパゲティだろ
Enumに限らずポリモーフィズム病だな ちょっとオブジェクト指向がわかってきた初心者が陥るやつ
Enumを見たらそういう事してるんだろうってわかるから 慣れ
411 :
デフォルトの名無しさん :2011/02/22(火) 01:32:53.53
なんでも極端はイクナイ
最近は1レス/日以下がデフォな感じだったのにずいぶんと賑わっておりますな。
>>408 だれがif文すべてって言ったんだよ、極端な奴だな
コーディングがダメなやつはやっぱ文章読むのもダメなんだな
質問スレなんで、Javaできる人はちゃんと答えを書いてあげましょうね
てかJNIじゃなくて、JNAとか何か胸熱なんだけど どんな感じでつかうの?
418 :
デフォルトの名無しさん :2011/02/22(火) 13:21:36.01
final static byte[] HEADER = { (byte) 0xef, (byte) 0xbb, (byte) 0xbf, (byte) 0x50, (byte) 0x6f, (byte) 0x6b, (byte) 0x65, (byte) 0x72, }; いちいち (byte) ってキャストしてやらなきゃ、配列に値入らない Type mismatch って言われるんだが、これは全くどうにもならないのか 見栄えが悪いのは嫌だなあ
>>419 見栄えはいまいちだが短くて済む方法
final static byte[] HEADER = "\uefbb\ubf50\u6f6b\u6572".getBytes("UTF-16BE");
見栄えは良いが若干効率悪い方法
static byte[] toByteArray(int... a) {
byte[] b = new byte[a.length];
for (int i = 0; i < a.length; i++) {
b[i] = (byte) a[i];
}
return b;
}
final static byte[] HEADER = toByteArray(0xef, 0xbb, 0xbf, 0x50, 0x6f, 0x6b, 0x65, 0x72);
>>420 サンキュー
やっぱり、キャストは必須なんだなあ
見れば 128 より小さいのは明らかなんだから、見逃してくれてもよさそうなもんだけど、
まあ、Java ではきょうび byte配列で比較なんてやらず文字列比較するだろうから、あんまりこういうので不便感じる人はいないんだろう それでもじゅうぶん速いし
>>419 public static byte[] hex(String s) {
StringTokenizer st = new StringTokenizer(s);
ByteArrayOutputStream out = new ByteArrayOutputStream();
whilke(st.hasMoreTokens()) out.write(Integer.parseInt(st.nextToken(), 16));
return out.toByteArray();
}
みたいなメソッド作っておいて、
final static byte[] HEADER = hex("EF BB BF 50 6F 6B 65 72");
423 :
デフォルトの名無しさん :2011/02/22(火) 18:46:06.31
開発環境で実行出来ないクラスについて、 インターフェースだけのテストクラスみたいなのを用意して暫定的に開発しようとしてるのですが このインターフェースだけのコードと本番用のコードとを自動的に切り替えるような手段って何かありますか? Eclipseです。
424 :
デフォルトの名無しさん :2011/02/22(火) 18:48:35.25
>>423 モックオブジェクトの使えるテスティングフレームワークを使えばいい
netbeans糞杉w今日は”主クラスが見つかりません”とか出て起動すらできなくなったわww
426 :
デフォルトの名無しさん :2011/02/23(水) 09:37:55.12
427 :
デフォルトの名無しさん :2011/02/23(水) 11:51:33.64
見栄え的には419が一番いいように思うのは俺だけ?
分かりやすいのが一番
16進ダンプなつかすぃ
>>431 きっとパソコンが火を吹いてもNetBeansのせいにするタイプ
433 :
デフォルトの名無しさん :2011/02/23(水) 15:46:15.49
javaでポスグレの共有ロックを明示的に取得するのってどうしたらいいですか?
SQL発行すれば
NetBeansのせいで裁判所が爆発したアル
全てはOracleの陰謀だったんだよ!
437 :
デフォルトの名無しさん :2011/02/23(水) 16:15:39.38
ネットビーンズには裁判所すらも爆発できちゃう機能があるのか・・・?
ネットビーンズには裁判所すらも爆発できちゃう機能があるのか・・・?
ネットビーンズには裁判所すらも爆発できちゃう機能があるのか・・・?
プログラミング系の板は病んでるね
仕事ないからな
JavaからJNIでdll呼び出した時って javaw.exeっていうプロセスにロードされて実行されてるの? でもjavawもたくさん立ち上がってるからどれかわからん。 JNIのデバッグしたいのだけど
自作のpanelをパレットに追加してそのパレットをGUIの画面でframeに乗せるとGUIの画面がバグって操作できなくなるぽい とりあえずソースコードをeclipseに移してソースコード直で編集していったら目的のプログラムができたわnetbeas糞杉ワロタww
俺もそれなったな
実際netbeansは糞
ろくな開発環境がないわ
-Djava.library.path= の設定の書式について教えてください。 複数指定する場合など。 そういったオプションの指定方法を説明しているWEBページを教えてください。
結局GUIなツール作ろうと思ったらmicrosoft製品使った方がいいのかなー
だろうな。SWTのOSSとかたまに見るけど、ソース読むのが面倒くさい。
eclipseだろうがmsだろうが、guiツールは信用しないな。 直ソースにアクセス出来ればそっちでやる。
C#+VS使ったことあっていってるのか?
VSのGUIの作りやすさはコンポーネント志向の設計+プロパティの存在に寄るところが大きい気がする。 Swingはコードで書くと結構いいライブラリだけどGUIビルダとの相性は悪いよ。
eclipseのプラグイン色々と馴染めん
VSのGUIはやってて笑う GUIビルダドリブンで開発出来る
それ、金とってるんだから楽チンなのは当然だろ
いつの時代の話だ 今はタダで落とせるよ
信者乙。GUIエディタ以外に欲しい機能が 片っ端から削除されてるExpressなんぞ、 まともな開発では役に立たん。
MMDはExpressで作成されてるんだぞ
以前C#メインでやってたけど GUI以外はVSよりeclipseのほうが圧倒的に使いやすいな〜 もちろん同じ無料のExpressと比べてだけど VSもeclipse風のアドイン入れればだいぶましになるのかも知れんけど スレチだけどeclipseでどっとGUIも含めてネット使えると幸せなんだけどな
日本語でおか
GUIのレイアウトは、自分でコツコツ手打ちが一番 ウィンドウサイズ変わったときの挙動とか、細かい動きで GUIツールにまかせて、うまくいかなくなったときが詰む ちゃんと事前にレイアウトを決めていれば、時間そんなにかからんしね
そりゃまともなGUIビルダ使ってないからだ
465 :
デフォルトの名無しさん :2011/02/24(木) 11:42:43.42
道具のせいにして無駄な工数かけて共通のフローから外れた作業する老害は消えて欲しい
ドットサイズのマウスさばきと眼力で、何とかGUIビルダへ念を伝えようと キリキリしながらGUI作るよりも、ロジック的に大雑把作ったほうが簡単だろ 一部配置を変更する場合もGUIビルダだとすぐ、ぐちゃぐちゃになるし レイアウトクラスとかに元から備わっている便利な機能とか使えずに わざわざ人の手で個別にコンポーネントを調整とか面倒
467 :
デフォルトの名無しさん :2011/02/24(木) 12:44:59.91
Javaならな なんで需要はそれなりにあるはずなのに未だにゴミみたいなのしかないんだろう
469 :
デフォルトの名無しさん :2011/02/24(木) 12:47:25.75
NetBeansのMatisseは優秀だし それで業務でも十分回ってる Eclipseは糞
VSいいお^^
まあVSが無かったら今でもJavaもGUI手打ちコード補完なしが普通だっただろうな VSがユーザーのコード補完とGUIビルダの要求を引き上げまくってるのは事実
Matisseが優秀ってのは無いわ そういう批評が多いのはあくまでEclipseとかJavaの世界のものと比べて VSとは比較にならん
vs.netのguiは特に何がいいの?
特に何が良いというより、悪いところがないんだよ GUIビルダーってバグだらけで不安定で信頼できないのが普通だけどVSは別格
476 :
デフォルトの名無しさん :2011/02/24(木) 14:09:33.49
>>473 頭が悪いの?
ここはJavaのスレだよ?
477 :
デフォルトの名無しさん :2011/02/24(木) 14:15:12.45
Character[]をザクッとStringに変換したいんですけど どのようにすれば可能ですか?
478 :
デフォルトの名無しさん :2011/02/24(木) 14:20:54.55
>>477 char hoge[] = {'h','o','g','e'};
String fuga = new String(hoge);
479 :
477 :2011/02/24(木) 14:27:20.51
charとCharacterって違うんですよね ループで全部キャストしてから変換する以外の方法ってないのかなぁと
480 :
デフォルトの名無しさん :2011/02/24(木) 14:40:18.73
>>478 どうしてもCharacterじゃなければいけない理由があるなら諦めろ
>>463 とか昔のダイアログエディタとかしか知らないんだろうな .
ダイアログエディタってどういうのなの?
javaチップってどうなったの?
画面に関してはJavaFXに期待してたんだが、お亡くなりになってしまったのでどうしようも無い。
無くなってないだろ。JavaFX Scriptが無くなるだけ。 APIとして作り込んでJRubyやJythonで開発させたいじゃねーの?
ストリームから、 意地でも byte[] buffer の長さまで読み込むプログラムを書いたのですが、 美しくないです。 どうにか美しくできないでしょうか? InputStream in = socket.getInputStream(); ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] buffer = new byte[1024 * 1024]; int read = 0; int readInBuffer = 0; while (true) { read = in.read(buffer, readInBuffer, buffer.length - readInBuffer); if (read == -1) { if (readInBuffer == 0) { break; } else { read = buffer.length - readInBuffer; } } else if ((readInBuffer + read) != buffer.length) { readInBuffer += read; continue; } else { readInBuffer += read; } bout.write(buff, 0, readInBuffer); read = 0; readInBuffer = 0; }
//☆★☆★☆★☆★☆★☆★☆★☆★ InputStream in = socket.getInputStream(); //☆★☆★☆★☆★☆★☆★☆★☆★ ByteArrayOutputStream out = new ByteArrayOutputStream(); //☆★☆★☆★☆★☆★☆★☆★☆★ byte[] buffer = new byte[1024 * 1024]; //☆★☆★☆★☆★☆★☆★☆★☆★ int read = 0; //☆★☆★☆★☆★☆★☆★☆★☆★ int readInBuffer = 0; //☆★☆★☆★☆★☆★☆★☆★☆★ while (true) { //☆★☆★☆★☆★☆★☆★☆★☆★ read = in.read(buffer, readInBuffer, buffer.length - readInBuffer); //☆★☆★☆★☆★☆★☆★☆★☆★
>>487 スレ違いでしょうか? でしたらどちらに行けばいいでしょうか?
インデントが消えたので 全角スペースで置換しました。
InputStream in = socket.getInputStream();
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024 * 1024];
int read = 0;
int readInBuffer = 0;
while (true) {
read = in.read(buffer, readInBuffer, buffer.length - readInBuffer);
if (read == -1) {
if (readInBuffer == 0) {
break;
} else {
read = buffer.length - readInBuffer;
}
} else if ((readInBuffer + read) != buffer.length) {
readInBuffer += read;
continue;
} else {
readInBuffer += read;
}
bout.write(buff, 0, readInBuffer);
read = 0;
readInBuffer = 0;
}
質問です。 Amazonランクレットってどういうコードなんでしょうか?javascriptですよね? ついでにjavascriptは触ったこと無いです。
s2jdbcの話はこのスレであってますか?
不適な場合は誘導お願いします。
s2jdbc-genのgen-Entityで生成されるエンティティクラスのDate型をJava.uti.Date+TemporalType.TIMESTAMPにしたいと思っています。
http://d.hatena.ne.jp/akiraneko/20081015/1224075420 を参考にダイアレクトを作成したのですが、
columnTypeMap.put("date", new OracleColumnType("date", Date.class,TemporalType.TIMESTAMP));
の部分でコンパイルエラーになっています。
OracleColumnTypeのコンストラクタにString,Class,TemporalTypeはありませんとかなんとか…
どのように実装したらいいのでしょうか?
>>486 new DataInputStream(in).readFully(buffer);
>>492 見るまで意味分からんかった
何か、ソースに適当にコメント追加して、
アスキーアートに変換できるツールとかないかな…
あったら、嫌いな納品先に使うのに…
スルーしろ
やっぱりジャヴァはもうだめぽ
496 :
デフォルトの名無しさん :2011/02/25(金) 09:22:40.69
>>496 趣味でやってるんじゃなくてレポートでやってんのかよマジでカスすぎる
こんな奴にプログラミングやってほしくないわ
>>491 >
>>486 > new DataInputStream(in).readFully(buffer);
それだとデータ長がbuffer.lengthの整数倍じゃないときに
末尾が捨てられちゃうな
api の説明をよく読めよ
アホしかいないんだからもっと簡単な質問にしてくれよ!
アップデートの知らせのウインドウって、暫く放置してると 勝手にタスクトレイに戻されるんだな
1.6javaです ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream()); socket.close(); oosを明示的に閉じる必要ありますか?
504 :
デフォルトの名無しさん :2011/02/25(金) 18:25:37.23
>>503 場合によるので何とも言えないが
その2行だけのプログラムなら必要ない
違うのならストリームは開けたら必ず閉じろ
>>503 oosを閉じればsocketも閉じるのに、なんでそんな使い方するの?
詳細かかないとね・・・ centOs5 64JRE 秒間0〜1,500回 newされるrun()の中で使い捨てます windows 64JRE で確認したらメモリリークはない様なのですが 上記の場合を知りたいです ソース見ろって話ですよね・・
>>505 まじで? サンクス
socket.close()のステートメントが余計なんだね
JavaScript IFrameで表示されたエリア内の 特定要素を非表示にする事は出来ますか? 具体的には、id="test"を持つブロックを非表示にしたいです。 <iframe> <div id="test"> </div> </iframe>
>>507 気になるなら、JDKインストールディレクトリにあるsrc.zipを確認してみると吉。
>>508 できます。
親フレームじゃないととか言う制限があったかもしれないけど。
jQueryとか使ったが早い。
JavaScriptのスレへどうぞ。
>>479 そもそもCharacter[]自体みかけないからなぁ
おはようございます マルチスレットでadd シングルスレッドでpullする場合に適した Queueの実装はどこのどいつですか? ConcurrentLinkedQueueとaddをロックオブジェクトで囲む場合も含めて パフォーマンス第一でお願いします。 マルチスレッドでadd remove getできるSetも教えてください removeはイテレータ内でやってます
>>516 >>510 じゃないがJavaじゃないよ
だからJavaScriptのスレに誘導してるんだろ
言語の質問じゃないけど、 jvisualvmに定期的にダンプを取る機能ってある?
519 :
デフォルトの名無しさん :2011/02/26(土) 14:56:07.65
>>518 jstat の出力を保存するのじゃダメ?
JavaDBはJDKフルインストール時にインストールされると聞いたのですが x64版のJDKには入っていないんでしょうか? インストールしたのですが、確認出来ませんでした
dom4jについて質問 Element element = root.addElement( "property" ); element.addText( "あああ" ); こんな感じでxmlに2バイトの要素を入れたいのだけど 2バイト文字列の部分がUTF-8にならなくて困ってます。 2バイト文字列の部分もUTF-8にする方法ってありますか。
523 :
デフォルトの名無しさん :2011/02/26(土) 17:50:58.17
>>522 おまえは何をいっているんだ?
XMLのencodingの部分はどうなってる?
それともUnicodeの\udddd 表記にしたいってこと?
>>523 インストール時にインストールする内容が確認できる画面でもJavaDBの表示はされていませんでしたし、
本ではcのプログラムファイル下にsun\JavaDB...と作成されると書いてありましたが、作成されていませんでした
526 :
522 :2011/02/26(土) 18:44:21.09
>>524 もちろん、<?xml version="1.0" encoding="UTF-8"?>だけど
秀丸で読むと、変換できないといわれるのだよね。
で、下のような結果になる
<?xml version="1.0" encoding="UTF-8"?>
<system>
<property></property>
</system>
これを
<?xml version="1.0" encoding="UTF-8"?>
<system>
<property>あああ</property>
</system>
こうしたいわけだ。
秀丸に苦情いって迷惑かけてこい
528 :
522 :2011/02/26(土) 18:47:29.23
追加 テキストデータ自体はUTF-8になってるけど 2バイト文字列だけが、何故かshift-jisになってる。
>>526 dom4jのことはしらんが、普通はElementノードの子にTextノードをぶらさげる
530 :
522 :2011/02/26(土) 18:55:02.02
あああ、解決した。 eclipse自体の文字コードが影響していた。 eclipse初期のMS932の文字コードで書き出されていたので ダメだったらしい。 eclipseをUTF-8にして2バイト文字書き直してxml書き出したら正常だったよ。 情報不足だったし事故解決だったしで、なんかすみません。 時間使ってくれた方ありがとう!
ウザイ 早く死ねよ
どこで聞いたんだよ
534 :
デフォルトの名無しさん :2011/02/26(土) 19:27:31.86
おはようございます マルチスレットでadd シングルスレッドでpullする場合に適した Queueの実装はどこのどいつですか? ConcurrentLinkedQueueとaddをロックオブジェクトで囲む場合も含めて パフォーマンス第一でお願いします。 マルチスレッドでadd remove getできるSetも教えてください removeはイテレータ内でやってます
536 :
デフォルトの名無しさん :2011/02/26(土) 21:55:53.79
Javaでアプリケーションを作成しようと思っているのですが、 Javaのテキストなどで紹介されていGUIのプログラムの画面って、 なんだかボタンやテキストフィールドのレイアウトというか位置が独特ですよね。 なんだか画面を均等に分割して貼り付けているというイメージを持ちます。 ドット単位の座標でレイアウトをするのにはJavaは向いてないのでしょうか?
Javaはマルチプラットフォーム意識してるから、 OS毎のUIの装飾の違いを吸収するために「代替この辺り」でレイアウトすることを推奨してる。 一応レイアウトマネージャにnullを設定したり、GroupLayoutを使うことで座標配置は可能
Andoroid アプリの作成は、Windows アプリと同じ容量ですか? また、Andoroidアプリの作成はEclipseいったくしかないですか?
>>536 UIデザインの本でも読むんだな。ドット単位で並べることよりも考えないといけないことがあることを書いてあるかもしれないぞ。
>>520 jmapで定期ダンプ取るようにしてるが、GUIでできる方法がないかなと…
logbackを使ってるんだけど、 メインスレッドからしかログへの書き込みしてなければ メインスレッドからSystem.exitしてログファイルとか壊れたりしない?
100*100サイズのイメージ(バック黒)を作ってコンテントに追加してpack();してwindowもそのサイズでできあがり 後でイメージを200*200に拡大してresize(200,200);でwindowも拡大させてるんですが 100*100の領域はイメージが黒く表示され、その外側はグレーで何も表示されません。 MyPanelから描画されたのは元の大きさだけです。 200*200の領域をちゃんと表示させるにはどうすればいいんでしょうか?
あ、MyPanelではちゃんと拡大されたサイズを描画しています。
Javaで複数のSQL文やストアドプロシージャを記述したテキストファイルを読み込み、 それを1つずつ実行して別のテキストファイルに書き出す処理を実現したいです。 どのようにすれば、この機能を実現できるのでしょうか? 1行だけのSELECT文やINSERT文、UPDATE文、DELETE文を実行することはできていますが、 複数行のものやCREATE文、ストアドプロシージャが動きません。 どこかに分かりやすい参考サイトはありませんか?(もちろん自分でも探しています。) なお、DBは、MySQL5.0を使用します。
>>544 行頭か行末にスペース入れてみるとか
改行コードがおかしいとか
発行されたSQL文とか
エラー内容はどうなってんだ
546 :
デフォルトの名無しさん :2011/02/27(日) 23:37:41.85
それはArrayListのメソッドであって、Listのメソッドではないからです myListはList型なので、Listにはそのメソッドはありません ArrayListにキャストするか、 ((ArrayList) myList).trimToSize(); 最初からmyListをArrayList型で宣言します ArrayList myList = .....
548 :
デフォルトの名無しさん :2011/02/27(日) 23:47:12.57
ありがとございます。 言われてみればその通りですね。 馬鹿でした。
バーカ!バーカ!
質問スレで罵るとか、お前の人生それでいいのか
罵られるのも悪くないです。 ありがとございますになってるしね。 う、どこいったんだよ。
>>543 本当か?
どう確認したのか知らんから疑うが、本当に描画しているか?
「そうプログラムしてあります」じゃ論外だぞ。
ウインドウのサイズが変わったらパネルのサイズも変わっているか?
それによってpaint(paintComponent)が適切なパラメータで呼ばれているか?
LDAP接続でプールを使用しない設定にしていますが、必ず1つだけ接続が残っています。 どうもコンストラクタコール時に接続をしていて、それをコンテキストが破棄されるまでオープンしっぱなしになってます。 これは仕様なのでしょうか?それともバグ? Properties env = new Properties(); env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); env.put(Context.SECURITY_PRINCIPAL, "xx"); env.put(Context.PROVIDER_URL, "xx"); env.put(Context.SECURITY_CREDENTIALS, "xx"); env.put("basedn", "xx"); new InitialLdapContext(env, null);
NIOを懇切丁寧に解説してくれているWebサイトか本が有れば教えて欲してちょ。
Eclipse動かすほどじゃない っていうようなソース読むとき用のエディタってないですか?
めもちょう
確かにメモ帳は軽い 軽いがこれでソース読む気力は無いわ
Eclipseもそうだが、カレントポジションから前方/後方にしか進めない検索はクソすぎる
カレントポジション言いたかっただけだな
何かレスがレスポンスしたかと思えば、 オンリージャスト言いたかっただけとか、WTF!
しかも最後に到着しましたのメッセージとともにポップアップとか あれはうざい
確かに芋臭いよね。クッサーって思う。
566 :
デフォルトの名無しさん :2011/03/01(火) 01:07:37.35
基本的なクラスのロードが出来なくて困っています。 ■LoadedClass.java package loaderClasses; public interface LoadedClass { public void doIt(); }
567 :
デフォルトの名無しさん :2011/03/01(火) 01:08:21.99
■SpeciallyLoadedClass.java package loaderClasses; public class SpeciallyLoadedClass implements LoadedClass { public void doIt() { System.out.println("doIt: Hello from " + getClass().getName()); } }
568 :
デフォルトの名無しさん :2011/03/01(火) 01:09:15.37
■LoaderMain.java(mainクラス) import loaderClasses.*; public class LoaderMain { public static void main(String[] args) { LoadedClass lc; Class lcClass; SimpleLoader loader = new SimpleLoader(args[0]); try { lcClass = loader.loadClass("loaderClasses.SpeciallyLoadedClass", true); System.err.println("loaded : " + lcClass); lc = (LoadedClass) lcClass.newInstance(); lc.doIt(); System.err.println("loaded : " + lc.getClass().getName()); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException iae) { iae.printStackTrace(); } } }
569 :
デフォルトの名無しさん :2011/03/01(火) 01:10:40.21
■SimpleLoader.java import java.io.*; import java.util.*; public class SimpleLoader extends ClassLoader { private Hashtable _cache = new Hashtable(); private String _pathBase; // Directory containg class files public SimpleLoader(String base) { _pathBase = base; } protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException { Class c; // Check class cache c = (Class) getCache().get(name); if (c == null) { try { c = findSystemClass(name); return c; } catch (Exception ClassNotFoundException) {
570 :
542 :2011/03/01(火) 02:00:48.16
何かがマスクして最初の100*100の外側を覆っているんですよねえ。 いろいろ試しましたが何がマスクしているのか見当がつきません。
571 :
デフォルトの名無しさん :2011/03/01(火) 02:02:18.01
■SimpleLoader.java (続き) try { String fileName = getPathBase() + System.getProperty("file.separator") + dotToSlash(name) + ".class"; System.out.println("Class file: " + fileName); byte data[] = loadClassData(fileName); System.out.println("File size: " + data.length); c = defineClass(name, data, 0, data.length); // Cache it... getCache().put(name, c); } catch (ClassFormatError e) { throw new ClassNotFoundException(name); } } } // If we are really going to use class, resolve it! if (resolve) { resolveClass(c); } return c; }
572 :
デフォルトの名無しさん :2011/03/01(火) 02:03:44.27
■SimpleLoader.java (続きの続き) private byte loadClassData(String name)[] { File file = new File(name); try { FileInputStream in = new FileInputStream(file); byte[] buf = new byte[(int)file.length()]; in.read(buf, 0, (int)file.length()); return buf; } catch (Exception e) { e.printStackTrace(); return null; } } public static String dotToSlash(String cname) { return cname.replace('.', System.getProperty("file.separator").charAt(0)); } protected String getPathBase() { return _pathBase; } protected Hashtable getCache() { return _cache; } }
573 :
デフォルトの名無しさん :2011/03/01(火) 02:08:56.61
でmainの引数として置いてあるclassのパスを渡して実行できるはず なのですが、■SimpleLoader.javaの c = defineClass(name, data, 0, data.length); のところで、なぜか、 Class file: C:\\loaderClasses\SpeciallyLoadedClass.class File size: 830 Class file: C:\\loaderClasses\LoadedClass.class File size: 138 Class file: C:\\java\lang\Object.class java.io.FileNotFoundException: C:\java\lang\Object.class (指定されたパスが見つかりません。) と、「LoadedClass.class」を読みに行ってさらに、 「java\lang\Object.class」を読みに行こうとして FileNotFoundExceptionが発生します。 ステップ実行してもいきなり、■SimpleLoader.java の byte data[] = loadClassData(fileName); に飛んでくる感じです。 説明下手で大変申し訳ございませんが、 どなたか上記現象について何かわかる方おられましたら、 ご教授のほどよろしくお願い致します。
574 :
デフォルトの名無しさん :2011/03/01(火) 04:05:18.55
>>558 色分けできるエディタならなんでもいいと思うが
俺はWinではサクラエディタ使ってる。
ツリー解析して飛べるのが便利
>>570 描画をpaintでやってるか?
そいや少し前に宿題スレで、paint(g)以外で描画するサンプルを使ったものがあったが、その派生じゃないだろな。
宿題スレの内容は知りません。通常の方法です。
>>543 にあるようにpaintComponentに行かせ全サイズ描画してます。
そのイメージの上には何も置いてないので描いても100より右は何かに描画をクリップされて止められてる感じです。
revalidate()
入れるタイミングがよくわからないですが MyPanel.revalidate(); もサイズ変えた後でいれてあるんです。
お前の質問がよくわからないのですが ソース貼れよクソが
>>566 あるクラスをロードするにはその親クラスが必要なのだからそれらを読みに行くことについて不思議はないよな
問題はなぜjava.lang.Objectに対してfindSystemClassが失敗してるのかという一点じゃないのか
せっかく例外をcatchしてるんだから握りつぶさずに表示させてみたらどうよ
>>579 そうだな、どうも説明だけじゃ見つかりそうもないから、一式アーカイブしてどこかにうpしてくれ。
583 :
542 :2011/03/01(火) 12:39:08.20
少し掴めました。 問題は setPreferredSize() class MainPanel extends JPanel { public MainPanel() { setPreferredSize(new Dimension(Width,Height)); } public void paintComponent(Graphics g) { super.paintComponent(g); g.drawImage(img,0,0,this); } } これをMyPanelで実体化してるんですが、拡大後、外から MyPanel.setPreferredSize(new Dimension(Width,Height)); としても最初にコンストラクタで100*100に設定したものが固定されているようです。
相談するつもりがないなら自分の日記でやってくれ 相談するつもりがあるなら必要な情報を隠さずに最初から全部書いてくれ
それは最初からここに問題があるとはわかっていなかったので。 外から setPreferredSize(new Dimension(Width,Height)); を変更するにはどう書けばいいのでしょうか?
普通にそのパネルに対して setPreferredSize を呼べば上書きされる
だから今まで示された情報からでは問題を特定できそうにないと思われるので、
>>582
587 :
542 :2011/03/01(火) 14:35:23.55
見た setLayout(null); を消して resize(Width,Height); の代わりに pack(); setPreferredSize はレイアウトマネージャが使うものだからレイアウトマネージャが無かったら効果がない フレームの resize はウィンドウ枠込みのサイズだから中身のサイズを 200, 200 にしたいならいまいち
おお、できました。 そういう問題でしたか。 お手数かけました。 どうもありがとうございます。
jspでのformでtext inputされた数値の文字列を 毎回doubleに変換するのめんどくさいのですが 自動でテキストから数値型に変換してくれる方法ないのでしょうか strustには入力が数値かどうかチェックする機能あるのに 変換機能がないのって変じゃないのですか
double 型から int 型への変換するとき DecimalFormatでstringにしてからintに戻すのと キャストで int i = (int) d;というようにするのではどちらがいいのでしょうか? とあるサイトではキャストは危険だから極力使わないほうがいいと書いてありましたので。
プログラム板でも聞いたけど人あんまいないんで double 型から int 型への変換するとき DecimalFormatでstringにしてからintに戻すのと キャストで int i = (int) d;というようにするのではどちらがいいのでしょうか? とあるサイトではキャストは危険だから極力使わないほうがいいと書いてありましたので。
スレ間違えてたスマソ
20分で人いない判断かよw キャストは動的型変換なので静的チェックが十分利かずバグが入る可能性が高まるってだけで、 実際に何が行われるのか理解して使う分には何の問題もない。 ただ(int)はゼロ方向に丸められるので最近の整数に丸めたいとかならMath.roundでlongにしてからintへ等別手段を。
595 :
592 :2011/03/01(火) 17:22:40.59
>>594 ありがとうございます。
Math.roundでやってみます。
596 :
566 :2011/03/01(火) 19:29:30.36
>>575 ご教授ありがとうございます。こんなところがあるんですね。
https://gist.github.com/848928 として貼り付けました。
>>581 大変申し訳ございません。
この質問において
c = findSystemClass(name);
はコメントアウトしておりました。
と言いますのも、この演習においてclassファイルをbyte配列に読みこんで
defineClassによりクラスを取得ということをやりたかったのですが、
「LoadedClass」とか定義解決するには「package loaderClasses」を
外部クラスとして参照しなきゃいけない(?ここが既に間違ってますでしょうか。。?)
そうすると、必ずfindSystemClassで解決してしまう。
そうならないようにコメントアウトして、実行すると上記URLの
最下部のようになります。
そもそもの環境づくりが間違っているのかもしれませんが、
LoaderClassesパッケージを入れたディレクトリにObject.classファイルを
探しに行ってしまいます。。
597 :
デフォルトの名無しさん :2011/03/01(火) 23:13:17.59
申し訳ありません、ここに質問していい内容なのか微妙なのですが、複数計算機構成でのJavaDBについて質問です。 Windows7(64bit)マシンとLinux(CentOS 5)マシンの2台構成で、LinuxをDBサーバ、 Windowsをクライアントにして接続実験をしようとしています。 Linuxのファイヤーウォールは、Derbyで使用する1527のTCPとUDPを「その他のポート」に設定しております。 さて、Linuxにユーザー権限でログインし、Derbyをインストールしたディレクトリのbinから startNetworkServerを起動したところ、 Tue Mar 01 23:00:27 JST 2011 : セキュリティーマネージャーが Basic サーバーセキュリティーポリシーを使用してインストールされました。 Tue Mar 01 23:00:27 JST 2011 : Apache Derby Network Server - 10.7.1.1 - (1040133) が起動し、ポート 1527 で接続の受け入れ準備が完了しました という表示がされました。 そこで、Windowsマシンの側で接続してみようと思い、EclipseからDB開発のパースペクティブを開き、DBに接続しようとすると、 Test へ接続できませんでした。 Testへの SQL モデル接続 接続の作成中にエラーが発生しました。(エラー: java.net.ConnectException: ポート 1527 のサーバー 192.168.1.x への接続中にメッセージ Connection refused: connect でエラーになりました。) java.net.ConnectException: ポート 1527 のサーバー 192.168.1.x への接続中にメッセージ Connection refused: connect でエラーになりました。 Testへの JDBC 接続 接続の作成中にエラーが発生しました。(エラー: java.net.ConnectException: ポート 1527 のサーバー 192.168.1.x への接続中にメッセージ Connection refused: connect でエラーになりました。) java.net.ConnectException: ポート 1527 のサーバー 192.168.1.x への接続中にメッセージ Connection refused: connect でエラーになりました。 との表示がされてしまいます。「あれれ?」と思ってLinuxマシンからlocalhostの1527へtelnetしてみたところ、内部に対してはポートが開いているのが確認できました。 が、WindowsマシンからtelnetするとConnection Refusedと言われてしまいます。 ファイヤーウォールには穴を開けているため、何故接続できないのか分からず、悩んでいます。 ご回答下されば幸いです。
>>597 telnetでつなげられないならJava関係なさそうだが
Windows側のファイアウォールじゃなくて
Linux側のファイアウォール的なものが開いてないんじゃない?
iptablesとかいじった?
599 :
デフォルトの名無しさん :2011/03/01(火) 23:35:15.72
>>597 Linuxのファイヤーウォールは一応設定していて、
GNOMEのGUIの
システム→管理→セキュリティレベルとファイヤーウォールの設定
から、「その他のポート」に1527のTCPとUDPを指定しています。
ここに177を指定してXでログインできるようにしているので、反映されてると思ってるのですが、
現象面で見るとポートが開いていないように見えてしまって…
このスレに複数台の環境でDerbyを使っている人がいたら、同じような現象が発生してそれをクリアしてるのではないかと
期待した次第です。
600 :
599 :2011/03/01(火) 23:35:58.72
>>599 逆にWindowsにderby入れて
ファイアウォール開けてLinuxからは入れるかやってみたら?
十中八九Linuxの設定周りだと思うよ
>>601 今確認してみたところ、同じようにrefuseされました。
いずれにせよ、通信設定周りの問題である可能性が濃厚ですので、
自分でしばらく試行錯誤してみます。
お付き合いいただきありがとうございました。
603 :
602 :2011/03/02(水) 01:19:06.45
>>596 親ローダを差し置いてロードする変則クラスローダを作りたいわけでなく、
そのSimpleLoaderはURLClassLoaderの真似事をさせたいだけじゃないか?
クラス検索を最初に親に任せる基本手順(findSystemClassの辺り)は行わせるようにしないとやっかいなことになる。
そして多分SimpleLoaderのターゲットであろうSpeciallyLoadedClassクラスだけをクラスパスの通っていない場所に置く。
LoadedClassクラスはLoaderMainでも使用している公開のインタフェイスなのでクラスパスを通す必要がある。
例えば、
C:\hoge\LoaderMain.java
C:\hoge\SimpleLoader.java
C:\hoge\loaderClasses\LoadedClass.java
C:\hoge\loaderClasses\SpeciallyLoadedClass.java
のように配置しておきC:\hogeをカレントディレクトリにしてコンパイルする。
javac LoaderMain.java loaderClasses\SpeciallyLoadedClass.java
その後、SpeciallyLoadedClass.classだけを、
C:\moga\loaderClasses\SpeciallyLoadedClass.class
のようにクラスパスの通っていない場所(C:\moga)にloaderClassesディレクトリを作って移動しておき、
java LoaderMain C:\moga
のようにすれば、
Class file: C:\moga\loaderClasses\SpeciallyLoadedClass.class
File size: xxx
loaded : class loaderClasses.SpeciallyLoadedClass
doIt: Hello from loaderClasses.SpeciallyLoadedClass
loaded : loaderClasses.SpeciallyLoadedClass
のように出力されて、パスが通っていないSpeciallyLoadedClassクラスがSimpleLoader自身によってロードされる。
コンパイルはSpeciallyLoadedClassのソースを最初からC:\moga\loaderClasses\SpeciallyLoadedClass.javaに置いて、
javac LoaderMain.java C:\moga\loaderClasses\SpeciallyLoadedClass.java
ならクラスファイルを移動する手間が省ける。
何クラスを自作ローダでロードしたいのか辺りがはっきりしないのでこれでいいか分からんが。
javaではassertはあまり使わず例外スローが美徳でしょうか?
javaではキャッチアンドリリースが美徳です
>>606 ありがとうございます。
例外を使ってきます。C,C++から来たのでついassert書きたくなるんですが
いや書くだろ…プロジェクトによるだろうけど。 assertを判定処理代わりにするのは問題だと思うが、事前、事後条件はassertしたりしないか。 コメントで書くより有益だし。
assertはErrorを投げるから、StackOverFlowとかOutOfMemoryぐらい予測できない現象をチェックするのに使う コンパイル時の設定で消せるから、開発向けに使えばいいと思うよ
610 :
596 :2011/03/02(水) 19:27:25.33
>>604 ご教授ありがとうございます。
なんとなく理解でき、実行することができました。
LoaderMain.javaの型解決を行うには、
LoadedClassインターフェースしか必要無いんですね。。
すいません、根本的にここを理解してしませんでした。
で、SpeciallyLoadedClassはクラスパスから外して、
.classバイナリを読ませるようにして、その他
defineClassから再帰的にSimpleLoader#loadClass()を
呼んで要求される?
(ここがdefineClass()の内部を追えてないのでよくわからないんですが。。
上記例のSpeciallyLoadedClass#doIt()を呼んだ際にも、
勝手にSimpleLoader#loadClass()が呼ばれる。。)
loaderClasses.LoadedClass
java.lang.Object
は親にまかせてfindSystemClass()で処理すると。
丁寧なご教授ありがとうございました。
assertは必ず成立する(はずの)ことに対して宣言する。 基本的に、手続き的な確認が容易な、 1つのファイル内で閉じている範囲で必ず成立することが確定できるようなものに対して assert を使うというふうにするのが簡単。 例えば、配列やコレクションなどをフィールドに格納する場合は 防御コピー後に事前条件の確認を行わないと無意味なので、 内部ロジックの奥底でも例外を使う。
612 :
デフォルトの名無しさん :2011/03/03(木) 00:15:48.34
JavaSE6とNetBeans6.9を使っているのですが、 例外処理にe.printStackTrace();と書くとNetBeansから 「Throwable#printStackTrace()を削除してください」と 警告されてしまいます。 実行できますが。 printStackTrace()は使っちゃいけないことになったのですか?
成立するはずのことをチェックするはテストの役目でないの?
try{} catch(Exception ex){ex.printStackTrace();} javaの定石。アホだから
駄目プログラマ乙
awtの警告で 「シリアライズ可能クラス AWTTest は long 型の static final serialVersionUID フィールドを宣言していません」 で↓の記述を private static final long serialVersionUID = 1L; Serializableをインターフェース継承しているかららしいですが、 これはなぜIDの実装が必要なのですか?
入門で教えたりするから今やコボラー以上のお荷物が大量生産されております
>>617 そのIDがクラスのバージョンだから。
あとは自分で調べろ。
antlrをバージョン2から3にあげると、何かうれしいことありますか? 今まで出来なかったすご技ができるとか
>>615 チェック済み例外の是非をどうこう言うつもりはないが、
Webサイトや書籍のサンプルコードに平気でこんなものが出てくるのは
チェック済み例外のせいだよな
いくら「エラー処理は省略しています」と断ってあっても初心者はこれでいいんだと思ってしまう
>609 コンパイル時でなく実行時な。パッケージやクラス単位でスイッチ可能。 基本、assert文は、コード修正やリビルドが必要なぐらい深刻な異常を 自己診断するとき用と割り切ってるけどなぁ。 ところで副作用付きassert文を弾き飛ばすPMDルールとか作ったら需要あるかな?
623 :
デフォルトの名無しさん :2011/03/03(木) 17:59:25.02
そう思うなら、お前らが本でも書けよ
最悪RuntimeExceptionでラップして投げ直すくらいやってくれたらよかったのに
>>619 クラスにバージョンが必要なんて不思議ですぅ
ありがとうございました。
>>624 自分で処理しないならErrorにした方がいいとか
javaで3Dグラフィック扱いたいならどうすればいいでしょう?
jogl使うといいでしょう
629 :
625 :2011/03/03(木) 22:25:15.19
>>619 なるほど、たとえばファイルにクラス情報を書き出した後読み込むとき、
同じクラスでも変更があったりして、
書いたときのバージョンと違うと困るときがあるからIDつけておこう!
これで間違いがおきにくいね!やったね!ということですか。
わかりました。どうもです。
わざわざserialVersionUIDを宣言しているってことは、 シリアライズに対して考慮しているってことを宣言しているのと同等 デフォルトに任せないで、ちゃんとreadObjectとか安全に実装しろよ?
631 :
デフォルトの名無しさん :2011/03/03(木) 22:47:50.07
初心者です ここのサンプル(kowaza.boo.jp/06mouse/onm-06.html)で 四文字熟語の部分を画像にして、 オンマウスで画像が変わり、更にリンク先をそれぞれ持たす。 そして、オンマウスで下に出てくる文字もそれぞれ画像にすることって可能ですか?
632 :
625 :2011/03/03(木) 22:52:22.96
>>630 今はただの練習用なのでやらないですが、覚えておきます。
ありがとうございます。
>>613 例えば
public void a(int i) {
if(i > 0) b(i);
}
private void b(int i) {
assert i > 0;
...
}
をどのようにテストするつもりかに興味がある。
private は外しちゃだめだよ?assertする根拠の一つなんだから。
>>632 アプリケーションで閉じててシリアライズなんてやる予定なんてなければ
わざわざserialVersionUIDを宣言するよか
警告を無視する設定にした方が、マシと言いたかっただけだのだが
シリアライズをちゃんと実装するのは大変だぞ?
標準ライブラリのHashMapだって、抜けがあるし
635 :
625 :2011/03/03(木) 23:18:52.10
>>634 なるほど、ありがとうございます。
警告無視設定にします。
637 :
デフォルトの名無しさん :2011/03/03(木) 23:54:55.70
質問! GUIをnetbeansやwindows builderで作成して実行部分をJNIやJNAで実装できるモン? またそんな人いる?
例えば 2011年3月2日0:00をミリ秒で取得するにはどう書けばいいでしょうか?
他人の質問はガン無視して自分の質問にだけは答えてくださいってか
>>638 Calendar c = Calendar.getInstance();
c.clear();
c.set(Calendar.YEAR, 2011);
c.set(Calendar.MONTH, Calendar.MARCH);
c.set(Calendar.DAY_OF_MONTH, 2);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
System.out.println( c.getTimeInMillis() );
2ちゃんははじめてか坊や?w
>>633 TDDならbのi > 0は自明だからaをテストすればコードカバレッジは100%
そうでないなら、非公開メソッドは使用する全ての公開メソッドが把握できるので、参照もとをテストすればカバレッジ100%。
黙れよ鼻糞
確実に答えてもらいたければはてなに行けばいいんじゃね こんなところでレスもらえなくて逆切れするより
本当に新参の巣かと思うくらい食いつくんだな。 アホなのかお前ら。
ここ初心者スレでしょ^q^
人間初心者はお断りです^p^
>>643 なんでここでTDDやカバレッジが出てくるのか分からんが
成立するはずの
assert i > 0;
をチェックするはテストなるものはどう書くのさ?
まあ、仮にテストが書けたとしても、
実行可能なメモ書きを書いてはいけないという理由にはならないから
どうでもいいんだけど
どう書くというか、書く必要がないんじゃないの bに渡す値が正しいか調べるのは、それは既にやってるようにbを呼ぶ直前に入れる privateメソッドなら全ての呼んでる場所が解る、すべての呼び出しもとでチェックできる 呼び出しもとでテストカバレッジを100%にすればそのbは期待通り値が渡っていることになる 成立するはずのことはチェックできているので、そのassertは必要が無い コンパイラぶっこわれたレベルを調べてる TDDは余計だったけど、言いたいのは作られたprivateメソッドはリファクタリングの結果だから十分テストされていることになるのでassertは必要ないということ プログラミングミスを拾いたいのであれば、ミスの時はillegalArgumentExceptionを投げさせて、 例外が正しく起きることをテストしておく
成立するはずのものは成立するはずだから、何も書くなと? プログラミングミスを拾いたければ public void a(int i) { if(i > 0) b(i); } private void b(int i) { if(i <= 0) throws IllegalArgumentException(); ... } とかけとか?
メソッドにいちいちそんな IllegalArgumentException 書くのは、 あんまりしないほうがいいな コード書いてる途中で変な変数入れば、別のとこで、まあたとえば、 配列にアクセスしようとしたときとかに ArrayIndexOutOfException とか 何かしら例外投げるだろう そういうのにまかせたほうがコード短くて済む (でも、たまに、バグの原因かわからなくなって変数チェックしないとデバッグ進まない感じが したときとかは、そういうコード入れてもいいかもしれない)
>>653 そう思うよ。@paramや@throwsでだめな呼び出し方があると文書化できるし、実行時にもわかる
正しく処理されてだめな時はだめになるかを成立しているかは、テストで確かめられる
assertはエラーだからVMレベルで実行不可能という意味で使いたいところかな。書くのは簡単なんだけど
>>654 「何かしら例外を投げるだろう」はコードの浅いところで起きた方がいいと思う
それに例外が無いということはすべての変数が受け入れ可能って仕様になるから
呼び出しミスなのにメソッドの実装ミスを意味させることになる
今回の場合設計上悪い呼び出し方があるって解っていることだし
コードは短い方がいいけど、間違いが解りやすくなってる方がよりいい
つまらん
657 :
デフォルトの名無しさん :2011/03/04(金) 12:53:39.03
>>654 の書いたコードは使いたくないな…
基本的にはJavadocに書いた仕様を満たすようにすりゃ良いとは思う
引数の仕様にi <= 0はダメって書いてあるならIAE投げるのが普通だろ
仕様と申されましても、 誰が使うか全くわからんくらいに大量配布するAPI作るってんならともかく、 ふつう目的の機能を動かすためにプログラミングするんだろう どうせ投げない例外処理を書いてもしょうがない (当たり前だが、失敗しそうなことに対して自動テスト書いてくことのほうが大事)
659 :
デフォルトの名無しさん :2011/03/04(金) 15:35:49.46
660 :
デフォルトの名無しさん :2011/03/04(金) 15:45:04.87
素人というより
>>658 は育った環境(会社/学校)が悪いんだろうな
そもそも自動テストを「失敗しそうな事」とやらの検証の為に書いている時点でおかしいだろ
自動テストは仕様通りの動作をする事を保証する為に書く物だ
その例外が発生しない事をお前はどうやって保証するつもりだよ
「ぼくがぼくの為に書いてぼくが使ってるAPIなんだから絶対大丈夫だよ!」とでも言うつもりか
幾つかの標準APIに不正な値を入れると、IllegalArgumentExceptionではなく、ArrayIndexOutOfBoundsExceptionが戻ってくる事実。
662 :
デフォルトの名無しさん :2011/03/04(金) 16:00:47.48
パブリックAPIならきっちりチェックするのは当然 範囲外の値を引数に指定したらArrayIndexOutOfBoundsExceptionをスローするとドキュメントに書いてあるなら 別にそれはそれで構わないが、エラーを出さずに正しく動いているように見えてしまったり 後になってからエラーが出たりするのは最悪
664 :
デフォルトの名無しさん :2011/03/04(金) 16:45:10.42
>>661 それはそういう仕様だとJavadocに書いてあったりしないか?
仮に書いていなかったとしても、標準APIでもある事例だからと言って
問題解決を複雑化したり、バグの温床になるようなコードを書く理由にはならない
Javaは上位互換を大事にしている言語だから
実際はその仕様はイケてないと思われているけれど
スローする例外の種類が変わると互換が崩壊するから
なおしたくてもなおせない可能性だってあり得るわけで
パッケージ単位で統一されてりゃ不正なnullに対して NullPointerException投げるんでもIllegalArgumentException投げるんでもどっちでもいい。 そーいやmethod(@NonNull String arg)みたいなアノテーションってどうなったんだっけ?
666 :
デフォルトの名無しさん :2011/03/04(金) 17:01:45.67
>>665 JSR308が動いてないから無かった事になってるんじゃない?
俺様仕様うざい
668 :
デフォルトの名無しさん :2011/03/04(金) 17:05:00.32
どこから飛んでくるかわからない例外投げられる方がうざいな
そんなことより野球しようようぜ
670 :
デフォルトの名無しさん :2011/03/04(金) 17:57:36.22
>>654 はすなおにごめんなさいすればいいとおもう
バカjaver同士なんだから仲良くしろ
仲良くしたいんだけど俺みたいなバカの相手してくれる人がいないんだよね
>>665 そういう機能入れだしたら歯止めがきかなくなるんだよな
俺俺JavaだらけになってC++みたいになる
674 :
デフォルトの名無しさん :2011/03/04(金) 21:59:25.33
>>673 似たような物でグーグルがインターフェイスでバリデーションかけれるフレームワークリリースしてたけど
あれはインターフェイスでバリデーションかけられるから良いんであって
@NonNullとか怖ろしい真似するのはやめて欲しいよな
synchronizedの中でObject.wait(〜)する場合、waitが終わったスレッドから実行されるでOK?
Javaで彼女を作ってくれ
成立するはずのものは成立するはずだから、テストも書くなよ?
678 :
デフォルトの名無しさん :2011/03/04(金) 22:23:35.85
>>675 synchronizedで他のスレッドが実行されてる時は
そのスレッドがロックを解除するまでwaitが維持される
public void a(int i) { if(i > 0) b(i); } private void b(int i) { if(i <= 0) throws IllegalArgumentException(); ... } この IllegalArgumentExceptionを投げる分岐はVMレベルで到達可能なのか?
>>664 書いてはある。ただし明示的チェックはしていないとあるし、throwする例外だと宣言されているわけではない。
>>654 と同じ方針だと思われる。
> 領域が境界内にない場合は、ArrayOutOfBoundsExceptionがスローされることがあります。ただし、明示的な境界チェックは必ずしも実行されません。
NullPointerExceptionとArrayOutOfBoundsExceptionは明示的にチェックされていないことが多い。
a()以外のメソッドからb()が呼ばれる可能性を否定できないんじゃね? 仮にそのクラスにそれ以外メソッドがないとしても、リフレクション経由の呼び出しもあるし。
>>678 Thread.sleepだと維持されるけど、Object.waitだとされないんだよ…
俺も今日試して知ったんだが…
リフレクションでprivateメソッドをinvokeできたっけ?
>>680 java.lang、java.io、java.utilあたりは真面目に境界チェックやnullチェックやってたような。
>>683 setAccessibleすりゃできるよ。
686 :
デフォルトの名無しさん :2011/03/04(金) 22:46:59.47
>>679 お前はその状態からbが呼ばれる複数の方法が想像できない程度のバカなのか?
仮にその二つのメソッドしかないプログラムならば、お前はそんなコードを書くバカなのか?
違うだろ?
>>681 privateメソッドなのに
b()が呼ばれる可能性を否定できない!
とそのクラスを開いているエディタの前で頭抱えるのか?
ああ、リフレクションね。
そんなこと言ったら、Threadの推奨されないメソッドを使ったりすると
いつでもどこでもチェックされる例外が投げられる可能性があるから、
どこでも、Exceptionをキャッチしとかないとね。
>>684 真面目にチェックしているAPIを呼ぶ前に、値のチェックをするべきかって話。
APIからにしろ、ユーザーコードにしろ、例外が投げられて処理を抜ける。
689 :
デフォルトの名無しさん :2011/03/04(金) 22:53:58.28
>>679 のコードは実在するならば書いた奴をクビにしたいレベル
>>686 VMで到達不可能なところにassertを書くべきならば
IllegalArgumentExceptionを投げる分岐は到達不可能なのだから
IllegalArgumentExcpetionを投げるよりはassertを書くべきだろ
と主張したつもりだったのだが、
便所の落書にこんなにつらづらと書くのは面倒だし
意図は分かるだろうと手抜きをした俺は馬鹿なのか?
>>690 >便所の落書に
真面目な返事を期待したのが(ry
692 :
デフォルトの名無しさん :2011/03/04(金) 23:13:12.17
アサーションと例外どちらにするかを選択しようとしてる時点で間違ってるだろ アサーションはあくまでテストの為の物なんだし
アサーションは実行可能なコメントだろ。
>>679 だけ見てassertかIAEか、と読み取れる奴はエスパーとしか。
あさーとなんて自動テスト書いてれば不要
IAEは公開メソッドの事前条件チェックにおいてのみ使うべき。 事後条件、不変条件および非公開メソッドの事前条件はassertを使う。
697 :
デフォルトの名無しさん :2011/03/04(金) 23:39:23.29
そもそも、assertとか使わん
どうでもいいけどなんでassertをキーワードにしちゃったんだろう もうちょっとマシなやり方あったんちゃうんかと
assertとか使わん(キリッ とかいらんから。 そういう奴はjava.util.loggingは使わん(キリッって言ってんだろうな。
700 :
デフォルトの名無しさん :2011/03/04(金) 23:45:11.46
うんこ
702 :
デフォルトの名無しさん :2011/03/04(金) 23:48:24.54
>>699 ロガーも実際使わないだろ?
標準APIや言語機能であっても
イケてなければ代わりのものを使うのは
カッコ悪いことじゃないよ
いや普通に使うが。
そっすか カッケーッスネ
>>696 防御的コピーの前に事前条件チェックは意味ないし、
オブジェクトの責務を考えれば、防御的コピーはそれをフィールドに格納するクラスが行うべき。
したがって、非公開なメソッド(コンストラクタを含む)まで事前条件のチェックが遅延されるかもしれないし、
その場合そこでIAEを投げざるを得ない。
また、オブジェクト指向の意味を考えれば
オブジェクトは、そのメソッドの呼び出しかたや順序に依存せずに整合性を保つことを保証することで、
一度に考えなければならない複雑さを各オブジェクトに分散・カプセル化しているのだから、
privateなどでカプセルの内側でありオブジェクト指向の範囲外であることを明示でもしてない限り
渡されてくるオブジェクトに対して、事前条件のチェックがされているのか、それとも遅延されているのか
判断する材料をそのオブジェクトの外に求めるのは、カプセル化に逆行する。
706 :
デフォルトの名無しさん :2011/03/05(土) 00:26:26.75
java virtual machine launcherによるエラーがOKして消してもまた出てきてしまうんだが、 対処法ある?
707 :
デフォルトの名無しさん :2011/03/05(土) 01:05:01.82
708 :
デフォルトの名無しさん :2011/03/05(土) 02:08:54.44
参考になるオープンソースプロジェクト教えてください
>>705 > 防御的コピーの前に事前条件チェックは意味ないし、
意味不明
>>679 ありえない。だから例外やassertは無くてもいい
privateメソッドは参照もとをテストすれば実装が正しいかわかるから
でもプログラミングミスを防ぐ目的なら入れてドキュメントを作るとなお良い
入れるとして、assertよりillegalArgumentExceptionの方が意味が合う
そもそもassertは、使われるかもしれないし使われないかもしれないから、チェックにならない
>>712 だから、assertは実行することもできるというオマケつきのコメントだと
コメントは必要ないと主張するのか?
するーしろ
java.util.concurrent.locks.ReentrantReadWriteLockが遅くて泣ける。
>>713 コメントに書くくらいならドキュメントに書け
情報分散させんなカス
コメントに書いてjavadocで落としたらええがな
718 :
デフォルトの名無しさん :2011/03/05(土) 15:41:03.36
とりあえず、到達可能か否かは無駄な議論じゃないか? 根本的にassertと例外を比較してるのが間違いだと俺も思う assertはあくまで実行可能なコメントでありテスト用途だと思うし コンパイル方法によっては実行されない以上は例外の代用たり得ない コメントとしては、プログラミング中のミスも把握しやすいし悪くはないと思うよ 他の人がソース読んだ時も、条件が明示的に書いてあって見通しは良くなると思う ただErrorで落とすようなものだし、一応Javadocにもその旨記載した方が良いんじゃない? 意図的にエラーで落とすプログラムってのが俺には想像付かないけど経験不足なんだろう 俺ならエラーで落とすくらいなら、例外投げてキャッチしてログ吐いてから終了って手順を取る
とりあえず、枝豆
引っかかったら自分自身が間違ってる、もしくは自分と利用者の関係が 直接「お前の使い方が間違ってる」と怒鳴りに行けるような関係ならポリシー次第でassertでもいい 代わりにコードに怒鳴らせる必要があるなら例外
サンのジャバ・コンパイラはいつも優しくしてくれました
質問すれなのにバカ自説披露するバカ
723 :
デフォルトの名無しさん :2011/03/05(土) 16:55:00.38
>>722 assertと例外の質問があったからだろバカ
正解もわからないバカが勝手に質問に答えて、自説披露するのがこのスレの伝統
725 :
デフォルトの名無しさん :2011/03/05(土) 17:40:56.05
>>718 が一般的だと思うよ
assertは例外の代わりにはならないし
例外もassertの代わりにはならない
正解なんかねーよ 内部をどう作ろうが勝手。プロジェクトのポリシー次第。 約束の通じない不特定多数が使うライブラリに関しては、引数はきっちりチェックして例外を投げる。
privateメソッドが成功するか確かめるのはテストにやらせれば良くて 例外にしろassertにしろコード中に書かなくてもいいってのを説明したのが元々 理解したのか知らんけど、テストでわかるのに到達するしないの話になるのも知らん 引数チェックはもちろん入れたっていい。でもテスト通れば一応期待通り動いてるのは解る チェック入れるならassertより例外を使うのが通例で、入れたらドキュメント(コメント)は書けと言ってる 例外なら@throwsで定型のドキュメントが書ける assertなら@throws AssertionErrorだろうけど、俺はテストライブラリ以外でこれを見たことが無い
728 :
デフォルトの名無しさん :2011/03/05(土) 18:17:22.49
誰かStackOverFlowに投稿してくれないかな
今度のオラクルさんは優しいんでしょうか・・・?
gc発生後のヒープダンプを一定期間ごとに自動で取る方法ってある?
733 :
デフォルトの名無しさん :2011/03/05(土) 19:48:06.04
実装が仕様にしたがってなかったときの挙動を仕様に書けとか
735 :
デフォルトの名無しさん :2011/03/05(土) 20:46:04.90
モジュール内のバグ発見のために NullPointerExceptionやIllegalArgumentExceptionを発生させるってどうなのか? 外部から引数ありのpublicメソッドがNPEやIAEを投げてきたら 自分が渡した引数に問題があると思ってしまうのが自然じゃないのか?
737 :
デフォルトの名無しさん :2011/03/05(土) 23:32:39.07
DbCを理解してない奴にassertのなんたるかを説いても無駄。 末端コーダーの手抜きコードなんてさわりたくもないな。
バカjaver同士で喧嘩
741 :
デフォルトの名無しさん :2011/03/06(日) 00:53:55.81
>>739 こんなことを言う奴のコードなんて触りたくもないな。
ぬるぽ
public void doSomething throws Exception{ //タスク実行 } を、タスク実行の部分を Thread t = new Thread(new Runnable(){ //タスク実行 } のように非同期に書き換えたのですが Runnable#run()の中で発生する例外を呼び出し元で処理させるようにしたいのですが 一般的にはどのように書くのがよいのでしょうか?
Stringのメソッドcontainsでint型のjをチェックしたいとき contains("" + j)とするとできるのですが この引数 "" + j がCharSequenceになるのはどういうことなのか わかりません教えてください。
文字列 + 数値 の結果は、数値を文字列に変換した後で2つの文字列を結合した文字列になる。 これは言語仕様でそう決まっている。 文字列はStringクラスのインスタンス。 StringクラスはCharSequenceインターフェイスを実装している。 だから文字列をCharSequence型として扱うことができる。
>>745 今時非同期処理はThreadじゃなくてconcurrencyユーティリティを使いな
Callableのcallにタスクを書いてExecutorService作ってsubmit
Futureオブジェクトが返るから、それをgetする時にcallで呼んだ例外が解る。
Swing GUI使うならSwingWorkerで、タスクをdoInBackgroundに実装する方が楽
オブジェクト型のクラスで newをしなくていいクラスと newをしなくてはいけないクラスの違いって何?
>>751 なるほど。。ありがとう
調べてみます。
JSTLで、${var} の値が表示されず、そのまま「${var}」と表示されてしまって困ってます。 なにか原因に心あたりはありませんでしょうか。 たとえば <c:forEach var="i" begin="1" end="3"> <p>i=${i}<p> </c:forEach> と書いた場合、実行結果が <p>i=${i}<p>
<p>i=${i}<p>
<p>i=${i}<p> となります。期待するのは <p>i=1<p>
<p>i=2<p>
<p>i=3<p> となります。ループはしているので、<c:forEach>は動いているのですが、${var}がうまく展開されません。
ecplipseのエラーで !ENTRY org.eclipse.ui.ide 4 4 2011-03-06 22:46:39.946 !MESSAGE ワークスペースの保管の問題 !ENTRY org.eclipse.ui.ide 4 1 2011-03-06 22:46:39.946 !MESSAGE ワークベンチの状態を保管中に問題が発生しました。 !SUBENTRY 1 org.eclipse.ui.ide 4 1 2011-03-06 22:46:39.946 !MESSAGE 内部エラー !STACK 0 java.lang.NoSuchMethodError: org.eclipse.core.internal.localstore.HistoryStore2.<init>(Lorg/eclipse/core/internal/resources/Workspace;Lorg/eclipse/core/runtime/IPath;I)V at org.eclipse.core.internal.resources.ResourcesCompatibility.createHistoryStore(ResourcesCompatibility.java:41) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.core.internal.resources.ResourcesCompatibilityHelper.createHistoryStore(ResourcesCompatibilityHelper.java:73) at org.eclipse.core.internal.resources.ResourcesCompatibilityHelper.createHistoryStore(ResourcesCompatibilityHelper.java:47) at org.eclipse.core.internal.localstore.FileSystemResourceManager.getHistoryStore(FileSystemResourceManager.java:406) at org.eclipse.core.internal.resources.SaveManager.save(SaveManager.java:1134) at org.eclipse.core.internal.resources.Workspace.save(Workspace.java:2006) at org.eclipse.ui.internal.ide.application.IDEWorkbenchAdvisor$5.run(IDEWorkbenchAdvisor.java:502) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121) おしえてちょんまんげ
756 :
デフォルトの名無しさん :2011/03/06(日) 23:02:27.63
JavaでExcelを操作したりって出来ませんよね? テキストファイルを1行ずつ読み込んでそれをセルに出力みたいな。 VBA使えってのは分かってます。 敢えてJavaでは出来ないのかなって。 そもそもJavaで特定アプリケーションやWindowsの機能とかって触れるのでしょうか?
C#使えば簡単 ほとんどJavaと変わらん
758 :
デフォルトの名無しさん :2011/03/06(日) 23:30:30.49
C#ってC言語系のMS版みたいなやつでしたっけ?
759 :
デフォルトの名無しさん :2011/03/06(日) 23:41:02.68
>>756 出来るよ
poiとかfisshplateでググれ
fisshplateなら日本語でサポートも受けれる
それはExcelファイルを出力してるだけ 操作してるわけじゃない
>>758 JavaライクなMSの言語
Windowsとの親和性は非常に良い
Excel操作のようなCOM相互運用の類は自由自在
>>756 カンマ区切りのテキストファイルに出力して Excel で読み込めば良いんじゃないかな
763 :
デフォルトの名無しさん :2011/03/06(日) 23:48:35.57
あぁ、起動してるExcelに出力したいって事?
Javaでやる意味は全く無いな .NETでやるか、WSHのVBSにでも書いておいてJavaから呼び出せばいい
765 :
デフォルトの名無しさん :2011/03/06(日) 23:53:04.37
excelのシートの入出力ならpoiとかfisshplateで事足りだろうけど excelの動作を制御したいならJavaは厳しいだろうなぁ
>>752 お前それJavaScriptの話じゃないのか?
>>756 Windowsオンリーで良いならJava-Comブリッジでがんばるとか
Javaにこだわるなら
VBScriptが妥当だな
実行中のExcelへJavaアプリからDrag&Dropでデータを送信することなら出来なくも無い気はする java.awt.dnd参照 JavaアプリからIEへのURL送信なら実績ある
770 :
デフォルトの名無しさん :2011/03/07(月) 12:34:51.66
Fisshplaeteで複数の別々のシートを扱う方法ってありますか? 同じ内容の複数のシートの使い方はわかったんですけど
ArrayListのアイテムをidで指定して取るようなクラスない?
idとは?
Mapのこと言ってるんじゃないの?
774 :
デフォルトの名無しさん :2011/03/08(火) 16:15:54.58
>>773 mapはforで回して走査とかできないんじゃないっけ?
forで回して走査できて、アイテムを一意な数字とかでサッと取得できるようなクラスないかい?
>>777 デフォでないのかと。
arraylistとhashmapを組み合わせればできそう?だけど。
Iterator使って走査すれば良いのでは?
>>776 Map#keySet()使えば拡張forは使えるけど
>>781 entrySet()
keySet()
values()
ここら辺の返り値に対してIterator(もしくは拡張for)を使えば良い。
用途によって使い分けてなー。
786 :
5 :2011/03/09(水) 14:08:38.28
とてつもなく今更ですが、
>>5 の原因が判明しました。
u23で修正された、java.io.tmpdirのbugfixによるものでした。
tomcat再起動したら、急にHibernateDaoSupportがNoClassDefFoundErrorになったんだけど、同じこと起きた人いないかな それまで何とも無かったんだけどね
Tomcatに変更点が反映されたからだろ
いやそういう変更はしてない 言ってみりゃprintln追加した程度のもんだ ライブラリはちゃんとlibにはいっちょる
790 :
デフォルトの名無しさん :2011/03/10(木) 17:52:34.28
1クラス(20万行)にある大半のメソッド(11万行)をコメントアウトしたいのですが、 大量のJavadocと干渉してブロックコメントが使えないときみなさんはどうしますか? Eclipse動かせない貧弱な環境(RAM256MB)なのでEmEditorでしこしこ書いているのですが…… 理想は「リファクタリングのための工数を1週間よこせ」なのですが、 それは夢物語なのでそれ以外でお願いします
>>790 >大半の
これが怖い。
途中に何があるかわかったもんじゃないw
>>790 選択範囲内を1行コメント化(+解除)みたいな機能使う。
EmEditorにその機能があるかは知らんけど。
Javaの記述規定でクラスのみ先頭は大文字で書けということですが 変数やメソットは全く大文字だめですか? 例えば CalcTestVer とかは calcTestVer となるのでしょうか? 何かバランスが悪い感じがしますが。
ソースを公開しない仕事で書いてるソースでもないってんなら自由にすりゃいい。 基本的には郷に入れば郷に従った方がいい。
>>790 20万行のクラスって時点で吹いた
なんか代用出来る機能はありそうだが
コメントパーサを書く時間とどちらが早いかだね
/* // */ ""ぐらい考慮すればいいだけだろうし
自分でプログラム書けよ 何行目から下の行全てに//つけるとか、 必要なメンバが分かってるならそれ以外につけるとか
>>790 Perl でプログラムを書くかなぁ……
ああそれ俺も図書館に買ってもらって読んだよ。 難しかったけど。画面出力のような命令はどうやってるのかよくわからなかったな。 自分でバイナリ書きだして実行させるのは俺には無理そうだとあきらめた。
>>800 >ソースコードをコピペしていけば作れるのかと思ったのですが、解決方法ご存知の方
まず自分の頭で考えたらいいんじゃないでしょうか?
>>801 どうも、ググッたほうが早かったみたいですね。
vimで開いて qaI//<ESC>j200000@a と打つだけジャン。 これだから文型のカスグラマわww
vimで開いて qaI//<ESC>jq200000@a と打つだけジャン。 これだから文型のカスグラマわww
>>790 一週間でどうこうなるもんでもないだろすでにそれは
コメントアウトすれば解決するのだろうか? ありえない
しかも Eclipse 動かせないとか 無茶苦茶にもほどがある
おまえら得意のclass Program だな
public class Main { public static void main( だろ
>>805 割り当てメモリ1.5GBのEclipseで4万行ぐらいあるファイル編集した際にコード補完でぬるぽ連発した経験からいって
20万行のファイルは仮に開けてもまともに編集できないと思う。
>>790 正規表現で行頭検索して置換文字を//にしてコメントアウトすりゃーいいんじゃないか?
viって手もあるけど
>>793 だめではないけど「そういう記法が前提」で書かれているプログラムもある。
リフレクションで何かするようなクラスが入ったjarファイルを使う際は気をつけたほうがいいかも。
バランスが悪いかどうかは主観の問題。「このコードは美しいか否か」「このコードは
私の気分を害しない表記法か否か」位でしかないので、あきらめるほかないと思うよ。
まぁJavaプログラマーが
private void DoAnything { ... }
とか見て「なんでdoAnythingじゃないんだ、キモイ」と思うのと同じだと思うけど。
>>790 正直驚愕した。
JNIの質問。 C++側でjavaのメソッドを呼んだ時、実際には呼んだだけだから、javaの方でその処理が行われるの? それともC++側で行われる?
なんで20万行なんてことになったん 自動生成かなんか?
>>798 JVMの仕様は安定しているから
今のところはそれで問題ないはず
1.5以降には対応してないはず
ここ暫くjavaなんてつかってなかったので再履修的な感じで今勉強してるんですが、finalって何のためにあるんでしょうか? あんまり使いどころないきがするんですが・・・。
クラスやメソッドにつけることはないな 定数宣言するときに public static final String HOGE_HOGE = ""; みたいなのはすごくよくやる
クラスやメソッドにもほんとはきちんと付けたほうがいいんだけどな オーバーライドや継承されたらまずいものっていうのは意外と多い
>>811 Java側。JVM起動してその中で処理を行う。
>>815 そこはあんまり、神経質になるとこじゃないな
そりゃまあ、一度定義したら変更しない変数は、プログラム書いてたら
いっぱいあるだろうが、無名クラスで、final つけないと参照できないとか
必要になったときだけ書いてればいいよ。
あとは、final static int XXX = 999; みたいに書いてあると、これはどこかで
使われる定数なのだなと人間にわかりやすくていい。
821 :
デフォルトの名無しさん :2011/03/11(金) 10:09:33.80
>>815 スレッドプログラミングをする時に
変数の中身を確実に保証する為にはfinalにしないといけない
equalsオーバーライドして全メンバ比較とかやってるなら それは暗に継承されないことを前提にしてるのでクラスにfinal付けたほうがいい でないとequalsの実装に要求されるx.equals(y) == y.equals(x)を満たせない イミュータブルなクラス作るときもクラスをfinalにしないと変更されないことは保障されない
>>815 どうしても必要なのはインナークラスからクラス内のローカル変数を参照する時。
他は、再代入禁止とか継承禁止とかオーバライド禁止といった禁止事項を指定するもの。
オブジェクトの変数なんて滅多に再代入しないので、再代入を意識しているものだけ指定できた方が便利だと思う。
824 :
デフォルトの名無しさん :2011/03/11(金) 10:41:28.09
>>815 まとめ
定数の時使う、enumで代用する人も居るけどな
インナークラスからクラス内の変数を参照しなければならない時に
該当の変数にfinalを付けても問題ない時に付ける
問題がある時は設計を見直す
スレッドを使う時に中身を保証したい時はfinal一択
20万行もあるソースをコンパイルできることに驚いた。
行単位で仕事の報酬を決定するような仕組は変えていかないと・・・
>>793 前前から気になっていたんですけど、どうして.NETでは大文字にしてるんですか?
言語仕様か何かなんですか?
自分がどうして違う方法をしてるかを考えてから、 世の中にどんな記法があるか調べればいいと思う
calc_test_verみたいな流儀もある 公開APIの名前を全部先頭大文字にするのはMSの昔からの慣習 C/C++ではJavaのような先頭小文字と並んでわりとよくあるスタイル
調べてみたんですけど、結局MSが作るのは大文字なのはどうしてですか?
MSに限らず関数/メソッド名先頭大文字スタイルはJava以外の世界ではよくある。 どういうスタイルを採用するかは勝手だけど統一するのが大事。 .NETやJavaにはそれぞれガイドラインがある。
Java以外の世界とういうと具体的には?
先頭大文字 C++(特に決まっていないが先頭大文字スタイルはよく使われる), Delphi, .NET など 全部小文字やアンダースコア区切り C/C++(標準ライブラリ), Python, Ruby, Perl, PHP
どうして先頭大文字なんか採用するようになったんですか?
どうして小文字先頭を採用したんですか?
どうしてというならdo_anything、DoAnything、doAnythingの中では doAnythingが一番不自然でしょ そういうことに決めているから、としか
いまどき行単位で値段きまらんやろ
一応javaの世界では一部のset,getなどはbeans仕様なんですけど。
shiftキー押す分とくだから
逆。既存のスタイルにあわせてbeans仕様を決めた。
javaが長いとMSのスタイルはどうしても大昔のBASICのままでパラライムとしての進歩がないように感じる。
好みの問題。郷に従え。
VB.NETの世界ってなんかホモとかゲイの人が多そうじゃないですか?(なんとなく)
名前の良し悪しでいうならPOSIXみたいな昔のUNIX系のスタイルが最悪
というか、命名の規則はライブラリで統一してればいいけどね。 beansじゃないけど関数名一覧とかregexpでの処理に便利でしょ。
関係ないけどUNIXのコマンドのネーミングが最悪だな Linuxも同じだけど こんな感じだからMSから移りたくない
来なくていいです いつまでもMSの世界に居てください
さすがゴックだ なんともないぜ
>>846 おいてめーcreatさんディスってんじゃねーぞ
>>834 そりゃあ「クラス名大文字にして変数名小文字にしたら、どっちがクラス名なのか変数名なのか
分かりやすいんじゃね?」という発想があったからだわ。
現実問題として言えば、プログラマーならンなこと気にしなくても分かるっつっちゃわかる。
(誤解版の)ハンガリアン記法っぽいわな。その辺は。
>>843 そう思うなら別にいいと思うが、俺の見た限りホモもゲイもいなかったな。
VB界は99%のDQNと1%のマジGODの世界だと思うよ。
VBほどはっきり天才とバカが見分けつく言語は珍しいと思う。
アレだ、チャーハンとかC言語とかみたいに当人の腕が一発で分かるんだよ。
ただVBはCよりもっと分かりやすい。
>>846 あれは「シェルスクリプトを書くこと」が前提のネーミング。
コマンドが長いとタイプするのがめんどくせぇのさ。
Windows界の「基本的にアイコンをダブルクリックしてアプリ起動」の世界とは
また違う文化だという程度でしかない。
dirよりlsのほうが格好いいぉ
短さより自然に覚えやすいというのが大切な要素という気が
>>853 そうだな。
ls じゃなく
showDirectoryContents
にするべきだなw
覚えにくいじゃん
そのまんまだから憶え易いじゃん
そうだな〜系はたいてい駄レス
スマソ。駄レスして良い話題だと思ったが失礼した。 ↓以下、駄レスじゃない話題をお楽しみください。
>>850 そんなあなたは一生 MS VISUAL BASIC
VB java COBOL 三大バカ言語
えっHSPは?
バカな言語といわれたら、 APLより、Rubyより、 何をおいてもC++だと思うんだけど…
単にお前には難しすぎるだけ
>>863 平凡なコーダーが「難しい」って感じるなら、バカ言語なんじゃね?
コード中に数値を書いた場合、その数値は何型として扱われるんでしょうか? ■疑問に思ったコード 1: public class Test { 2: public static void main(String args[]){ 3: byte b = 7; 4: byte b2 = b*2; //コンパイルエラー。エラー内容→型の不一致。intからbyteに変換できません。 5: int i = b; 6: int i2 = 7; 7: String s = 7; //コンパイルエラー。エラー内容→intからStringには変換できません。 8: String s2 = b; //コンパイルエラー。エラー内容→byteからStringには変換できません。 9: } 10: } ■補足 3行目でエラーがでないのは、7がbyte型だから? 7行目でエラーが出てるけど、7がint型として扱われてるっぽいエラー内容。 7がint型なら、なぜ3行目はエラーにならない?
>>865 >3: byte b = 7;
が暗黙裡にキャストされてるだけでしょ。リテラルだから。
7がbyteの範囲に収まるのはコンパイル時に明らかなので、 3行目はコンパイラの判断で byte b = (byte)7; と解釈される。 確かに4行目もオーバーフローしないのはコンパイル時に明らかなんだけど、そこまでは面倒見てくれない。
>>866 >>867 レスありがとう。
だいたい理解できました。
コードに直接書いた数値は、整数であればintとして扱われる。
変数を使用せずに、直接コードに書いた数値だけならば、演算が含まれていても暗黙的にキャストしてくれる。
ただし、キャスト対象の型の範囲内に収まらない場合、型の不一致としてエラーになる。
■以下は検証結果。コメントが無い行はエラーにならない。
int i = 1;
byte b = 127;
byte b2 = 128; //型の不一致:int型からbyte型には変換できません。
byte b3 = 10*4/3;
byte b4 = i; //型の不一致:int型からbyte型には変換できません。
869 :
デフォルトの名無しさん :2011/03/13(日) 21:59:29.03
顧客登録する画面作って、名前入力したら↓↓こんなエラーが出た。 文字入力ってどうするの? 2011/03/13 21:56:59 org.apache.catalina.core.StandardWrapperValve invoke 致命的: サーブレット Customer のServlet.service()が例外を投げました java.lang.NumberFormatException: For input string: "志賀太郎" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at controller.Customer.doPost(Customer.java:44) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)
>>869 parseIntからエラー出てるんだろ?"志賀太郎"を数値項目にねじ込もうとしたんじゃねーの?
質問です ファイルをドラッグアンドドロップしてjarファイルを起動することはできないのでしょうか バッチファイルを別に用意して @echo off java -jar Hoge.jar %1 などとすれば同等のことは実現できたのですが、もっと上手い方法はないのかなと思っている次第です
exeを作る
シェルを自作してExplorerを置き換える
exeでラップしてやるのが現実的かー マニフェストで何か設定したりとかでできないかと思ったけど、まぁ役割違うもんな ありがとうございました
JPAのEntityManagerって毎回open, closeすべきなの? EntityManagerFactoryは生成コストが高いから アプリの起動時に生成とopenして アプリの終了時にcloseすると思うけど。。。
外人の教えてGooみたいなの見て解決しました^^; スドッレー
>>876 解決した答えを書いとくのがネット使う際のマナーな
entity manager ファクトリは標準的には、アプリケーション初期化時点に作成されて、 アプリケーションの終了時に閉じられます。その作成は経費のかかるプロセスです。 Hibernate に慣れ親しんでいるユーザーには、entity manager ファクトリはとても セッションファクトリに似ていることが分かるでしょう。実際、entity manager ファクトリは セッションファクトリの上にあるラッパーなのです。 entityManagerFactory への呼び出しは スレッドセーフです。 ファクトリは使い回せってことですね。 ファクトリ≒DataSource、エンティティマネージャ≒Connectionなんだろ、内部的には。
java SDKのインストールをしようとしたらこのようにウィンドウがぼやけてしまいます 先日version6 Update24のJREにアップデートしてからだと思うのですが、javaで動作するソフトもこのようにぼやけるようになっていました。 一度JREを全てアンインストールしてからSDKをいれようとしてもこの有様です どうしたら正常な表示に戻せるでしょうか Windows7の64Bitです
880 :
879 :2011/03/16(水) 01:04:32.39
881 :
876 :2011/03/16(水) 01:17:04.18
1.Eclipseで外部ライブラリの追加を行う。 2.Antビルドで実行する 3.1で追加したパッケージが見つからないと怒られる な…何故…。 ソース上ではちゃんと反映されてるし…
Antの実行環境にそのライブラリが含まれていないのだろう。
>>883 即レスありがたや・・・。
まさにそのとおりでした。
885 :
デフォルトの名無しさん :2011/03/16(水) 17:33:30.51
CSVを二次元配列にするクラスを作っているのですが、うまくいきません。 もとの文字列は囲み文字無し、タブ区切りで4列、行数はわかりません。 public class CSV { private String[][] aryCSV; public CSV(String plain){ String[] array1 = plain.split("\n"); int row=array1.length; aryCSV=new String[row][]; for(int y =0;y==row-1;y++){ aryCSV[y]=new String[4]; aryCSV[y]=array1[y].split("\t",4); } } public String[][] getCSV(){ return aryCSV; } } よろしくお願いします。
>>885 >for(int y =0;y==row-1;y++){
条件式おかしくね?
887 :
デフォルトの名無しさん :2011/03/16(水) 17:42:34.45
>>886 y<row;にしたら多分うまくいきました。ありがとうございました。
>>885 aryCSV[y]=new String[4];
この行いらなくないか?
889 :
デフォルトの名無しさん :2011/03/16(水) 17:52:40.94
>>888 なくても動きました。
ありがとうございます。
コンストラクタと初期化について質問です。 Test2クラスとTest3クラスの動作は完全に同じですか? ■ソース //Test2クラス 1: public class Test2 { 2: int testInt = 3; //@ 3: 4: public void a(){ 5: System.out.println(testInt); 6: } 7: } //Test3クラス 1: public class Test3 { 2: int testInt; 3: 4: Test3() { 5: testInt = 3; 6: } 7: 8: public void a(){ 9: System.out.println(testInt); 10: } 11: } ■備考 コンストラクタはインスタンスが生成された時に動くものだと学びました。 コメントの@で記した行はよくわかりませんが、動作を見る限りではインスタンスが生成された時に初期化されているように見えます。
Test2のコンストラクタはpublicであるので別パッケージから呼べますが Test3のコンストラクタはpublicでないので別パッケージから呼べません
>>890 何をもって完全に同じと見るかだな。
a()の時点でint値は同じならいいのか?
バイナリコードが違うならJVMの動きは当然違うわけだが。
それとコンストラクタはインスタンスが生成されてから動くのではなく、生成されるときに動く。
この違いは地味に意味がある。
>>890 int testInt = 3; //@
の後にコンストラクタで
4: Test3() {
5: testInt = 2;
6: }
とやると2で上書きされるかな?
そしたら違うと言えば違う。
Youが同じと言ってるのはたまたま設定した値が同じという意味じゃないか?
ご回答ありがとうございます。
>>891 Test2もTest3も外部からコンストラクタを呼び出しってゆうと・・・
newするときに使いますが、明示的に呼び出すことはできないので、振る舞いは同じでは?
>>892 ちょっと質問の仕方がおかしかったかもしれません。
私は初期化を行う場合は、final staticな定数以外は、全てコンストラクタを使って初期化しています。
しかし、見る場所が変数を定義した場所と、コンストラクタ内の処理の2箇所になってしまいますし、
コンストラクタをオーバーロードしている場合、同じ処理を何度も書かなければいけません。
そこで、変数宣言時に値を入れてしまってもいいんじゃないかなと思って書きました。
何か発生しうる問題があれば教えて欲しいです。
宣言時に代入できるならその方がいいよ コンストラクタで代入するより宣言的で好ましい
インスタンス変数宣言時の代入はコンストラクタの頭での代入とバイトコード的に同じだよ。
>>893 私の質問の仕方が悪かったんですが、私が考えている事と少し違います。
>>895 おぉ、そうゆうものでしたか。
今度から宣言時に初期化することにします。
ありがとうございました。
>>894 newするときに使うから、つまり別パッケージのクラスではnew Test2();ができるけどnew Test3();はできないんだよ
コンストラクタが省略された場合は暗黙的に public なデフォルトコンストラクタが 定義されるのが言語仕様だよ。一度逆コンパイラでも使ってみな。 $ cat a/A.java package a; public class A{} $ cat b/B.java package b; public class B { public static void main(String[] args){ new a.A(); } } $ javac b/B.java $ java b.B
900 :
デフォルトの名無しさん :2011/03/16(水) 23:08:05.98
同じソースでNetBeansとEclipseで動作の違いがおこった。 ファイルをバイト単位で読んだ時に128以上がEclipseではマイナス扱いで読まれた。 こういうことってあるんですね。
JDKのkeytoolについて質問です OSはvistaで「キーストアのパスワードを入力して下さい」とカーソル表示が出た後、キーボードの文字が打てなくなります enterは押せます
打てなくなるんじゃなくてエコーバックが無くなるだけだからちゃんと入力は行われている。
>>901 再現できる最小ソースまたはそれぞれのクラスファイルを。
まぁ昔から Eclipse で動かすコンパイラはちょっと変な動きをするけどな。
>>906 br=new BufferedReader(new InputStreamReader(new FileInputStream(new File("FileName"))));
d=br.read();
で同じファイルを読んだ時値がNBでは全て正の数だったのに
ECでは負の数が含まれて動作異常がおこり気がついた。
詳しいところは調査中で混乱してます。
>>908 その程度は言語仕様通りに動きます。
多分あなたの勘違いでしょう。
ですかねえ。 バイナリエディタで書いた値をEclipse側で読ませた結果 80〜FFが全て65533になったり たまに前後のbitに影響受けたり受けなかったりで なんだかわからなくなってしまいました。
デフォルトのエンコーディングが違うだけの予感 バイナリの値をReaderで読むな
912 :
デフォルトの名無しさん :2011/03/17(木) 02:56:12.87
Eclipseの内部コンパイラを信用するなってのは有名な話だカス
913 :
デフォルトの名無しさん :2011/03/17(木) 03:24:07.34
>910 65533てのはたぶん文字U+FFFDのことだ。 nioのCharsetDecoder各種実装は、変な文字読ませるとよくこういう字を返す。 >911の言うとおり、おそらくReader使うこと自体間違ってる。 IDEによって各種Readerのデフォルトエンコードが違うのはありふれた話。
このスレは何もわからない奴がわけわからん回答すんのが伝統
ほげほげだけエンコードしてからつなげる。
>>916 URI#toASCIIString()の出番だろ
919 :
デフォルトの名無しさん :2011/03/18(金) 06:10:43.30
MySQLで、これからInsertするデータ例えばプライマリーキーが「hoge」が既にデータベース上にある場合はInsertを回避したいんですが、 データベース上に同じスキーマが既にあるかどうかを返すにはどうしたらいいでしょうか? select文で「hoge」をとって、結果がnullだったら分岐、のようにやったり、 getString("hoge")がnullだったら、などを試したのですがだめでした。 どなたかわかるかたアドバイスよろしくお願いします。
javaのアドオンについて質問があります java自体はアンインストールしたんですが アドオンの「Java(tm) Plug-In 2 SSV Helper」が消えずに残ってしまいました 削除のボタンも押せない状態になっていて、詳細を見ても利用不可となっています このアドオンを削除する方法をご存知の方がいましたらアドバイスお願いします
>>919 データベース上に同じスキーマが既にあるかどうかを返すにはどうしたらいいでしょうか?
スキーマ?? プライマリーキーでいいの??
select count(*) from hoge_tabel where id = 'hoge';
で件数取得すればいいんでない?
今までC++(C)を業務で数年使用していました。 Java、SQL(DB)の勉強をしてみたく、仲間内で利用できる簡単なSNSを作成しようと思っています。 データベース構造を参考にしたいのですが、参考にできるサイトとかないでしょうか?
924 :
922 :2011/03/18(金) 17:15:19.98
>> 923 ありがとうございます。一読してみます(^^
>>919 Connection#getMetaData()で拾えない?
926 :
879 :2011/03/19(土) 00:54:05.44
879ですが解決しました RADEONのグラボを使用していて、ドライバソフトのCatalystControlCenterの設定で形態学的フィルタリングをオンにするとこの症状になりました
public class Main extends JFrame { public static void main(String args[]) { Main m = new Main(); m.start(); … 初歩的な質問です。よくある出だしですが。 まず静的クラスとしてMainが実行され 中で自己のインスタンスmが作られる…のはわかるのですが またそのmのMainの中でmが作られる…の永久ループにならないのは何故なんでしょうか。
Mainのインスタンス作ってもMainのmainは実行されないから
なるほどインスタンスが作られて実行されるのはインストラクタだけで mainが実行されるのはクラスの時なんですね。
何故なんでしょうねぇ?
Mainのクラスイニシャライザ Mainのmain Mainのコンストラクタ 2番目のはjava.exe Mainってやったから呼ばれてるだけ
932 :
sage :2011/03/19(土) 20:34:28.69
eclipseってJavaで作ってあるという話だけど、 Eclipseの「パッケージエクスプローラー」のツリーってどうやってつくってるの? なんとなくJTREEではない様な気がするんだけど。 あんなツリー表示のアプリを作ってみたくて。
swtとか
Javaじゃないんだよ ネイティブコードで作ってJavaから使ってるだけ
935 :
932 :2011/03/19(土) 21:16:10.84
>933 AWTとSWING以外のSWTって初めて知った。 >934 そういう方法もあるんだ。 2人ともありがと。
Javaってグローバル変数ないんですか?? どうやって複数の関数内の変数を受け渡しすればいいですかね?
引数にすればいいだろ
なるほど、ありがとうございます
public staticなフィールドを作ればいいよ static importも使えばそれっぽくなる
メソッドをstaticメソッドに変更したら やはり this の部分がエラーになってしまいました。 ここは何に置き換えればいいですか? クラス名ではだめでした。
おまえじゃ無理 もう諦めれ
上の人とは違うんだけど
staticについて勉強しなおすといいよ
コンフィグとか設定系のメカニズムに、定石なり定番ライブラリなりないもんですかね。 ブロパティファイルを読み込んで適用、ってだけじゃなくて、 ・コンフィグ適用ロジックと、モデルが強結合しないための仕組み ・firefoxのabout:configと設定ダイアログのような、即時適用とバッチ適用の仕組み ・cisco iosでいうところのrunning-configとstartup-configを泥臭くなく実現する仕組み あたり。 イメージどしてはasn.1で書いたコンフィグモデルとアプリケーションドメインモデルの間をつなぐ感じ。
>>937 もう、どこまで知ってるのか知らないのか想像も出来ない。
どうやったらこういう思考でプログラムを作ろうというヤツになるんだ。
日本語でおか
ManagedBeanにできてCDIに出来ない事って何かあります?
JSF2?
データベースのテーブルのように扱えるクラスはありませんか? sqlまで発行させろとは言いませんが、列を指定して行を検索したりしたいです。
>>950 データベースのどの側面が欲しいかによると思う。
・機能なのか (SELECTでのカラム入れ替え、JOIN、ORDER BYなど)
・性能なのか (複雑なクエリに対する性能劣化が小さいこと)
・インターフェイスなのか (SQL文)
とりあえず、SqlJetでin memoryにどうでしょか。
JavaHelpという化石APIを試しているのですが、 これのHTML表示部の文字コード指定方法分かる方いますか? HTMLファイル冒頭のcharset指定はどうも無視されるようなので…
intの値130を1バイトのバイト配列として扱いたいのですが、 下記のコードでは2バイトとなってしまいます。 修正が必要、またはそもそも間違っているのかご指摘お願いいたします。 int in = 130 Integer.toHexString(in); byte[] by = hex.getBytes("SJIS");
>>953 コードが誤っていましたので修正です。
int in = 130
String hex = Integer.toHexString(in);
byte[] by = hex.getBytes("SJIS");
>>952 Integer#toHexString(int) は10進数の130を16進数の文字列に変換するので
Integer.toHexString(130) は "82" になる。
1バイトだけなら byte[] by = { (byte)130 }; でいいんじゃね?
複数バイトなら
>>420-422 あたりにある。
java の byte は符合無し?
Javaに符号無し整数はありません
byteが255じゃないから俺も苦心したわ
>>955 ありがとうございます!
キャストすると0〜255の範囲で扱えるとは知りませんでした。
ただし、キャストだと文字コード指定できませんので、
>>420 のgetBytesを使う方法になりそうです。
ただ、getByteに必要なStringとして130を渡す必要があるため、
Integer.toHexStringを使ってStringを生成していますが
正しいのかよくわかっていないため調べてみます。
javaのライセンスについて教えてください。 現在、Androidアプリを作成中なのですが、JDK1.5のいくつかのソースコードを改変して アプリに組み込もうと思っております。 javaのライセンスは確かGPLだったと思うので、作成したアプリの ソースコードを公開してしまえば、問題なかったでしょうか? よろしくお願いします。
オラクルのJDKはGPLじゃないよ OpenJDKの方
そうだったんですか。調べ方が足りなかったみたいで、 JAVAのライセンスは結構ややこしいですね。。。 ライセンスのことをもう一度調べてみようと思います。 ありがとう御座いました。
964 :
デフォルトの名無しさん :2011/03/22(火) 02:05:09.11
Object型の変数に入れたTimestamp型のデータはどうやって取り出せばいいでしょうか? Object型の変数.toString()ではClassCastExceptionになりました。
アンドロイドのjavaはアパッチライセンスじゃなかったか?
JDK1.5のソースって言ってるからDalvikのライセンスは関係ないんじゃないか
OracleっつかSunのソースだと1.5でGPLってあったっけか? GPLで配布されてるOpenJDKは今のところ1.6と1.7だけだったような
>>960 「キャストだと文字コードが指定できない」とか、表現からすると、やりたいこととやってることに勘違いが重なっているように見えるんだが。
「int値"130"を要素1個のバイト配列にする」のに文字コードなんて関係ないだろ。
「SJISコード'130'の入ったint変数をバイト配列にしなさい」とかいうおバカな課題でも出されたのか。
969 :
デフォルトの名無しさん :2011/03/22(火) 14:04:37.66
RandomAccessFileでファイルサイズ以上の位置にseekしwriteした場合、 書き込み前のファイル末尾〜書き込み開始位置までは0で埋められるのでしょうか? それとも、書き込み前のファイル末尾から書き込まれるのでしょうか?
>>969 > それとも、書き込み前のファイル末尾から書き込まれるのでしょうか?
少なくともRandomAccessFile#write(int)、RandomAccessFile#write(byte[])の
API仕様の記述に反する振る舞いだから基本的にないと思っていい。
> 書き込み前のファイル末尾〜書き込み開始位置までは0で埋められるのでしょうか?
API仕様には直接的な記述はなかったはず。
RandomAccessFile#setLength(long) には
> length により返されたファイルの現在の長さが newLength 引数よりも小さい場合、
> ファイルは拡張されます。この場合、ファイルの拡張部分の内容は定義されていません。
って書いてあるから、これに準じた振る舞いをするんじゃないかと。
ちなみに、Windowsで元々大きかったファイルを再拡張した場合に、
元々の内容がそのまんま残ってたりする事もある。
971 :
デフォルトの名無しさん :2011/03/22(火) 16:09:52.49
今、java.com 繋がりますか?
973 :
デフォルトの名無しさん :2011/03/22(火) 16:56:16.23
java.comの件、解決しました。 グローバルIPが弾かれていました。 頭が1.から始まるとアクセス出来ないそうです。 失礼しました。
えっ、俺133.xxx.xxx.xxxだよ? そういう事じゃない?
975 :
969 :2011/03/22(火) 19:21:10.02
>>970 ありがとうございます。
仕様に定義されていない以上、安全のため0で埋める独自処理を入れることにします。
なんでAppletは使われなくなったの? 一種のクラナドやん
JREが必要だから Flashのようなプラグイン式に比べてユーザーの負担や嫌悪感が非常に大きい
978 :
デフォルトの名無しさん :2011/03/22(火) 21:32:26.64
Java初心者の高校生です。今タイピングゲームを作っています。 以下のような、クラス内でpaintメソッドを定義したJFrameを継承したクラスXXXのインスタンスを、mainメソッドから生成してmeeenメソッド中の処理を行うようにしたいです。 class XXX extends JFrame{ Image offi; Graphics offg; public XXX(){ offi = createImage(640, 480); offg = offi.getGraphics(); meeen(); } public void paint(Graphics g){ offg.setColor(new Color(0,0,0));//[[[[この行]]]] offg.drawString("うるおいミルク ぷー",100,100); g.drawImage(offi,0,0,this); } public void meeen(){処理;} } 実行してみると、上の[[[[この行]]]]を含む行にNullPointerExceptionが発生する時があります(しない時もあります)。 例外が発生した時はXXXのコンストラクタ内の特定の処理が終了する前にpaintメソッドが呼び出されてしまったということなのでしょうか? どなたか解説お願いします!
offi.getGraphics()がnullを返してるんじゃね
4スレ消費毎ぐらいの周期で発狂したり鎮まったりしてるよねこのスレ ここ見てるPG/SEの帰宅時間に関係があったりして
>>981 以下のようにあるから、恐らく開発中。
> not yet JCP approved
>>978 初心者にしては珍しく具体的な情報が多くて良い質問だなぁ。
main()とEDTは別プロセスだから、mainの実行中にswingのオブジェクトツリーに追加されるような操作(setVisible(true)とか)すると、以降非同期にEDTからpaint等が呼ばれる可能性があるような。
JFrameってコンストラクタでsuper()しなくていいんだっけ?
スーパークラスにデフォルトコンストラクタが定義されていれば 暗黙的にそれが呼ばれます。
>初心者にしては珍しく具体的な情報が多くて良い質問だなぁ。 >JFrameってコンストラクタでsuper()しなくていいんだっけ? 自分が初心者のくせになに言ってんだw
どうせ鼻糞だろ 相手にするな
自分を上級者と勘違いしてる基礎もわかってない初心者が、頼まれてもいないのに質問に珍回答で応答しちゃうのがこのスレ
988 :
デフォルトの名無しさん :2011/03/23(水) 13:30:12.60
978です。解答ありがとうございます。 現在はダブルバッファリングの実装を必要としない方法に書き換えました。 質問の状態ではsetVisible(true)をXXXのコンストラクタ内に記述していたのですがこれがいけなかったのでしょうか。 ということはつまり、JFrameのインスタンスを生成する際にはコンストラクタ内の処理とpaintメソッド内の処理のどちらが先に行われるかはわからないということでしょうか? また、 >JFrameってコンストラクタでsuper()しなくていいんだっけ? についてできれば詳しく教えていただきたいです。
そんなのサンプル落としてくる方が早いぞ
>>988 コンストラクタの処理とpaintの処理については、StringBuilderのようなフィールドにそれぞれの呼び出しで別の値を追加するようにすればわかるんじゃないかな?
で、Javaはコンストラクタの先頭で明示的にsuperを指定しないと引数なしの superが自動的に呼び出される。
Servletでブラウザに複数のファイルをダウンロードさせたいのですが サーバー側で複数ファイルをzipなどで圧縮して1ファイルにし ブラウザにダウンロードさせ、それを解凍してもらうしかないでしょうか?
>>978 オフスクリーン用 Graphics は paint 内で作るとよい。
if (offg == null) offg = offi.getGraphics();
>>992 んなことせんでも Swing は最初からダブルバッファ機構あるから
自前でやる必要まったくない
なにもしなくてもおけ
paintComponent(Graphics g)
これオーバライドして、適切なタイミングで repaint 呼び出すだけでよい
ちなみに repaint は、ちゃんと再描画の範囲を指定してやると無駄な処理が少なくなっていい
>>978 JFrame のサブクラスでなにかを描画するプログラムを
書くよりは、まず JComponent のサブラクス作って、そこに描画
のプログラム書いて、
そのパネルを main メソッドの中で JFrame#setContentPane とかして、
表示させるのがいい
コードが整理されて見やすいし、アプレットとかにも転用できる
何年経っても、メインスレッドからSwingコンポーネントを触る人間が絶滅しないな
>>993 オライリーのSwingHacksとかでも、描画関連の処理はpaintComponentでやれって書いてたな
SwingHacksは、ちょっと古いけどSwingの描画まわりはかなり詳しく解説されてた
Swingを本気でやるならオススメだ
>>995 Swing自体、複雑だしわかりにくいからな
その辺りを解消するために、Swing Application Frameworkとか開発されてたけど、
今、どうなってるか知ってる人いる?
>>996 SWTみたく別スレッドからアクセスしてきたから
即例外エラー出さないからねえ
しかし、それでも、コンポーネントの組み替えとか
必要なところだけ SwingUtilities.invokeLater(doRun)
やればいいだけだろう、そんなに難しい話じゃない
つぎすれ
999 :
983 :2011/03/24(木) 07:54:24.69
>>984 > スーパークラスにデフォルトコンストラクタが定義されていれば
>暗黙的にそれが呼ばれます。
そうだっけ。
最近そういうの全然意識してなかったうえに、swing使ってた頃はJFrameは引数付けて呼んでたもんで、確認せずに適当に書いた。
984以降指摘してくれた各位と質問者にお礼とお詫びする。
ありがとう。混乱させてすまなかった。
ついでに埋め。
1000 :
デフォルトの名無しさん :2011/03/24(木) 10:07:02.51
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。