【初心者】Java質問・相談スレッド64【大歓迎】

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

以下のエラーが表示されて、途方にくれているあなたは、下のページへ。
「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath

前スレッド
【初心者】Java質問・相談スレッド63【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1110197411/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */

また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/

次スレは>>980がお願いします。
2 ◆magic.fu7c :2005/03/24(木) 15:11:30
Aゲト
3デフォルトの名無しさん:2005/03/24(木) 15:23:53
Classクラスはどのようなクラスなのでしょうか。
APIドキュメントや参考書を読んでもイマイチ理解できませんでした。
どなたか教えて下さいお願いします。
4デフォルトの名無しさん:2005/03/24(木) 15:48:39
>>3
Classクラスは、そのクラスの構成を表しているクラスです
例えば、(実装は違ったと思うけど)内部に、
Method[] methods:
Field[] fields;
等というフィールドを持っていて、Stringクラスを表すインスタンスなら、
methodsには、indexOf() とか、toCharArray()
とかのメソッドを表すオブジェクトが入ってるし、
Threadクラスを表すインスタンスなら、methodsには、join()とか、wait()
とかのメソッドを表すオブジェクトが入ってる、という感じ

実際使ってみるのが一番だと思うので、やってみたら?
例えば、こんな課題

コマンド引数で入力された文字列で表されるクラスで定義されている
publicなメソッドを全て表示するプログラムを作れ

5デフォルトの名無しさん:2005/03/24(木) 16:25:21
Classがわからないというのなら必要に迫られてないってことかと
リソースとかクラスローダとかそういう仕組みがわかってはじめて使えるかと
6デフォルトの名無しさん:2005/03/24(木) 16:28:09
wikiが404なんだけど、独習Java第3版って初心者が見るにはいい本ですか?
7デフォルトの名無しさん:2005/03/24(木) 16:43:40
>>6
個人的にはあまりおすすめしない。

Javaのコーディングレベルとか勉強したいんだったら、
SunのJava2とかの試験対策本買って解くほうがいいような気も。

クラスやオブジェクト指向の概念を勉強したいんだったら、
Javaとか関係ないオブジェクト指向の本買うほうがいいよ。

JavaScriptだってオブジェクトを含んだスクリプト言語ではある。
8デフォルトの名無しさん:2005/03/24(木) 16:43:40
>>6
推薦図書スレ向きな気がしないでもないけど答えとく。

例題を解いて覚えるスタイルがあっているという人にはお勧めかも。
Cなどの他言語経験者にはいいかもしれない。
ただ、ライブラリ周りの解説が相変わらず古いままというのが残念なところ。

個人的にはこっちの方がいいと思う。
明解JAVAプログラミング入門 2nd Edition
ttp://www.amazon.co.jp/exec/obidos/ASIN/479800779X
プログラム初心者に対してもわかりやすくていい。
コマンドライン初心者向けのQ&Aもあるので、>>1にあるような
Java以前の質問をすることはないと思う。
けど、例題がないのは人によって評価が分かれそう。
9デフォルトの名無しさん:2005/03/24(木) 19:32:31
public class HOGEHOGE{
static final int hoge_int=10;

//コンストラクタ1
public HOGEHOGE(String hoge_string){
this(hoge_string,hoge_int);
}

//コンストラクタ2
public HOGEHOGE(String hoge_string,int hoge_int){

}

public static void main(string[] args ){
String hoge_string;
HOGEHOGE hoge=new HOGEHOGE(hoge_string);

}
}

上のプログラムはコンストラクタを二つ作って
コンストラクタ1の方はコンストラクタ2を呼び出す事しかしていません
今勉強しているサンプルがこういうプログラムなんですかこれって
メイン文から直接コンストラクタ2でオブジェクト作成してもかわりませんよね
なにか上のプログラムのようにするメリットはあるのでしょうか?
10デフォルトの名無しさん:2005/03/24(木) 19:41:41
>>9
hoge_intを指定しなくても規定値でオブジェクトが生成できるということです
全部書くことにすると面倒だったり書き間違えたりいろいろ大変そうじゃないですか
119:2005/03/24(木) 20:19:03
>>10
え〜よくわかんないよ

上例だとメイン文から
HOGEHOGE hoge=new HOGEHOGE(hoge_string,hoge_int);
の二つ目の引数を書く事が面倒という事ですか?
そうかな、コンストラクタ一つ作った方が面倒だし
若いにくい用に思えるんですが・・・

例えばたくさんこのオブジェクトを作るコードがあったとして
hoge_intからhogehoge_intに書き換える
このときはコンストラクタ1の一文のhoge_intを書き換えればいい
これは手間が省けるかもしれないけどどうなんだろう

でも思い返してみたらj標準のAPIのコンストラクタ・メソッドにも
こういうパターンがありますね

ともかく有難うございました
12デフォルトの名無しさん:2005/03/24(木) 20:35:13
>>11
このクラスを使う側から見ると、指定する必要のない引数まで指定するのは無駄でしかないし、
結果としてプログラムが煩雑になればバグの原因にもなりやすいということです。
13デフォルトの名無しさん:2005/03/24(木) 21:04:08
BufferedWriterのflushメソッド
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/io/BufferedWriter.html#flush()

ストリームをフラッシュします・・・フラッシュするって何ですか?
例えばラッピングしているものがあるネットワークのあるソケットだとすると
この時にバッファリングしたデータを出力するという事ですか?
14デフォルトの名無しさん:2005/03/24(木) 21:14:01
>>9
そんなひとつと二つみたいなレベルで考えるからわからんのだ。しかも引数がStringと
プリミティブじゃな。

public HOGEHOGE(int a, myClass b, myClass2 c, myClass3 d, myClass4 e, myClass5 f, myClass6 g, myClass7 h, myClass8 i, myClass9 j)

というコンストラクタが一つだけしかなかったらどんなに面倒か。
とりあえずaだけ指定させてくれたら他はどうでも適当でもいいし、もうmyClassを
さくっとnewしたもんでいいよ、ということもある。

そこで、

public HOGEHOGE( int a) {
this( a, new myClass1(), new myClass2(), /*あと面倒なんで省略 */);
}

というコンストラクタがあったら便利だということだよ。むしろ全部指定する事のほうが珍しいような
クラスも考えられるからね。

常道としては、一番引数の多いコンストラクタをベースとして、より引数の少ないコンストラクタは、
少ない分の引数を内部的に作って、最終的には一番引数の多いコンストラクタを呼び出す、という
パターンだね。インスタンスを生成するための一番基本的なところは、引数の多いコンストラクタに
集中化できる。
15デフォルトの名無しさん:2005/03/24(木) 21:23:14
ByteBuffer bb = ByteBuffer.allocateDirect(2048);
bb.putInt(257);
bb.rewind();
System.out.println(bb.get());
System.out.println(bb.get());
System.out.println(bb.get());
System.out.println(bb.get());

この結果は0,0,1,1と表示されるのですが
ByteBufferのデフォルトってBIG_ENDIANですよね?
どうして1,1,0,0にならないのでしょうか?
プラットフォームはWindowsでLITTLE_ENDIANなのですが
ByteBuffer.order()ってもしかして意味無いのですか?
16デフォルトの名無しさん:2005/03/24(木) 21:26:27
>>15
それ動作として正しいだろ
17デフォルトの名無しさん:2005/03/24(木) 21:32:59
>>15
オマエ、ビッグエンディアンとリトルエンディアンの並び方間違っておぼえてない?
18デフォルトの名無しさん:2005/03/24(木) 21:34:58
byte[0]->[1]->[2]->[3]と繰り上がるのがLITTLE_ENDIANで
byte[3]->[2]->[1]->[0]と繰り上がるのがBIG_ENDIANじゃないのですか?
19デフォルトの名無しさん:2005/03/24(木) 21:36:30
>>18
他人に聞く前にWebでタダで見られるIT関係用語集とかで調べて来い。
20デフォルトの名無しさん:2005/03/24(木) 21:44:27
0x00FFって表記はビックエンディアンなのか。よくわからんけど。
21デフォルトの名無しさん:2005/03/24(木) 21:47:42
>>20
それだけだとエンディアンいわない
22デフォルトの名無しさん:2005/03/24(木) 21:53:08
だってここの書き方だとそんな感じだし
ttp://www.fine-view.com/jp/lab/endian.html
23デフォルトの名無しさん:2005/03/24(木) 22:00:14
>>20
ただの16進表記
24デフォルトの名無しさん:2005/03/24(木) 22:14:29
>>13
そだよ。

>>15
下位バイトから順に並べる = リトルエディアン
つまり 0x11223344 は 0x44, 0x33, 0x22, 0x11 の順に現れる。
25デフォルトの名無しさん:2005/03/24(木) 22:26:40
ファイルに表した場合、下位=先頭の方って覚え方でいい?
26デフォルトの名無しさん:2005/03/24(木) 22:34:16
webサーバみたいに裏で静かに動きつづけるためのプログラムがあるとして、
メンテとかのためにあえてそのプログラムを終了させたいときもある場合、
そのプログラムを終了させるための別のプログラムを呼べばいいんですよね?
そういう、別のプログラムに干渉したい場合、どう書けばいいんでしょうか?
public class MyProgram {
 public static MyProgram instance;
 public static void main(String[] args) {
  MyProgram instance = new MyProgram();
  MyProgram.instance = instance;
  instance.start();
 }
 private void start() {...}
 public void stop() {...}
}
public class MyProgramStopper {
 public static void main(Stirng[] args) {
  MyProgram.instance.stop();
 }
} として
%java MyProgramStopper で確実にMyProgramインスタンスのメソッドを呼べますか?
27デフォルトの名無しさん:2005/03/24(木) 22:39:10
Socket
28デフォルトの名無しさん:2005/03/24(木) 22:41:36
>>26
呼べますが Java VM が違うので意味がありません。
29デフォルトの名無しさん:2005/03/24(木) 22:45:32
EclipseでWeb開発をやるのに最もいいプラグインは何ですか?
LombozとかTomcatプラグインとかいろいろあるみたいですが…
30デフォルトの名無しさん:2005/03/24(木) 22:47:54
WebSphere Application Developer
3126:2005/03/24(木) 22:51:02
>>27-28
そうか、ローカルホストのソケットに何か送れば・・・
ありがとうございました
32デフォルトの名無しさん:2005/03/24(木) 23:04:20
>>30
それってプラグインじゃない
33デフォルトの名無しさん:2005/03/24(木) 23:10:30
>>25
>ファイルに表した場合、下位=先頭の方って覚え方でいい?
それは良くない。
あくまでメモリの配置順が「下位バイト=若い番地」という覚え方をしる。
34デフォルトの名無しさん:2005/03/24(木) 23:32:55
>>13
辞書で引けばわかるがトイレで水をジャーっと流すことなんかをflushするという。
たまっているデータをジャーっと流すということだ。
35デフォルトの名無しさん:2005/03/24(木) 23:33:36
Flash ニフラム
Flush タイダルウェイブ
36デフォルトの名無しさん:2005/03/24(木) 23:34:59
>>前スレ996
> byte[] utf8 = str.getBytes("UTF-8");
> str = new String(utf8,Charset.defaultCharset().name());

UTF-8で符号化されたバイト列を、デフォルトエンコーディングで文字
列化しようとしているので、間違い。

String にはエンコーディングなんて概念はありません。
デフォルトエンコーディングのバイト列 byte[] def とUTF-8エンコー
ディングのバイト列 byte[] utf の相互変換は、以下のようになる。
utf = new String(def).getBytes("UTF-8");
def = new String(utf, "UTF-8").getBytes();

37デフォルトの名無しさん:2005/03/25(金) 01:00:36
ボクは全くプログラムとかわかんないですけど
友達が「再ダンプ」の意味がわかんないって言ってるんです
用語集とか見たりググっても全くわからなくて…
goo見てもわかんなくて…
何か良い用語集などありませんでしょうか?
38デフォルトの名無しさん:2005/03/25(金) 01:04:20
>37
その友達は「ダンプ」の意味は分かってるのかいな。
大概は「プログラムで処理している何者か(データとか)を、なるべくプログラムの中の形に
近い形でどこかに出力すること」なんだ(と思う)が、
つまりその頭に「再」ってついてるってことは、文字通り
「もういっぺんダンプ(する)」
ということでなかろうか。
39デフォルトの名無しさん:2005/03/25(金) 01:08:35
ダンプ再来

つまりアジャコングのこと
40デフォルトの名無しさん:2005/03/25(金) 01:09:07
辞書を引けばわかるが荷台からゴミなんかをどさっとおろすことをdumpという。
用語集なんかを調べる前にまず英和辞書を引け。
41デフォルトの名無しさん:2005/03/25(金) 01:25:34
するとこれはプログラム用語なワケですね?
>38さんくす!
42デフォルトの名無しさん:2005/03/25(金) 01:49:54
//呼び出しメソッド
public void hogeYobidasi(){
BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
String indt = keyin.readLine(); //キー入力
byte[] buf = indt.getBytes();//バイト変換と文字数取得
int count = indt.length();
hogeUketori(buf,k);//メソッド

}
//受け取りメソッド
public void hogeUketori(byte[] buf,int count){
String keyinstr=new String(buf,0,count); //バイト→String
String sendData="hoge"+keyinstr;
byte[] sendbuf=sendData.getBytes();

}
ちょっと失礼しますね
今ネットワーク系のプログラミングの勉強してるんですが
(質問の本質自体は入出力の問題だとは思うのですが)
参考にしてる本で気になるところがあります
よく(上は一例)、あるメソッドから別のメソッドを呼び出す時に
@String型をbyte[]に変換(その際、文字数も取得)
Aメソッドを呼び出す(引数としてそのバイト配列(byte[])とその長さ(int))
B受取側でbyte[](その際、長さも利用)からString型に変換
CそしてそのString型を利用〜
という形式があります
道考えても(僕だけかな?)String型をそのまま渡して処理した方がいいと思うのですが…
これはこの著者のただの趣味なのか? それともネットワーク系のプログラミングで
データを受け渡す時はバイト型という定石かなにかがあるのか?
ちょっと皆さんの意見をお聞かせください。もしバイト型を引数として扱うメリットも
あるなら教えてください
43デフォルトの名無しさん:2005/03/25(金) 02:04:00
受け手はどうやって可変長データの終端を探し出す気?
ざくっと言ってしまえば定石なんだけどね
44デフォルトの名無しさん:2005/03/25(金) 02:18:23
そのまま渡すとスタック領域無駄に使うから
アドレスとバイト数渡す方が省エネ
4542:2005/03/25(金) 02:29:53
>>43-44
レス有難うございます

一様、m(__)m
×hogeUketori(buf,k);//メソッド
○hogeUketori(buf,count);//メソッド

>受け手はどうやって可変長データの終端を探し出す気?
え?この場合終端を知る必要がないと思うんですが・・・終端というとcountですよね
受け側のプログラムずら〜っと見たけどString型の変換した後
count(bufももちろん)を扱ってるコードはないですよね
あれ、なにか勘違いしてるのかな、頭がポックリ働かなくなってきた・・・
それより定石というなら従いますけどね

>そのまま渡すとスタック領域無駄に使うから
>アドレスとバイト数渡す方が省エネ
ムムー、なるほど。よくわからないけどなるほどです

お二方どうもありがとうございました
4645:2005/03/25(金) 02:31:29
×count(bufももちろん)を扱ってるコードはないですよね
○count(bufももちろん)を扱ってるコードはなかったです

もう、逝って来るよ
4740:2005/03/25(金) 03:00:40
>>41
40を読んでなぜその結論に至ったのかを知りたい。
48デフォルトの名無しさん:2005/03/25(金) 10:14:45
>>44
スタック領域って。。。。
javaのオブジェクトは参照渡しだろ。
んな処理入れるより、String渡したほうがいいに決まってるよ。

>>45
回答をすべて鵜呑みにするなよ
49デフォルトの名無しさん:2005/03/25(金) 10:24:06
つか、ネットワーク上のデータのやりとりならバイトデータ渡すしかないだろ。
スタック運云々はまったく関係ない。
50デフォルトの名無しさん:2005/03/25(金) 10:38:01
>>45
このスレにもちょくちょく登場するByteBufferを調べてみなさい。

あとそのサンプルでサイズが必要とされてなく見えるのは
keyin.readLine(); //これのせい

練習でStringを使わないファイル入出力処理を自力で考えてみよう。
51デフォルトの名無しさん:2005/03/25(金) 11:01:34
これからJavaのGUIについて勉強しようかと思っているのですが
AWT、Swing、SWTなどありますが、どれが一番ポピュラーなんでしょうか?
それとも全部覚えた方がいいのでしょうか。
52デフォルトの名無しさん:2005/03/25(金) 11:35:49
SwingでもSWTでもいいけど、AWTの知識は必須。
SwingとSWTは、好みのほうを。
53デフォルトの名無しさん:2005/03/25(金) 11:37:01
>>51
全部使ってみろ。
んで、好きな奴とか自分にあった奴を使え。
54デフォルトの名無しさん:2005/03/25(金) 11:40:33
>>52>>53
ありがとうございます。とりあえずAWTから初めてみようと思います。
55デフォルトの名無しさん:2005/03/25(金) 11:40:51
AWTのlightweightって何?
低級APIみたいな意味と受け取っておけばよい?
56デフォルトの名無しさん:2005/03/25(金) 11:59:15
javaのWebアプリで「〜」が化けてしまいます。
どうすれば化けませんかちなみにjspはWindows-31jです
57デフォルトの名無しさん:2005/03/25(金) 12:01:22
エンコード部分のコード晒しなさい。
といいますかUTF-8にしろやとか言いたいけど言わない毒
58デフォルトの名無しさん:2005/03/25(金) 13:08:52
>>51
Swingがおすすめ
>>55
作りが軽い
59デフォルトの名無しさん:2005/03/25(金) 14:16:34
>>56
ちゃんとOS、Java、アプリケーションサーバの種類とバージョンもね。
60デフォルトの名無しさん:2005/03/25(金) 14:28:28
スレッドの実行について質問したいのですが

Thredクラスを継承する方法と
Runnableインターフェイスを継承して、Threadクラスのコンストラクタの引数がありますよね
サンプルソースで↓の用にRunnableを使う方法だとrunメソッドの中でwhileでループを
作らないとスレッドの実行が繰り返されないのは何故なんでしょうか。
6160:2005/03/25(金) 14:29:01
======================================================================
class ThreadX extends Thread {

public void run() {
try {
while(true) {
Thread.sleep(2000);
System.out.println("Hello");
}
}
catch(InterruptedException ex) {
ex.printStackTrace();
}
}
}
======================================================================
class RunnableY implements Runnable {

public void run() {
try {
while(true) {
Thread.sleep(1000);
System.out.println("Hello");
}
}
catch(InterruptedException ex) {
ex.printStackTrace();
}
}
}
62デフォルトの名無しさん:2005/03/25(金) 14:31:03
> Runnableを使う方法だとrunメソッドの中でwhileでループを
> 作らないとスレッドの実行が繰り返されないのは何故なんでしょうか。
Thread#runだってそうだと思うけど
63デフォルトの名無しさん:2005/03/25(金) 14:31:51
スレッドは run() メソッドが終われば終了する。
6460:2005/03/25(金) 14:33:19
>>62
すいません、自分でサンプル貼り付けてたのに気がついてませんでした。
スレ汚しすいません。。。。
65デフォルトの名無しさん:2005/03/25(金) 14:56:32
GUI部品てのは、ふつー、すべてウィンドウという扱いになってる。
だから、ボタン1つでもウィンドウのためのデータ構造(Win32だとhWnd、
XだとWINDOW*などで指されているもの)が付随している。ボタン1つ
のためにこのデータを作ったり破棄したりしなければならない。

lightweightな部品は、ウィンドウとして存在するのではなく、親ウィン
ドウの一部の領域を拝借してそこにボタンの絵を描き、マウスクリッ
クやキーボードに反応するようにしているだけなので、負担が減る
=軽い。
66デフォルトの名無しさん:2005/03/25(金) 15:00:53
AWTはHEAVY SwingがLIGHT
67デフォルトの名無しさん:2005/03/25(金) 15:07:23
>>66
Swing が鳴り物入りでデビューしたときはそう言われてたなw
書籍だか雑誌だかに「Swing は lightweight コンポーネントだ。今は重いがマシンスペックが
上がれば軽くなる。」とか書いてあって ワロタ 覚えがある。ソフトの軽さは過去と比べられるの
ではなく、同じプラットフォームで動く別のものと比べられるから、遅いソフトはいつまでたっても
遅いと言われ続けるよ。

脱線失礼
68デフォルトの名無しさん:2005/03/25(金) 15:25:54
>>67
そういう意味での軽さではないと思う
でもなんかSwingが好き
69デフォルトの名無しさん:2005/03/25(金) 15:28:50
そしてオレはSwing Girlsが好き
70デフォルトの名無しさん:2005/03/25(金) 15:31:26
やっぱSWTだろ。使ったことないけど。
71デフォルトの名無しさん:2005/03/25(金) 15:50:56
StringBufferのインスタンスを5つ生成したいのですが、
StringBuffer[] sbuf = new StringBuffer()[5]ではJava.util.StringBufferが見つかりました になってコンパイル出来ません。どこが間違っているんですか?
72デフォルトの名無しさん:2005/03/25(金) 15:57:45
new StringBuffer[] { new StringBuffer(), new StringBuffer(), new StringBuffer(), new StringBuffer(), new StringBuffer() }
73デフォルトの名無しさん:2005/03/25(金) 16:00:37
>>70
J2SE5のSwing使えばわかるが非常に軽い
NetBeans4はEclipse3より軽いのがその証拠か
74デフォルトの名無しさん:2005/03/25(金) 16:03:04
>>71
StringBuffer[] sb = new StringBuffer[5];
for(int i=0; i<sb.length; i++) sb[i] = new StringBuffer();
75デフォルトの名無しさん:2005/03/25(金) 16:04:19
>>71
配列のインスタンスを作ることと、StringBufferのインスタンスを作ることを混同している。

「StringBuffer配列のインスタンスを作る 」(StringBufferはまだ作っていない)
StringBuffer[] sbuff = new StringBuffer[2];

「StringBufferのインスタンスを作る」
sbuff[0] = new StringBuffer();
sbuff[1] = new StringBuffer();
76デフォルトの名無しさん:2005/03/25(金) 16:04:30
>Java.util.StringBufferが見つかりました
よかったね
77デフォルトの名無しさん:2005/03/25(金) 16:41:03
>>74-75
行けました。解説ありがとうございます。ごっちゃになっていました
>>76
良くないです
78デフォルトの名無しさん:2005/03/25(金) 16:44:39
72はスルーか
79デフォルトの名無しさん:2005/03/25(金) 16:53:46
>>77
>>76の指摘はパッケージかと思われ
8060:2005/03/25(金) 16:54:25
先ほどは失礼しました。

スレッドの同期でjoin()の動作がつかめません。
join()が一つの時は、呼び出し元が待機しているのを確認できるのですが。
複数のスレッドを実行したときに、1つのスレッドにjoin()を実行しても
呼び出し元が待機せずに実行が続くのですが、その理由がわかりません。
どなたかご教授お願いします。
81デフォルトの名無しさん:2005/03/25(金) 17:07:44
>>81
わかりやすいようにサンプルソース書いていってくれ
82デフォルトの名無しさん:2005/03/25(金) 17:24:38
>>81
サンプルまだ?
83おしえて厨:2005/03/25(金) 17:26:22
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at TetrisWindow.paint(tetriswindow.java:185)
at TetrisWindow.update(tetriswindow.java:179)
at sun.awt.RepaintArea.updateComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


こんなエラー、どういうときに出るのさ・・・paintかrepaintあたりが原因?
誰かおしえてください
84デフォルトの名無しさん:2005/03/25(金) 17:29:37
>>83
> どういうときに出る?
君の貼ったそのソースにありありと描かれてるじゃないか
85デフォルトの名無しさん:2005/03/25(金) 17:38:07
>>83
そのまま描いてあるだろ
tetriswindow.javaの185行目でNULL参照した、って
86& ◆hJb7GWrzxo :2005/03/25(金) 17:38:54
>>84

それじゃあ君のその推理を聞かせてもらおうか
87おしえて厨:2005/03/25(金) 18:02:28
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=22667

このコードでも同様に
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
が発生するのだ。一体、これのどこをどうなおせってんだよ!?
88デフォルトの名無しさん:2005/03/25(金) 18:14:50
>>87
それだとdimが初期化される前にスレッドで使われるぞ
89& ◆Di83K0DpQA :2005/03/25(金) 18:20:31
>>88

dimの初期化をinit()のスレッドのインスタンス作成前にコピーしてみたが
やっぱりヌルポ発生したぞ
エラーが起きている行は
if (ct == null) ct = buf.getGraphics();
こんなだがこれが何か不味いんですかね?
90デフォルトの名無しさん:2005/03/25(金) 18:23:47
dim = getSize();

この直後にNULLチェックコード入れたらどうなる?
91デフォルトの名無しさん:2005/03/25(金) 18:25:43
>>89
なら、bufがNULLって事で確定だね
92デフォルトの名無しさん:2005/03/25(金) 18:28:52
はじめまして初心者です。なんかjavaやるためにMS-DOSの設定変えて再起動したら全画面のMS-DOSモードになっちゃったんで、しかたなくセーフティーモードでPCやってるんですが、いろいろ機能の制限があって困ってます!どうすればいいか教えて下さい!
93デフォルトの名無しさん:2005/03/25(金) 18:30:19
createImage は、

Returns:
an off-screen drawable image, which can be used for double buffering. The return value may be null if the component is not displayable. This will always happen if GraphicsEnvironment.isHeadless() returns true.

って事なので、nullを返す可能性あります
だからnullチェックしましょう
94デフォルトの名無しさん:2005/03/25(金) 18:32:54
>>92
Win板行けハゲ
95デフォルトの名無しさん:2005/03/25(金) 18:35:53
あの、自分Javaやろうとしてるんですけど、Java2 SDKってありますよね。
あれの1.4.1_01をダウンロード&インストールしたんです。
それで、Java組みますよね。
コマンドフロンプトでコンパイルしますよね。
PATHのパスは正しいはずなのに、Javac.exeが起動できないんです…。
全パス(?)で入力しても起動できませんorz
PATHのパス以前の問題でしょうか?
96デフォルトの名無しさん:2005/03/25(金) 18:37:18
Jが大文字なのは書き間違いで良いんだな?
97デフォルトの名無しさん:2005/03/25(金) 18:38:21
pathが正しくないんだろ?OSは?
98デフォルトの名無しさん:2005/03/25(金) 18:38:32
つか、Winなら大文字でもおkだろ
99デフォルトの名無しさん:2005/03/25(金) 18:38:43
PATHのパスって言い方がおかしかったです。
すいません。
100デフォルトの名無しさん:2005/03/25(金) 18:41:38
>>97 パスは正しいと思います…。OSはXPです…。
101デフォルトの名無しさん:2005/03/25(金) 18:42:19
>>96 ごめんなさいorz 俺が見てた本では大文字だったので
大文字で書いてしまいました…orz
102デフォルトの名無しさん:2005/03/25(金) 18:44:20
pathコマンドの結果あげてみそ
103デフォルトの名無しさん:2005/03/25(金) 18:45:17
>>102 結果全てですか?
104デフォルトの名無しさん:2005/03/25(金) 18:45:30
javacを実行しようとすると、どういうエラーになるの?

起動できません、って書くよりも
こういう操作をしたら、これこれこういうエラーが出ましたが、
何故か分かりません
って書いた方が、解決は早いよ
105デフォルトの名無しさん:2005/03/25(金) 18:47:01
フルパスでもダメって事は、別のOSのJDKをダウソしてきた可能性もある
106デフォルトの名無しさん:2005/03/25(金) 18:47:04
環境変数JAVA_HOMEに解凍したフォルダ
環境変数Pathに%JAVA_HOME%\bin
これでPathが通らない筈がない

>>103
それがいいね見せるが早い
107デフォルトの名無しさん:2005/03/25(金) 18:47:17
>>104 すいませんでしたorz
えっと、エラー:ファイル名.javaを読み込めません。
エラー:一個

です。
108デフォルトの名無しさん:2005/03/25(金) 18:48:46
そっちかよ!

じゃあ、ファイル名.javaがカレントにないんだろ
109デフォルトの名無しさん:2005/03/25(金) 18:49:05
正直わらた
110デフォルトの名無しさん:2005/03/25(金) 18:49:39
質問しているのに情報の出し惜しみしてるとこうなる
111デフォルトの名無しさん:2005/03/25(金) 18:50:37
・・・javacはうごいてんじゃねーか

cmdでコマンドプロンプトを立ち上げる
cd半角スペースと入力してソースの入ってるフォルダを開いてアドレスをプロンプトにドラッグ
仮にそのフォルダがeドライブにあるならe:とも打つ(cドラなら聞かなかったことにしとけ)
そしてjavacだ
112デフォルトの名無しさん:2005/03/25(金) 18:53:17
FAQに載ってない高度な質問ワラタ
113デフォルトの名無しさん:2005/03/25(金) 18:53:18
ttp://www.gihyo.co.jp/books/syoseki.php/4-7741-1692-0
ちなみにこの本みてました…。
114デフォルトの名無しさん:2005/03/25(金) 18:55:07
>>106 ちょっと長くなりそうです…。
115デフォルトの名無しさん:2005/03/25(金) 18:55:54
いや、もうそれはイラネ
116デフォルトの名無しさん:2005/03/25(金) 18:56:01
dirしてみろ。
拡張子が.java.txtになっていないことを確認しる。
117デフォルトの名無しさん:2005/03/25(金) 18:56:33
ワラタw
118Java馬鹿:2005/03/25(金) 18:59:26
馬鹿でごめんなさい…。
dirって何ですか?

名前つけましたorz
119デフォルトの名無しさん:2005/03/25(金) 19:01:47
 C:\hogehoge>
ってなってるだろ?
これが示しているのがカレントディレクトリだ
パス抜きでプログラムやファイルを指定した場合、カレントディレクトリに
それが存在しているものとして処理される
別のディレクトリにある物を示したいなら
 ・相対パスか絶対パスで場所を示す
 ・PATHを設定する
のどちらかを行う必要がある
120デフォルトの名無しさん:2005/03/25(金) 19:01:58
>>118
お前がバカなのであってJavaはバカじゃねーYO!
あやまれ!
121Java馬鹿 ◆11lf1o9R42 :2005/03/25(金) 19:02:04
フォルダの中に表示されてる名前がtxtになってないかどうかチェックするんですか?
Javaファイルって出てますけど…。

馬鹿ですいませんorz
122デフォルトの名無しさん:2005/03/25(金) 19:02:30
しかもJava以前のOSの知識のほうだしなぁ
123馬鹿 ◆11lf1o9R42 :2005/03/25(金) 19:02:56
>>120 すいません。国語能力が低かったですorz
124デフォルトの名無しさん:2005/03/25(金) 19:03:13
ちょっと言わせてくれ...

質問する時は、>>104とか>>110が言うように情報を出し惜しみしない事
最初からエラーの内容を書いていれば、>>96->>106のような、
結果として意味の無かったレスが省けた
また、操作内容、ソース、出力されたエラー等は、書き写しではなく
「必ずコピペする」こと

>エラー:一個
俺にはこれがコピペとは思えない
125デフォルトの名無しさん:2005/03/25(金) 19:03:47
ここは ◆11lf1o9R42 にDOSプロンプトの操作を教えるスレになりました
126デフォルトの名無しさん:2005/03/25(金) 19:04:23
でも正直みんな優しいなとおもた
127デフォルトの名無しさん:2005/03/25(金) 19:04:33
c:\hoge\Hoge.javaってファイルをコンパイルするなら、
コマンドプロンプトでhogeフォルダに移動してから
javac Hoge.java
と入力する。
128デフォルトの名無しさん:2005/03/25(金) 19:05:57
うお!スレ伸びまくっててワロタw
>>124
プロンプトのコピペってC-vじゃできないからじゃない?

ちなみに、プロンプトでコピペをするには右クリックして範囲指定をしてから
コピペしたいとこを反転(ドラッグして色を変える)させてエンターをプッシュ!
129デフォルトの名無しさん:2005/03/25(金) 19:06:48
>>127
さらに補足してみるか
そのフォルダの移動をするのに

c:
cd \hoge

とすると1行目でドライブの移動、2行目でディレクトリの移動をする
130127,128:2005/03/25(金) 19:08:26
あ、みすった。
>>128
>プロンプトのコピペってC-vじゃできないからじゃない?
C-cの間違いだ。
131デフォルトの名無しさん:2005/03/25(金) 19:08:52
>>128
なるほどな、そこまで頭まわらんかった...
dirって何ですかと言っている◆11lf1o9R42 にそれを要求した漏れが悪かった
132デフォルトの名無しさん:2005/03/25(金) 19:09:13
Javaで「引数を省略したときにデフォルトの値で処理する」というのを、
引数を必要とするメソッドを用意し、引数が省略された場合に対しては
デフォルトの値を引数として引数を必要とするメソッドを呼び出すような
同名のメソッドを作成しオーバーロードすることによって実現しています。
ところが、よく考えてみると、これだと省略した場合にメソッドを
二重に呼び出すことになるので、引数を値渡しするときに
メモリに2重にコピーされて、特に大きなクラスを引数とする場合などは
メモリを消費することにならないでしょうか?
もしそうだとすれば、このような場合にはどういう書き方を
するのがよいでしょうか?
133デフォルトの名無しさん:2005/03/25(金) 19:10:16
>>129みたいなのをbatファイルにしてドラックして使うと早い
って教えるのは今は混乱するだけだろうからやめておく。
134デフォルトの名無しさん:2005/03/25(金) 19:11:13
>>132
細かいこと気にしなくてもいい。
135デフォルトの名無しさん:2005/03/25(金) 19:12:44
>>132 ソース貼って。
C++のデフォルト引数を無理やり実装しようとしてるんだろうけど
いまいち要領を得ない。
136デフォルトの名無しさん:2005/03/25(金) 19:13:02
別にクラス(インスタンス)全部渡してるわけじゃないよ
参照(多分4バイト)を渡してるだけだよ
だからその分が倍になるだけだよ
だからその書き方で良いんだよ
137馬鹿 ◆11lf1o9R42 :2005/03/25(金) 19:17:12
>>124 ほんと馬鹿でごめんなさい…。
>>127 移動するときに大文字小文字は区別されますか?
138デフォルトの名無しさん:2005/03/25(金) 19:18:31
> 大文字小文字は区別されますか?
聞くより試せよ
139馬鹿 ◆11lf1o9R42 :2005/03/25(金) 19:19:30
>>128 実はやりかたわからなかったです…orz
Ctrlができなかったもんで…orz
教えてくれてありがとうございますorz

馬鹿ですいませんorz
140デフォルトの名無しさん:2005/03/25(金) 19:20:15
みんな、最初はわからないよ!
がんばれ。
141デフォルトの名無しさん:2005/03/25(金) 19:23:25
>>132
Javaは全て参照を値渡し
気にしなくていい
142馬鹿 ◆11lf1o9R42 :2005/03/25(金) 19:26:10
D:\Java\Chapter3>javac Lesson2.java
エラー: Lesson2.java を読み込めません。
エラー 1 個
143馬鹿 ◆11lf1o9R42 :2005/03/25(金) 19:26:43
すいません、本みながらやってたので、フォルダがチャプター3ですorz
144デフォルトの名無しさん:2005/03/25(金) 19:26:44
D:\Java\Chapter3>dir
エンターしてみ。
145デフォルトの名無しさん:2005/03/25(金) 19:28:09
>>143
色々試してわからないことをまとめてから書け
146馬鹿 ◆11lf1o9R42 :2005/03/25(金) 19:28:10
>>144 何か出てきました。
147馬鹿 ◆11lf1o9R42 :2005/03/25(金) 19:29:18
えっと、本では、Cドライブに入れてたんですけど。
ウィンドウズとかあってちょっと怖かったんでDに移したんですorz
148デフォルトの名無しさん:2005/03/25(金) 19:29:51
>>146
そのいろいろ出てきたものはChapter3フォルダの中身。
”dir”は今いるフォルダ(この場合D:\Java\Chapter3)にあるファイル一覧を見るコマンド
>>142の意味はこのフォルダにはLesson2.javaが無いって意味と同義。
149おしえて厨:2005/03/25(金) 19:30:18
>>93

createImage()はどうやら画面表示されてなかったり隠れてたりするときに
nullを返すようだな。Frameをshow()する順番とinit()呼ぶ順番とかのほうも
いじっていたら、
なんとかヌルポ例外一回出るけどそのまま動作し続けるようになった。
でも、例外でないようにはできないもんかね?
150デフォルトの名無しさん:2005/03/25(金) 19:31:30
>>149
自分で考えろ
151馬鹿 ◆11lf1o9R42 :2005/03/25(金) 19:31:45
C:\Documents and Settings\Owner>d:

D:\>cd \Java\Chapter3

D:\Java\Chapter3>javac Lesson2.java
エラー: Lesson2.java を読み込めません。
エラー 1 個

D:\Java\Chapter3>

PATHはあってるはずなんですけど、起動しません…orz
152デフォルトの名無しさん:2005/03/25(金) 19:32:35
>>151
dirで出てきたものコピペ
153デフォルトの名無しさん:2005/03/25(金) 19:34:50
>>147
それは別に問題ない
154馬鹿 ◆11lf1o9R42 :2005/03/25(金) 19:34:58
D:\Java\Chapter3>dir
ドライブ D のボリューム ラベルがありません。
ボリューム シリアル番号は BC4B-0347 です

D:\Java\Chapter3 のディレクトリ

2005/03/25 19:02 <DIR> .
2005/03/25 19:02 <DIR> ..
2005/03/06 12:35 369 First.class
2005/03/06 12:45 94 First.html
2005/03/06 12:35 169 First.java
2005/03/07 01:08 554 Fun.class
2005/03/07 01:12 92 Fun.html
2005/03/07 01:07 242 Fun.java
2005/03/24 14:46 246 Lesson2.java.java
2005/03/06 12:57 355 Practice1.class
2005/03/06 13:02 99 Practice1.html
2005/03/06 12:55 150 Practice1.java
10 個のファイル 2,370 バイト
2 個のディレクトリ 935,264,256 バイトの空き領域
155デフォルトの名無しさん:2005/03/25(金) 19:36:02
2005/03/24 14:46 246 Lesson2.java.java
156馬鹿 ◆11lf1o9R42 :2005/03/25(金) 19:36:41
さっきJava.javaにしてしまったので直しましたorz
157デフォルトの名無しさん:2005/03/25(金) 19:36:45
コピペしなくてもいいから、その中に
Lesson2.java
があるかどうか教えて
つーか、Lesson2.javaはどこにおいたの?

158馬鹿 ◆11lf1o9R42 :2005/03/25(金) 19:37:14
>>157 Chapter3の中にあります。
159157:2005/03/25(金) 19:37:47
遅レススマソ
160馬鹿 ◆11lf1o9R42 :2005/03/25(金) 19:38:12
うおおおおおおおおおおおおおおおおおおおお。
できた…。
classファイルが作成されました…。
161デフォルトの名無しさん:2005/03/25(金) 19:38:13
あー多分、拡張子表示しないようになってるんじゃないかな。
だからExplorerでみてもLesson2.javaとしか見えない。

マイコンピュータ開いてツールからフォルダオプション
表示タブを開いて、登録されている拡張子は表示しないのチェックを外してOK押す。

そしてからもういっかいD:\Java\Chapter3をExplorerで見れば間違いに気づくはず。
162157:2005/03/25(金) 19:38:49
>>156
Lesson2.java.java を Lesson2.java
に直したらうまくいった?
163デフォルトの名無しさん:2005/03/25(金) 19:39:19
>>160
よくやった!w
164デフォルトの名無しさん:2005/03/25(金) 19:39:46
>>160
おめ
次はjava.exe だ、ガンガレ
165デフォルトの名無しさん:2005/03/25(金) 19:39:54
どうでもいいけどさ、>>95は何でいまさら 1.4.1_01 をインスコしたわけ?
参考書とかに合わせる必要ないよ。最新の 1.4.2_07 にしておくことをお勧めする。
166デフォルトの名無しさん:2005/03/25(金) 19:40:11
遅延レスが続いてるぞ
おまえらもちっとバカの動向を待ってから書き込め

乙>バカ
167デフォルトの名無しさん:2005/03/25(金) 19:40:12
>>149
addNotify()するとpeerが作られるからnullが返らなくなるかも。
168デフォルトの名無しさん:2005/03/25(金) 19:40:50
なんか>>166の最後の一行でふいてしまったw
169馬鹿 ◆11lf1o9R42 :2005/03/25(金) 19:41:20
>>129さんの見てわかりました。
俺、Dドラに移動してなかったみたいです…。
それに、さっきJavaが表示されてないの見て、[.java]をつけてしまって…。

この二つが原因でした。
皆さん迷惑掛けてすいませんでした。
俺の馬鹿な質問にマジレスしてくれてありがとう…。
170デフォルトの名無しさん:2005/03/25(金) 19:41:31
>>146 にめちゃウケタww
171デフォルトの名無しさん:2005/03/25(金) 19:42:05
コピペして自ら気づくんだから、まだマシだよな。
172デフォルトの名無しさん:2005/03/25(金) 19:42:20
つーかよ、レス早杉て正直ついていけんかった
書いてるうちに3〜4個レスついてるんだもんなー
173馬鹿 ◆11lf1o9R42 :2005/03/25(金) 19:43:16
というわけで自分は密かにここの住人になりますorz

また馬鹿なことあったらサポートお願いします…。

馬鹿ですいませんorz
174デフォルトの名無しさん:2005/03/25(金) 19:44:32
今後は間違っても馬鹿◆torippuでは書き込むなよ
経験則から言って叩かれるから
175デフォルトの名無しさん:2005/03/25(金) 19:45:14
愛されるかもしれない。
176永遠のJava初心者 ◆11lf1o9R42 :2005/03/25(金) 19:45:41
>>174 了解しました。
177デフォルトの名無しさん:2005/03/25(金) 19:46:29
>>173
なんかいつの間にか周知の事実になってしまったが、
別にキミは馬鹿でもなんでもない、単に知識が無かっただけ
知識がないなら増やせば良い、それだけだ
その手段としてココを利用するのも良かろう
178永遠のJava初心者 ◆11lf1o9R42 :2005/03/25(金) 19:47:08
>>165 最新だとやっぱり結構違ったりしますか?
179永遠のJava初心者 ◆11lf1o9R42 :2005/03/25(金) 19:48:12
>>177 ありがとうございます…。
そのような事を言っていただいて本当に嬉しいです…。

180デフォルトの名無しさん:2005/03/25(金) 19:49:10
5.0でいいじゃん
JSPで新機能使えない以外は楽しくていい
181デフォルトの名無しさん:2005/03/25(金) 19:49:36
>>174はトリップ付で書き込むなと言ったのではないのか?
182デフォルトの名無しさん:2005/03/25(金) 19:50:32
「次の質問で」コテで現れるなって言っただけだよ
183永遠のJava初心者:2005/03/25(金) 19:51:25
>>181
あ、そうなんですかorz
名前だけにしますねorz
184永遠のJava初心者:2005/03/25(金) 19:51:58
>>182 鳥おkってことですか?
185デフォルトの名無しさん:2005/03/25(金) 19:52:57
識別する必要がなくなったら消えるのが吉という意味
186デフォルトの名無しさん:2005/03/25(金) 19:53:13
なんとなくだけど
>>175に一票
187永遠のJava初心者:2005/03/25(金) 19:53:49
やっぱ名前だけにしときますね…orz
188デフォルトの名無しさん:2005/03/25(金) 19:54:06
>>141
いま本を見直してみましたけど、よく見ると確かにそう書いてありますね。
解決しました。ありがとうございます。

>>135
ソースは貼るほどの上手なものではないと思いますので、
エッセンスだけ書いてみます。実際に僕が組んでいるものとは
ちょっと違いますが。

例えば、オセロゲームのプログラムで、
盤面をBoardというクラスで表し、このBoardのメンバとして
現在のカーソルの位置であるint currentというメンバを持っていると
します。(単なる数字であるcurrentと二次元の座標(x, y)とは
適切な方法で変換する。例えば(x, y)⇔10x+yとか。)。
盤上の位置を引数としてその位置に打った場合に返すことのできる
石の数を返す以下のようなメソッドを作成します。
int count(int x, inty){
・・・
}
そして、座標(x, y)を省略した場合にデフォルトとして
現在のカーソルの位置に対する返す石の数を返す関数として、
以下のように書きます。
int count(){
this.count(current/10, current%10)
}
これで、引数なしでboard.count() (boardはBoardクラスのインスタンス)
のように記述した場合、int count()が呼び出されて引数にcurretn/10,
current%10がデフォルトとして代入され、int count(int x, int y)が
呼び出されて処理が行われます。
189永遠のJava初心者:2005/03/25(金) 19:56:22
ちなみに、今まで作ったJavaは…。
【何もしないアプレット】
【文字が出るアプレット】
【何もしない青いアプレット】
【斜めに線を引くアプレット】ですorz
190デフォルトの名無しさん:2005/03/25(金) 19:56:24
>>188
普通だね。気にするレベルじゃないし、一般的に綺麗な使い方。
191デフォルトの名無しさん:2005/03/25(金) 19:56:42
まとめ
馬鹿 Javac.exeが起動できないんです…。
   pathが正しくないんだろ?
馬鹿 パスは正しいと思います…。
   pathコマンドの結果あげてみそ
馬鹿 結果全てですか?
   javacを実行しようとすると、どういうエラーになるの?
馬鹿 えっと、エラー:ファイル名.javaを読み込めません。
   そっちかよ!
馬鹿 (pathコマンドの結果は)ちょっと長くなりそうです…。
   いや、もうそれはイラネ
馬鹿 馬鹿でごめんなさい…。 (Java馬鹿を名乗る)
   お前がバカなのであってJavaはバカじゃねーYO! あやまれ!
馬鹿 すいません。国語能力が低かったですorz (馬鹿に改名)
   コマンドプロンプトでhogeフォルダに移動しろ
馬鹿 移動するときに大文字小文字は区別されますか?
   聞くより試せよ
馬鹿 D:\Java\Chapter3>javac Lesson2.java エラー: Lesson2.java を読み込めません。
   D:\Java\Chapter3>dirしろ
馬鹿 何か出てきました
   dirで出てきたものコピペ
馬鹿 2005/03/24 14:46 246 Lesson2.java.java !!
馬鹿 うおおおおおおおおおおおおおおおおおおおお。

192永遠のJava初心者:2005/03/25(金) 19:56:48
あ。文字はもともと出てましたねw
193デフォルトの名無しさん:2005/03/25(金) 19:58:16
>>191
乙ー!
194永遠のJava初心者:2005/03/25(金) 19:58:40
>>191 ありがとうございますorz
195デフォルトの名無しさん:2005/03/25(金) 20:01:00
みんなイイ仕事したあとはスガスガしいな。
196デフォルトの名無しさん:2005/03/25(金) 20:02:48
>>191
乙www
まあ、そろそろスレ違いなわけだが。
197デフォルトの名無しさん:2005/03/25(金) 20:22:42
「初心者」 「大歓迎」
が機能した珍しい例だな

なぜかいつもならDOSコマンドおぼえろやゴルアでおわりなのだが
198デフォルトの名無しさん:2005/03/25(金) 20:23:55
皆万博で浮かれてるからじゃない?
199デフォルトの名無しさん:2005/03/25(金) 20:49:10
やばい>>191糞ワロタw
乙w
200デフォルトの名無しさん:2005/03/25(金) 21:36:22
>>194
の名前がどこか美しいのは万博のせいか?
201永遠のJava初心者:2005/03/25(金) 21:39:32
>>200 そうかもしれません(何
202デフォルトの名無しさん:2005/03/25(金) 21:52:21
なあ、これからもこんな奴がどんどんやってくるのか?
203デフォルトの名無しさん:2005/03/25(金) 21:53:26
ここはJava初心者のスレだと思っていたが

プログラミング初心者どころか
PC初心者ですらなく
コミュニケーション初心者じゃねーか
204デフォルトの名無しさん:2005/03/25(金) 21:59:18
i-Studyのような多肢選択問題のアプリケーションを作りたいんですけど、
これから何を勉強していったらいいか、
効果的な学習の順番などありましたらアドバイスをください。

『JAVAで始めるプログラミングレッスン』を何度か読み通して、
今はアリゴリズムの入門書を読んでます。
CUIの簡単なプログラムをつくれる程度の知識です。

実現したい仕様

ユーダーインタフェースはすべてGUIで、問題はランダムに出題される。
データベース上で、分野ごとに正答率などの集計ができる。

↑こんなのが作りたいです。
205デフォルトの名無しさん:2005/03/25(金) 22:08:55
まず仕様をつくれるようにしる

その仕様を満たすためになにが必要なのかを考える
技術的に足りないのであれば勉強する
206デフォルトの名無しさん:2005/03/25(金) 22:09:32
推薦図書/必読書のためのスレッド PART 22
http://pc8.2ch.net/test/read.cgi/tech/1106175218/

こっちでGUI系のお勧めの本聞いたほうがよさげ。
207デフォルトの名無しさん:2005/03/25(金) 22:10:08
あなたの書き込みを読む限り、無理ですね
208永遠のJava初心者:2005/03/26(土) 01:01:50
プログラム作るとき、なんか行をずらしたりしますよね。
あれって何の意味があるんですか?
見やすくするためなんですか?
209デフォルトの名無しさん:2005/03/26(土) 01:07:16
インデントは見易さのため
210永遠のJava初心者:2005/03/26(土) 01:16:21
>>209 あ、そうなんですか。
ありがとうございます^^
211デフォルトの名無しさん:2005/03/26(土) 01:22:20
人に聞く前に少しは考えろよ・・・
212204:2005/03/26(土) 01:24:56
アドバイスありがとうございました。

なんか…具体的にどうこうじゃなくて
書き込み自体に問題があったようですね。
稚拙な書き込みで申し訳ありませんでした。
213デフォルトの名無しさん:2005/03/26(土) 01:28:37
「永遠の」初心者ってのは、嫌われること確実なので
やめたほうがいいぞ。
「私成長する意思がありません」と言ってるみたいなもんだからな。

というかコテハンにする意味がないだろう。
214デフォルトの名無しさん:2005/03/26(土) 01:48:32
javaの古いバージョンを
インストールし直したいのですが
もう公式には古いバージョンが置いていないのですがどこかある場所ありませんか?
215デフォルトの名無しさん:2005/03/26(土) 01:55:34
216デフォルトの名無しさん:2005/03/26(土) 01:58:22
>>215
感謝。ありがとうございます
217デフォルトの名無しさん:2005/03/26(土) 02:12:58
staticメソッドから動的に自分の入ってるクラスオブジェクトを取得する事はできるんでしょうか?
this.getClass()みたいな。
218Java初心者:2005/03/26(土) 02:14:15
>>213 じゃあこれで…orz
219デフォルトの名無しさん:2005/03/26(土) 02:17:22
>>217
どのへんが動的なんだ??
Hogeクラス内のstaticメソッド内で、Hoge.classて書くのはだめ?
任意のクラスでなくて、自分のクラスなんだったら、これでいいと思うが。
220デフォルトの名無しさん:2005/03/26(土) 02:21:52
>>217
staticメソッドって クラス.メソッド と指定して呼ぶんだから
それをそのまま クラス.class とすればいいと思うんだけど
そういう話ではなくて?
221デフォルトの名無しさん:2005/03/26(土) 02:24:52
public class Abc{
  public static void main(String[] args){
    System.out.println(Abc.class.getName());
    return;
  }
}
222デフォルトの名無しさん:2005/03/26(土) 02:25:01
なにがやりたいのか不明だから、やりたいことを書いたほうがいい答えが返ってくる
223デフォルトの名無しさん:2005/03/26(土) 02:25:49
>>218
「初心者」という名前自体も嫌われているというのがわからないか。
努力の無さを初めてという事にして免罪符にされてはかなわんよ。
224デフォルトの名無しさん:2005/03/26(土) 03:07:00
>>218
さっそく揉まれ始めてるようだが....

>>213
>というかコテハンにする意味がないだろう。

了解?
「自分が質問者だ」ってことを表すには名前欄にもとの発言番号かくので十分だし、
コテハンで「以前にあの質問した馬鹿です」ってことをバラす必要性なんて何もない。
聞くときは毎回新しい質問者として聞けばいい。

さっさと学習して教える側に回ってもらった方がありがたいんだし。
225デフォルトの名無しさん:2005/03/26(土) 09:50:05
皆さんすいませんでした。
俺が馬鹿でした。
もう名前消しますので。
次からは普通の名無しさんで聞きます。
迷惑掛けてすいませんでした。
226デフォルトの名無しさん:2005/03/26(土) 10:00:53
227& ◆DL2XKqFsqk :2005/03/26(土) 10:56:32
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=22679

ダブルバッファリングのアプレットのサンプルコードがあったので
それをスタンドアロンのGUI化してみた。
しかし起動してもヌルポ参照がおこってHello Worldがでない。
一旦最小化してからウィンドウサイズを元に戻すと、Hello Worldがやっと出る。
どうしてこうなるのか教えてください分かる人。
228デフォルトの名無しさん:2005/03/26(土) 11:34:23
Class target = Class.forName(SubHoge);
AbHoge = target.newInstance();
これだと引数付きのコンストラクタしか呼び出せそうにありませんが
引数付きコンストラクタで初期化するにはどうしたら良いのでしょうか?
229デフォルトの名無しさん:2005/03/26(土) 11:53:20
>>228 付きなしどっちが知りたいのかはっきり汁。
230デフォルトの名無しさん:2005/03/26(土) 12:00:16
すまそ。呼び出したいのは引数付きです。
231デフォルトの名無しさん:2005/03/26(土) 12:00:17
察してあげると、引数付きのコンストラクタを使うには
たとえばSubHoge(int, String)が呼びたければ、

Class[] argTypes = { Integer.TYPE, String.class };
Constructor cntr = getConstructor(argTypes);
Object[] args = { new Integer(10), "hoge" };
SubHoge hoge = (SubHoge)cntr.newInstance(args);

みたいな感じ。(import&例外処理省略)

Tigerだとキャストなしでいいし、可変配列あるのでもっとシンプルになる。
232デフォルトの名無しさん:2005/03/26(土) 12:03:01
>>231
thx やってみます。
233デフォルトの名無しさん:2005/03/26(土) 12:09:44
いつのまにか神スレage
234228:2005/03/26(土) 12:36:29
Class#castでキャストしても、インスタンスを代入の左辺で受けることができるのは
superクラスかインタフェースだけですよね?
subクラス特有のメソッドを使う場合はMethod必須ですか?
235デフォルトの名無しさん:2005/03/26(土) 13:08:35
>>225
がんばれよ

みんなこれだけいうのは2chだけじゃなくて他の掲示板でも必要な
ネット上のエチケットだから、ぜひ覚えておいてくれ

初心者です。教えてください・・・という題名がでるだけでみんな
嫌気がさしてるからね
236デフォルトの名無しさん:2005/03/26(土) 13:10:34
>>227
そのままなんじゃないか?
nullのまま渡してるだけかと
237デフォルトの名無しさん:2005/03/26(土) 14:16:38
>>227
1  Applet a = new test5();
2  f.add(a,BorderLayout.CENTER);
3  f.setVisible(true);
4  a.init();
5  a.start();

3 のところでフレームを表示するように命令してるので、フレームは自分自身を表示するが、
そのとき、自分に addされている Applet も表示しようとすので、 Applet の paint(Gra..)
メソッドも呼び出される。

でも、まだそのときには、init() が呼ばれていないので、フィールド buf の中身は null;

っていう気がする。
238デフォルトの名無しさん:2005/03/26(土) 14:18:32
初心者を名乗りたいなら
質問する側ではなく
回答する側になって名乗ってはどうか
239デフォルトの名無しさん:2005/03/26(土) 14:54:43
Javaのコンパイラってすごいね
ひとまず単純にだーっと書いて
その後いろいろ最適化をかけるんだけど効率が上がることなんてめったにないし
たまに負ける…
おまえらJavaコンパイラ様に勝てるか!
240デフォルトの名無しさん:2005/03/26(土) 15:01:20
バイトコードコンパイルにJITコンパイルという2段構えだからね
バイトコードコンパイル自体がJITコンパイルの為の噛み砕きみたいなもんだから
変に弄らないほうがいいんじゃない?
241デフォルトの名無しさん:2005/03/26(土) 15:03:09
>>237

3番と4番をいれかえてもぬるぽ出るぞ
242デフォルトの名無しさん:2005/03/26(土) 15:08:14
そんな小手先の最適化にしか目が行かないから負けるんだ。
アルゴリズムによる最適化が出来れば余裕で勝てる。
243デフォルトの名無しさん:2005/03/26(土) 15:12:03
>>242
そんなの当たり前
問題はそこではない

ってか小手先の最適化ってもうだれもしてない?
定数にしたりインライン化したり並列処理にしたり
0と比較したり、シフトしたり
244237:2005/03/26(土) 15:29:28
>>241
そりゃそうだろうな。

  public Image createImage(int width, int height)
  戻り値:
    ダブルバッファリングに使用できるオフスクリーン描画イメージ。
    コンポーネントが表示不可能な場合は null を返す。

「 createImage する前に表示する」 → NullPointerException。
「表示する前に createImage する」 → null が返される。

結論:
  プログラミングなんかしてないで氏ね。

  あるいは、
    public void paint(Graphics g) {
      if (buf == null) {
        dim = getSize();
        buf = createImage(dim.width , dim.height);
      }
      以下略
245デフォルトの名無しさん:2005/03/26(土) 15:59:16
>>243
当たり前とか言うわりに

> ってか小手先の最適化ってもうだれもしてない?
ケイタイ開発でもなければそんなのに腐心するのが無駄だと認識していないわけ?

> 定数にしたりインライン化したり並列処理にしたり
> 0と比較したり、シフトしたり
並列処理はアルゴリズムによるアプローチだろ。定数はどのみちコンパイラがインライン展開
するから効果なし、0 比較やビット演算は「そう明記したほうが分かりやすい」という理由で書く
ことはある。小手先最適化のプラシーボ効果(誤用の意味)に手間暇割いて設計甘い奴はよくいる。

小手先の最適化まで踏み込むのは「こんな重箱の隅まで改善したのにパフォーマンスが
上がりません」を客に示し、「前任の会社の設計が馬鹿過ぎ」「お前らの要件の詰めが甘すぎ」等を
暗に示すという後ろ向きの理由で敢えてやることはある。
246デフォルトの名無しさん:2005/03/26(土) 16:20:43
>>245
後ろ向きの理由ウケタ
参考になります。
247デフォルトの名無しさん:2005/03/26(土) 16:31:25
>>245
> 小手先の最適化まで踏み込むのは「こんな重箱の隅まで改善したのにパフォーマンスが
> 上がりません」を客に示し、

この時点で客から能無しのレッテルが。
248デフォルトの名無しさん:2005/03/26(土) 16:39:25
客が求めるのは経過じゃなくて結果だからね
いくら難しい言葉使って努力したんです、と言っても
結果が出なけりゃ意味がない
249デフォルトの名無しさん:2005/03/26(土) 16:45:18
>>247
いや、普通は改善と一緒に調査もして何がボトルネックになってるかも示すから。

フレームワークがボトルネック → 作った会社が馬鹿すぎ
JSP 重すぎ → 客の要望した画面が懲りすぎ
SQL 投げまくり → それだけ要件の業務ロジックが複雑 (またはあいまい) すぎ

もちろんこっちの作りで悪いところがあれば期間交渉しながら叩き潰すけどな。
250デフォルトの名無しさん:2005/03/26(土) 16:47:14
結果が出ないのを無関係な現場に押し付けられてもかなわんがな。
251デフォルトの名無しさん:2005/03/26(土) 16:51:40
与えられたブツで作る事ができるかどうかの目測を誤ったやつが悪いだろ
252デフォルトの名無しさん:2005/03/26(土) 16:54:14
パフォーマンスとアベーラビリティはまた別の話だ。
253デフォルトの名無しさん:2005/03/26(土) 17:11:12
客も神じゃないから無理解や場の流れ、政治的理由などで関係ないところ叩き始め
たりすることだってあるさ。そんなときは、原因はあそこだからうちら叩いてもしょうが
ないでしょ、と返せないとね。

ただしある程度の信頼関係が無いと逆効果だけど。
254デフォルトの名無しさん:2005/03/26(土) 17:13:17
今日は休日だから社会人の方が多いですね
255デフォルトの名無しさん:2005/03/26(土) 17:21:00
自称出来る社会人が、初心者に語ることで満足するスレです。
256デフォルトの名無しさん:2005/03/26(土) 17:23:50
その通り!
だから次の質問ヨロ
257デフォルトの名無しさん:2005/03/26(土) 17:24:26
他所がダメで回ってきた案件なのに信頼関係があるってなんだそれ?
社会人ごっこ?
258デフォルトの名無しさん:2005/03/26(土) 17:28:36
>>257
「安い A さんとこで作らせて見たが駄目そうなので、ちょっと高いけど B さんおねがいします。」
まぁお前みたいな派遣がそういった政治的な話は耳にする機会は一生ないだろうが。
259デフォルトの名無しさん:2005/03/26(土) 17:46:47
ごっこ確定の模様
260デフォルトの名無しさん:2005/03/26(土) 17:56:39
プリントゴッコ
261デフォルトの名無しさん:2005/03/26(土) 18:00:51
どうして整数を0除算すると例外が発生するのに、
小数を0除算すると例外にならないのですか?
262デフォルトの名無しさん:2005/03/26(土) 18:04:35
「ボッタクリの B に聞いて A にやらせろ。B は利用するだけでいい。」
263デフォルトの名無しさん:2005/03/26(土) 18:10:30
>>257,259
世界のせまい奴だなー。井の中で飼い殺されてんのか? たまには外へ出ろよw
264デフォルトの名無しさん:2005/03/26(土) 18:17:46
要件定義や設計だけ開発を他に回すのももちろんあり。それはそれでそういう契約と料金設定するし。
265デフォルトの名無しさん:2005/03/26(土) 18:22:32
>>263
お前の鼻くそ未満のプライドに何の価値もないんだが。
266デフォルトの名無しさん:2005/03/26(土) 18:26:43
おまえら、契約云々とか、そんなしょうもないことは営業にやらせろ。
激しくスレ違いだ。ってか板が違うだろ。マ板に逝け。
267デフォルトの名無しさん:2005/03/26(土) 20:11:05
スレ違い厨ウザ
氏ね
268デフォルトの名無しさん:2005/03/26(土) 20:26:38
しらねーよ、低賃金ドカタが勝手に絡んでんだしw
プライド? 馬鹿?
269デフォルトの名無しさん:2005/03/26(土) 20:36:58
自称君がなんか必死だけど終わりにしてくれんかね
270デフォルトの名無しさん:2005/03/26(土) 20:37:18
趣味プログラマでもでかい顔できる初心者スレに職業プログラマが現れるとアレルギー反応が起きます。
271デフォルトの名無しさん:2005/03/26(土) 20:43:50
Javaアプリ向けのスクリプトエンジンは何が本命ですか?
272デフォルトの名無しさん:2005/03/26(土) 21:17:36
そしてお決まりの自称認定w
273デフォルトの名無しさん:2005/03/26(土) 21:52:17
String string みたいな
クラス名の先頭を小文字にしただけの変数名をよく使っちゃうんだけどまずい?
逆にせっかく意味のある名前思いついても
InputStreamReader hogeInputStreamReader みたいに
末尾にクラス名付けがちなんだけどまずい?
274デフォルトの名無しさん:2005/03/26(土) 21:57:29
buttonが1個の場合とかそれはあるかな
入力はinとかreaderでいい
275デフォルトの名無しさん:2005/03/26(土) 22:03:34
ガワさえちゃんとしてれば中身なんて
276デフォルトの名無しさん:2005/03/26(土) 22:05:43
まずいかどうかは主観。
俺的には名が体を表していればどうでもいい (i, in 等の慣例的簡略名以外)。
277デフォルトの名無しさん:2005/03/26(土) 22:06:50
変数のスコープが広いなら型が一目でわかるような変数名をつけるのが望ましい。

ただし何でもかんでも長すぎる変数名だと見難いしタイプも面倒だから、
極力狭いスコープを使って、変数名も短くする方がいい。
俺は全部で数行程度のコード中にでてくる変数は短くしてる。もちろん好みの問題もあるけど。

class Hoge { private BufferedReader hogeReader; ... }

{
BufferedReader r = new BufferedReader(...);
while (...) {...};
r.close();
}
どちらも使う。
278デフォルトの名無しさん:2005/03/26(土) 22:10:07
> 型が一目でわかるような変数名をつけるのが望ましい。

超久しぶりにモンゴリアン表記が思い浮かんだ。
279デフォルトの名無しさん:2005/03/26(土) 22:14:12
>>278
モ、モンゴリアン?prefもsufも付いてそうな・・・
280デフォルトの名無しさん:2005/03/26(土) 22:16:04
カーン
281デフォルトの名無しさん:2005/03/26(土) 22:19:19
テラワロス
282デフォルトの名無しさん:2005/03/26(土) 22:21:19
lpStrSz
283デフォルトの名無しさん:2005/03/26(土) 22:46:40
>>282
言えてる
284デフォルトの名無しさん:2005/03/27(日) 00:06:27
>271
本命は知らないが漏れはBeanShellがお気に入り。……誰も聞いてないねスミマセン
他はGroovyとか、Jakarta Commons Jellyとか、なんならJythonとかJRubyとか。
285デフォルトの名無しさん:2005/03/27(日) 00:19:08
lombozでサーブレットのソースを変更しても何にも反映されません

同じ症状の人いる?
286デフォルトの名無しさん:2005/03/27(日) 00:31:57
マルチには答えません
287デフォルトの名無しさん:2005/03/27(日) 00:38:03
>>286
答えないなられすするな
くそ
288デフォルトの名無しさん:2005/03/27(日) 00:58:57
Eclipseの日本語化キット(NLpack-eclipse-SDK-3.0.x-win32.zip)をDLして解凍したんだけど、解凍中にエラーが出る。
何回DownLoadを繰り返しても同じ結果。

どうして?
http://download.eclipse.org/eclipse/downloads/drops/L-3.0.1_Translations-200409161125/index.php
289288:2005/03/27(日) 01:05:55
 〇 eclipse\plugins\org.eclipse.update.ui.nl1_3.0.1\plugin_ja.properties - 正常に解凍されました。
 〇 eclipse\plugins\org.eclipse.update.ui.nl1_3.0.1\plugin_ko.properties - 正常に解凍されました。
 × eclipse\plugins\org.eclipse.update.ui.nl1_3.0.1\plugin_pt_BR.properties - アーカイブファイルが壊れている可能性があります。
 〇 eclipse\plugins\org.eclipse.update.ui.nl1_3.0.1\plugin_zh_CN.properties - 正常に解凍されました。
 × eclipse\plugins\org.eclipse.update.ui.nl1_3.0.1\plugin_zh_TW.properties - アーカイブファイルが壊れている可能性があります。
エラーが発生しています。
290デフォルトの名無しさん:2005/03/27(日) 01:13:15
>>288-289 キャッシュに残ってないって自信がもしあるのなら、
展開ツールのほう変えたら? jarで固めたzipファイルを展開できない
ツールは実在するみたいだし。もしくは自分でファイルを展開しないで、
http://graze.at.infoseek.co.jp/nlpack/site.xml をEclipseのアップ
デートサイトとして登録してEclipse自身に全部やらせるほうが楽か。
291デフォルトの名無しさん:2005/03/27(日) 01:13:47
>>287
プ
292デフォルトの名無しさん:2005/03/27(日) 01:19:32
>288
ダウソして、XPのエクスプローラ標準のZIP解凍で解凍したが特にエラー出なかったが。
ついでに7zipで検査してみたが問題なし。
ちなみにサイズは23,939,551バイト、MD5はD429011A50732034A5A56FE66B41452Fになった。
293デフォルトの名無しさん:2005/03/27(日) 02:14:21
>>289
それ、なんて解凍ツール使ってる?
昔俺もそのツール使ってた気がするけど、同様のエラーが頻発したんでやめた
294デフォルトの名無しさん:2005/03/27(日) 02:14:59
lhaplusです
295デフォルトの名無しさん:2005/03/27(日) 02:35:14
参照を渡して値を変化させたいのですが

class inc( object i ){ (int)i++ }

class main(){
int i=0;
inc( i );
}

こんな感じに出来ないのでしょうか?
これだと(int)iが変換できない型ですと怒られます
296デフォルトの名無しさん:2005/03/27(日) 02:43:20
>>295
> これだと(int)iが変換できない型ですと怒られます
それ以外にもいっぱいエラー出てる筈……

Javaには参照渡しは無い。配列使って参照の真似事するか、
インスタンス変数にする等して再構成するしか無いと思われ。
297デフォルトの名無しさん:2005/03/27(日) 03:23:04
>Javaには参照渡しは無い
はぁ?
298288:2005/03/27(日) 03:31:23
解凍レンジでチンしたら、うまく解凍できました。
どうもすいませんでした。
299デフォルトの名無しさん:2005/03/27(日) 03:50:10
>>297
お前こそはぁ?だ。
Javaに参照渡しはないって何度も過去スレでも出てる話題だろ。
300デフォルトの名無しさん:2005/03/27(日) 04:29:32
301デフォルトの名無しさん:2005/03/27(日) 04:30:24
>>297はSmith
302デフォルトの名無しさん:2005/03/27(日) 07:00:55
JDK1.4.2_07からJDK1.5に変更しようと思って
1.5のインストールを試みたけどインストール中に止まってしまってできなかった
(インストール中です、しばらくお待ちくださいの画面から切り替わらない)
誰か同じ経験した方いませんか? 
以前のバージョンが入ってる場合に1.5インストールする時
何か特別なことをする必要があるのでしょうか?
解る方いたら教えてください

とりあえず今はJRE1.5をインストール
bin等の実行ファイルが1.4、他が1.5という状況です
303デフォルトの名無しさん:2005/03/27(日) 11:19:16
パッケージ名は漏れが使ってるホスト名を逆転させて使うべしって事で

 package net.ch2.nanashi;
 public class Test {
  public static void main(String[] arg) {
   System.out.println("hello.");
  }
 }

ってなコード書いたのよ。で、コンパイルして実行してみたんだけど

 E:\>javac Test.java

 E:\>java Test
 Exception in thread "main" java.lang.NoClassDefFoundError: Test (wrong name: net/ch2/nanashi/Test)
   at java.lang.ClassLoader以下略

母さん、漏れは何を勘違いしていますか。
304303:2005/03/27(日) 11:27:45
('A`)ノ いや、ていうか、ごめん
ファイルを net\ch2\nanashi\ の中に置けば解決なんだ。
でも、みんなマジでそんな事やってんの?
305デフォルトの名無しさん:2005/03/27(日) 12:03:29
そだよ。何故そうなるかはあまり気にしないことだね。
パッケージの中身が充実してきたり、jarにしたりしだすとやめられなくなるよ。
面倒と思うのは今だけ。
306デフォルトの名無しさん:2005/03/27(日) 12:43:48
>>303
自分で作ったものを外部に公開するとか
外部で公開されているものをライブラリとして取り込む場合とかは
クラス名がかぶらないように「世界中で一意」にする必要があるから
パッケージ名をホスト名を逆転させて使うのが推奨されてるけど
適当なプログラムの場合は適当でもいいよ。
その代わり適当じゃないプログラムのときはしっかりしてくれよ。
307303:2005/03/27(日) 12:45:15
ありがとう。
漏れは今までに、いくつもの言語の、いくつもの理不尽さに慣れてきたさ。
母さん、漏れ強くなるよ。
308デフォルトの名無しさん:2005/03/27(日) 12:59:12
IPいらないからドメインだけで格安なとこ紹介して
309デフォルトの名無しさん:2005/03/27(日) 13:00:34
javac -d classes Test.java

少し慣れたらテキストエディタ+cmd.exeからは卒業した方がいい。
310デフォルトの名無しさん:2005/03/27(日) 23:34:34
java.io.IOExceptionでは対応する try 文の本体ではスローされません。
 }catch(IOException e){}
  ^

と出たのですが
InputStreamReaderとBufferedReaderは
IOExceptionでキャッチするんですよね?
311デフォルトの名無しさん:2005/03/27(日) 23:45:15
>>310
意味不明
312デフォルトの名無しさん:2005/03/28(月) 00:10:53
↓のエラーメッセージが出るんですが、メッセージの意味がよくわかりません。

test.java:81: シンボルを解決できません。
シンボル: メソッド readLine ()
場所 : java.io.InputStreamReader の クラス
strTmp = in.readLine();
^
313デフォルトの名無しさん:2005/03/28(月) 00:13:58
>>310
(=312?)
ブロックの書き方がおかしい。
314312:2005/03/28(月) 00:20:06
310じゃないです。
ブロックってのは「^」のことでしょうか。
in.readLine(); のカンマの下についてます。
315デフォルトの名無しさん:2005/03/28(月) 00:21:44
>>314
in.readLine(); のどこにカンマがあるというのか
316デフォルトの名無しさん:2005/03/28(月) 00:23:59
>>312
APIドキュメント嫁
317312:2005/03/28(月) 00:24:47
ピリオドですかね。
inのあとなんですが。
318デフォルトの名無しさん:2005/03/28(月) 00:30:55
@
 String aaa;
 aaa.method(para);

A
 String aaa;

 aaa=method(para);

@とAではaaaの値って同じですよね?
変数(aaa)にピリオドでメソッドを繋げた@のパターンと
メソッドの結果をaaaに代入するAのパターンの使い方の
違いってなにかあるのでしょうか?
319デフォルトの名無しさん:2005/03/28(月) 00:33:09
>>318
まず実行してみなさいよ
確実にエラー出るからさ
320デフォルトの名無しさん:2005/03/28(月) 00:40:35
クラス1 変数1;
上記のように変数1を宣言した場合、
変数1に代入できる値はどのような型になるのでしょうか?
上記の場合、クラス型の変数1となると思うのですが
具体的にどんな値を代入できるのかが分からないのです。
321デフォルトの名無しさん:2005/03/28(月) 00:43:59
>>320
クラス1のインスタンスかクラス1のサブクラスのインスタンスです
322デフォルトの名無しさん:2005/03/28(月) 00:48:48
うーん、インぬルエンザにかかったっぽい。
323デフォルトの名無しさん:2005/03/28(月) 00:49:26
>318
とりあえず、
>@とAではaaaの値って同じですよね?
と考えた根拠になる本があるんなら、今すぐ捨てて明日別な本買え。
@とAはまるっきり違う。
324初心者 ◆Java/isQ.c :2005/03/28(月) 00:49:50
>>312
|д・)つ ttp://java.sun.com/j2se/1.4.2/docs/api/java/io/InputStreamReader.html

java.io.InputStreamReader クラスには readLine なるメソッドはありませんが
325デフォルトの名無しさん:2005/03/28(月) 00:50:23
>322
ガッ校行く前に医者寄ってけ。
326312:2005/03/28(月) 00:58:24
自己解決できました。
327デフォルトの名無しさん:2005/03/28(月) 01:11:38
>>326
いろいろアドバイスされておきながら「自己解決できました」ですか
328デフォルトの名無しさん:2005/03/28(月) 01:37:15
>>320
プリミティブ(int等)については説明するまでもないと思うので
Object派生のものについて聞いてるのだと仮定

>クラス1 変数1;
であれば、「クラス1のインスタンス」を格納できる
それだけではなくクラス1からの派生クラスも格納可能
仮に全てのクラスの基底となる Object の変数を宣言すれば、
なんでも代入可能な変数になる
継承元の型に派生型を代入した場合、その変数はあくまでも継承元のクラス
でしかないので注意
Object x = new String(); として x.substring() はコンパイルエラーとなる
ただし、中身はちゃんと String なので x instanceof String は true となるし
((String)x).substring() とキャストして使用することは可能
329デフォルトの名無しさん:2005/03/28(月) 02:37:31
>>320
代入をどのようにとらえているかわからないが、
変数にオブジェクトを格納するとか思っているとすると理解の妨げになる。

変数とはオブジェクトを操作するためのリモコンだと思うといい。
変数の型はリモコンの種類。
代入はオブジェクトとそれを操作するためのリモコンである変数を結びつけること。
オブジェクトが主で変数が従だ。

当然ながらリモコンの操作に対応しているオブジェクトは結びつけられるが
対応してないオブジェクトは結びつけられない。
すなわち「ある型 X に代入できる=あるリモコン X で操作できる」というのは
「ある型 X のメソッドをすべて持つ」ことと思っていればよい。

Javaの場合、サブクラスはスーパクラスのメソッドをすべて持つし、
インタフェースを実装している場合はそのインタフェースのメソッドをすべて持つ。
なので class X extends Y implements Z とかであれば X 型のオブジェクトは
X 型の変数にも代入できるし、Y 型の変数にも代入できるし、
Z 型の変数にも代入できることになる。
330デフォルトの名無しさん:2005/03/28(月) 02:45:57
>>329
リモコンというのがよく分からないのですが・・・
クラス 変数;
と宣言した場合、変数にはクラスのインスタンスが入るのですよね?
つまり、そのクラスのフィールドとメソッドのコードが順番に
入ってるとの事でいいのでしょうか?
変数をアクセスする事によって、格納されてるいずれかのメンバに
アクセスできるから、それがリモコンという事なのでしょうか?
それなら分かります。




331デフォルトの名無しさん:2005/03/28(月) 03:12:19
「クラス 変数」としてもインスタンスはできないぞ。
インスタンス=オブジェクトの実体だからな。

クラス 変数 では、>>329でいうところのリモコンができるだけだ。
オブジェクト実体はあくまで「new クラス()」でできる。

クラス リモコン = new クラス()

これでクラスの実体ができて、実体を操作するためのリモコンと接続する。
代入が接続な。

ちなみにこのリモコンは「クラス」で指定したものと互換性のあるメーカー(クラス)の
オブジェクトとしか接続できない。

で、重要なポイントだが、Javaではリモコンを通してしかオブジェクトを操作できない。
332デフォルトの名無しさん:2005/03/28(月) 03:20:29
変数はリモコンで、そのリモコンを通してでしかオブジェクトを操作
できないと言われますが、僕が見たプログラムの中に
new Thread(xxx).start();
というのがありました。これはインスタンス(オブジェクト)の
メソッドを操作してるのですよね? つまりインスタンスを直接操作してます。
変数はそのオブジェクトが入ってる入れ物ですから、リモコンというのが
どうも分かりません。
正確にはそうでなくとも、変数=オブジェクトと見て実務上は
差し支えがなければ、そう取り合えず理解しても問題はないのでしょうか?
333デフォルトの名無しさん:2005/03/28(月) 03:22:12
ちなみに
 クラス 変数;
だけだと
 ・フィールド … null で初期化
 ・ローカル変数 … 初期化されない
  (そのまま使用するとコンパイルエラー)
となる
上で言われてる「接続」が行われてない状態
334デフォルトの名無しさん:2005/03/28(月) 03:26:05
「new hoge()」がリモコンを生成する操作で、それを変数に格納している

…これでどうや?
335デフォルトの名無しさん:2005/03/28(月) 03:28:01
現在の自分は、クラスはテンプレート(パッシブ)であり、変数は
そのクラスを実行可能(アクティブ)にしたインスタンスだと
考えてるのですが、そうじゃないのですか?
クラス 変数;
だと、変数はクラスのテンプレートそのもので、まだパッシブであり
インスタンスが注入(接続?)されてないので、実行不可能であり
new クラス() とするとクラスがインスタンス化されてアクティブに
なり、それを変数に接続(注入)する事によって実行できる(アクティブ)
になると見てるのですが。
リモコンというのが、どうしても理解できないのです。はっきり言えば
それをする必要性というか意味が分かりません。意味がないと思うのですが・・・
336デフォルトの名無しさん:2005/03/28(月) 03:30:10
何がわからないのかよく分からん。
337デフォルトの名無しさん:2005/03/28(月) 03:31:42
そのリモコンと使ってアクセスする必要など、全くないのでは?
という事です。
なぜ、必要ないのが存在してるのか? ということです。
338デフォルトの名無しさん:2005/03/28(月) 03:39:49
なんか混乱させてるみたいだな…

必要云々じゃなく、Javaはオブジェクトを参照で操作するんだ
ここでポインタとか言ってしまうと、他の人に怒られそうだけれども、
全部ポインタなんだよ

インスタンスの生成をすると、それは全く別のところに作られる
「new hoge()」の返り値はあくまでも参照であり、変数にもそれが格納されるだけ
339デフォルトの名無しさん:2005/03/28(月) 03:58:45
>>337
前スレの472の人ですか?
340デフォルトの名無しさん:2005/03/28(月) 04:12:43
>>338
え? new コンストラクタの返り値は、そのクラスのインスタンスの
はずですが・・・
参照はリモコンですよね? なんでコンストラクタからリモコンが
返ってくるのですか? 変数でリモコンを作成してるのに
またコンストラクタで同じのを生成するんですか?
341デフォルトの名無しさん:2005/03/28(月) 04:33:12
new コンストラクタの返り値は、そのクラスのインスタンスへの参照ですよ。
今まで出てきてる言葉で言えば、「参照」=「リモコン」=「ポインタ」ね。

コンストラクタはインスタンスを作成して、それに対するリモコンを返す。
(オブジェクト本体は重すぎてJavaたんには一切動かせない)
クラス名 変数名; はリモコン置き場を作ってるだけで、
リモコンはコンストラクタからもらったものを使う。
342デフォルトの名無しさん:2005/03/28(月) 04:34:35
>>340
じゃあ、たとえを出すのをやめよう。

new コンストラクタを実行すると、Javaヒープ上にオブジェクトインスタンスが
生成される。そして、オブジェクトインスタンスへの「参照」を返す。いいか、
きみはインスタンスを返すといっとるが、実際には参照を返す。インスタンスとは
Javaヒープ上にある実体。参照は、その実体にアクセスするためのポインタだ。

で、Javaではインスタンスの操作は参照を介してしか行なえない。

new Thread().start()は、(new Thread()).start()と分解できる。
まず「new Thread()」という式が解釈されて、結果としてThreadインスタンスへの
「参照」が返る。で、その参照に対し「.start()」という呼び出しが解釈される。

さてここで変数だ。「new Thread().start()」みたいに生成した瞬間にstart()を
呼んで終わり、なら変数なんていらんわな。でも、生成したインスタンスを
いろいろ使いたいなら、コンストラクタが返す参照をどっかに保持しとかないと
いけない。理由は、その参照がないと、インスタンスにアクセスする方法が
ないからだ。Javaにはインスタンスへのアクセス方法が「参照」しかない。

参照がなくてオブジェクトインスタンスしかない状態になると、そのインスタンスは
ガーベジ・コレクションの対象になる。要するに参照がなければゴミ扱いされて
破棄される。

で、その参照を保持しておく入れ物が「変数」。変数に代入する意味は、あとで
その参照を使ってインスタンスにアクセスするために、保持しておくためだ。

これでOKか?
343デフォルトの名無しさん:2005/03/28(月) 04:37:24
>>335
入れ物にパッシブもアクティブもない。
344デフォルトの名無しさん:2005/03/28(月) 08:48:10
>参照はリモコンですよね? なんでコンストラクタからリモコンが
>返ってくるのですか? 変数でリモコンを作成してるのに
>またコンストラクタで同じのを生成するんですか?

リモコンのたとえ(たとえは混乱のもとになるから乱用しない方がいいが)を使うと、
変数宣言だけした段階では("クラス 変数;")その新しいリモコンはどこも操作できない
ようになっている(null を"参照")。つぎに、"new クラス();"の段階でそのクラスの
インスタンスがつくられ、そのインスタンスのメソッドやpublicな変数を操作できる
ようにそのインスタンス用のリモコンとして先に宣言されたリモコンが返される、という
イメージはどうだろうか。
かえされたリモコンはいくらでもコピーして良いが、インスタンス
そのものがコピーされるわけではない。
345デフォルトの名無しさん:2005/03/28(月) 09:00:27
悪いことは言わんから「リモコン」のことは早く忘れろw
346デフォルトの名無しさん:2005/03/28(月) 09:41:29
>new コンストラクタの返り値は、そのクラスのインスタンスの
>はず
まぁ、並の解説から得られる認識としてはあってるかもね
 コンストラクタ=インスタンスの生成
であって、その返り値(定義されて無いでしょ?)がインスタンスそのものではない

public フィールド f (not static)をもつ Hoge クラスがあるとして
 Hoge hoge1 = new Hoge();  //インスタンス生成
 hoge1.f = 1;
このように使用したとする
で、これを別の変数に代入する
 Hoge hoge2 = hoge1
この時、hoge1.f は 1 なのはもちろん hoge2.f も 1 だよな?
ここで hoge1.f = 2 としたときの動作を考えると、変数の中身=インスタンスとするのは
無理があるのが理解できると思う
347デフォルトの名無しさん:2005/03/28(月) 09:54:42
乱数のシード値とは何ですか?
348デフォルトの名無しさん:2005/03/28(月) 09:57:51
種。
349デフォルトの名無しさん:2005/03/28(月) 10:06:06
>>347
乱数関数・クラスは実際は擬似乱数配列を走査(あるいは何らかのbit演算)をしているだけです。
ですからシード値を元にその配列をシャッフルしなければ、常に同じ配列が使われてしまいます。
シード値は一般に現在秒もしくは現在ミリ秒が使われ、Javaの場合は後者です。
350デフォルトの名無しさん:2005/03/28(月) 10:18:10
>>349
ありがとうございます。
351デフォルトの名無しさん:2005/03/28(月) 11:01:04
以下は勝手な乱数発生クラスですが、この中の private 変数 idum の初期値がシードですね。
public class Rnd {
private int idum;
static final int IA = 16807;
static final int IM = 2147483647;
static final int IQ = 127773;
static final int IR = 2836;
static final int MASK = 123459876;
static final double AM = 1.0/((double)IM);
Rnd(){
this.idum = (int)(System.currentTimeMillis() % 640000L);
}
Rnd(int n){
this.idum = n;
}
public final double rnd(){
this.idum ^= MASK;
int k = this.idum / IQ;
this.idum = IA*(this.idum - k*IQ) - IR*k;
if(this.idum < 0) {this.idum += IM;}
double ans = AM * this.idum;
this.idum ^= MASK;
return ans;
}
}
352デフォルトの名無しさん:2005/03/28(月) 14:53:39
現在実行中のJarファイルの絶対パスを取得したいのですがどうすればいいでしょうか?
かならずしもカレントディレクトリにあるとは限らないので…。
お知絵を拝借させてください。
353デフォルトの名無しさん:2005/03/28(月) 16:01:45
JFrameで作成したフォームから外部コマンドかなんかでIEを起動し、あるサイトを表示させたいのですが方法がわかりません。先輩方どうかご教示下さいませ。
354デフォルトの名無しさん:2005/03/28(月) 17:32:59
バイトストリームが本を読んだりしても全然分かりません。誰か助けて・・・
355デフォルトの名無しさん:2005/03/28(月) 17:41:39
>>354
質問の仕方も分かってないようだな。
がんばれ。
356デフォルトの名無しさん:2005/03/28(月) 17:43:01
>>355
本気で、>>354みたいな質問になってしまう程、意味がわからないんですよね・・・
とりあえず、がんばってみます
357デフォルトの名無しさん:2005/03/28(月) 17:46:07
>>356
バイトストリームって、ByteArrayInputStreamとByteArrayOutputStreamのことか?
358デフォルトの名無しさん:2005/03/28(月) 17:49:18
>>352
無理やりっぽいけど
URL url = Hoge.class.getResource("Hoge.class");
で、そのクラスファイルを含む jar のパス+ jar 内のパスが取得できた
クラスローダーに含まれて居ないと null となるので Hoge は jar 内のクラス
を指定する必要があるっぽい
よくわからんので補足plz

>>353
Runtime.exec() では無理?

>>354
それじゃただの愚痴やがな
359デフォルトの名無しさん:2005/03/28(月) 18:00:58
JavaにはCのsizeofみたいなのはないんでしょうか?
360デフォルトの名無しさん:2005/03/28(月) 18:03:14
>359
ない。
プリミティブ型のサイズは仕様(規格?)で決まっているぞ。
361デフォルトの名無しさん:2005/03/28(月) 18:08:44
インスタンスが何者なのかを調べたいってのなら instanceof
362デフォルトの名無しさん:2005/03/28(月) 18:10:57
>>359
なににつかいたいの?
配列とかのサイズ取得はそういうプロパティあるし
363デフォルトの名無しさん:2005/03/28(月) 19:46:08
String str = "hoge";
System.out.print(str);
str = null;

と書いた場合と

System.out.print("hoge");

と書いた場合とではどちらがGC効率がよいのでしょうか。
下の場合、確保されたメモリはいつ解放されますか?ここでしか使われないから即GC対象?
また、総合的に見て(速度・メモリ使用率等)どちらがよいですか?
364デフォルトの名無しさん:2005/03/28(月) 19:58:16
上でも下でも解放される時期は変わらない。
つうか、解放されないかもしれない。
コンパイル時に確定している文字列インスタンスの寿命なんて気にするだけ無駄。
365デフォルトの名無しさん:2005/03/28(月) 20:15:18
new MyThread().start();
とすると、このMyThreadクラスのインスタンスは
いつGCされてもおかしくない気がするのですが
実際には時間のかかる処理もちゃんと完了するのはなぜですか
366デフォルトの名無しさん:2005/03/28(月) 20:38:35
>>362
プロパティってなに?
367デフォルトの名無しさん:2005/03/28(月) 20:40:55
>>366
int a[] = new int[256];

for(int i=0;i<a.length;i++){
//なんか処理
}
368デフォルトの名無しさん:2005/03/28(月) 20:41:45
>>365
実際には名前のないローカル変数が自動的に定義されて、密かに使わているからだよ。
369デフォルトの名無しさん:2005/03/28(月) 20:42:20
>>365
this 参照が残ってるじゃないか
370デフォルトの名無しさん:2005/03/28(月) 20:45:51
>>367
lengthは配列を定義しているクラスのメンバ変数だよね。
プロパティってなに?
371デフォルトの名無しさん:2005/03/28(月) 20:55:12
Javaで「このインスタンスのプロパティが〜」とかいうと
だいたいメンバ変数と同義な気がするけど
厳密な意味はよくわかんね
372デフォルトの名無しさん:2005/03/28(月) 20:58:47
>Javaで「このインスタンスのプロパティが〜」とかいうと
>だいたいメンバ変数と同義な気がするけど
Javaの用語としては、フィールドと呼ぶのが正しい。
373デフォルトの名無しさん:2005/03/28(月) 21:11:58
じゃあローカル変数はJavaの用語ではなんていうの?
374デフォルトの名無しさん:2005/03/28(月) 21:14:44
375デフォルトの名無しさん:2005/03/28(月) 21:23:17
>>364
String str = getHoge();
System.out.print(str);
str = null;



System.out.print(getHoge());

だったらどうでしょう。かわんないか。
376デフォルトの名無しさん:2005/03/28(月) 21:34:00
Javadoc5.0のクラスの後にこんな(<?><T><E><K,V>)
のがついてますけどどんな意味ですかね?
ちょっと見当がつかないのですが・・・
377デフォルトの名無しさん:2005/03/28(月) 21:37:54
JDK5.0 の新機能と拡張機能をみれ
378デフォルトの名無しさん:2005/03/28(月) 21:40:09
>>377
有難うございます
とりあえずEが自クラスを表してるという事はわかりました
379デフォルトの名無しさん:2005/03/28(月) 21:48:21
size = io.readInt("arryのサイズをいれてください");
for(int i = 0; i<size; ++i)
{
arry1[i] = io.readString("arry1の値をいれてください");
arry2[i] = io.readString("arry2の値をいれてください");
}
というのをつくったのですがコンパイルして実行するとarry1の値を入れた後プログラムがとまってしまいます。
なぜなんでしょうか?
io.readはGUIの入力用です。
環境はネットビーンズ3.6です。
380デフォルトの名無しさん:2005/03/28(月) 21:52:58
止まってしまいますってのはフリーズを意味しているのか?
それとも Exception を吐いているのか?

上のソースが全てだとすると、配列の定義が怪しい
381376:2005/03/28(月) 22:00:46
>>377
見たけどわかりません
もう一つ絞って教えてください、お願いします
http://java.sun.com/j2se/1.5.0/ja/docs/ja/relnotes/features.html
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/javadoc/whatsnew-1.5.0.html
382デフォルトの名無しさん:2005/03/28(月) 22:02:44
実行してarry1の値を入れたあと落ちてしまいす(入力画面が消えてしまいます)。
そのあとにjava.lang.ArrayIndexOutOfBoundsException: 0とでてます。
383デフォルトの名無しさん:2005/03/28(月) 22:03:41
>>382は自分です。
>>380さんへのレスです。
384デフォルトの名無しさん:2005/03/28(月) 22:07:47
>>382
おいおい、答えでてるじゃないか
「指定したインデックス"0"は配列の領域を超えています」
ここまで説明してくれているんだぞ?
385デフォルトの名無しさん:2005/03/28(月) 22:11:17
>>384
それの意味が解らないんです。
どこの行かもでてるんです。
それでもなぜ間違ってるかわからないんです。
386デフォルトの名無しさん:2005/03/28(月) 22:17:56
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/ArrayIndexOutOfBoundsException.html
API そのものについてはは Javadoc で調べてくれ

で、arry1[i] = io.readString("arry1の値をいれてください"); が実行されるときの
arry1 のサイズはどうなってるのか考えてみなはれ
387デフォルトの名無しさん:2005/03/28(月) 22:19:12
>>384で理解できなければ日本人やめちまえってんです。
388376:2005/03/28(月) 23:03:38
僕にももう一つヒント下さい
389デフォルトの名無しさん:2005/03/28(月) 23:30:49
>>388
家の中にはありません
390デフォルトの名無しさん:2005/03/28(月) 23:41:21
あるメソッドがあり、その引き数をString[] にしなければならないのですが、
static final String aと"hogehoge"をくっつけたく、
String[] s = {a + "hogehoge"}; //このあとsを引き数としたメソッドを呼び出し
とするとJava.lang.Errorになってしまいました。どこが間違っていますか?
391デフォルトの名無しさん:2005/03/28(月) 23:46:17
本当に java.lang.Error が出たのか?
コンパイルエラー
392デフォルトの名無しさん:2005/03/29(火) 00:17:40
>>390
「くっつける」の意味が、二つの文字列をそれぞれ配列に突っ込みたい
(つまり要素が二つの配列を作りたい)ということなら、

String[] s = new String[]{a, "hogehoge"};

な。
393デフォルトの名無しさん:2005/03/29(火) 00:19:24
@class test{
A public static void main(string args[]){
B String s = "Test No!"
C String substring = s.substring(0,10);
・・・・

Bの行はオブジェクト参照変数sとのことなのですが
普通のint型とかの変数との違いは何なのでしょうか?
オブジェクト自体どこにも見当たらないのですが・・・。
394デフォルトの名無しさん:2005/03/29(火) 00:21:43
>393
実は
"Test No!"
がStringオブジェクトなのだよ明智君。
intとかのプリミティブ型と参照型の違いは少し上の方でいろいろかみ砕いて説明されてるから略。
395デフォルトの名無しさん:2005/03/29(火) 00:23:45
>>376
? なんでも
T タイプ
E エントリー
K キー
V バリュー

まあ適当な省略形で意味はない(?だけは文法的な意味があるけど)。
全部、利用時にパラメータで具体的な型を明示的に指定するまで
何の型か不明な汎用型「パラメータ化された型」を表してる。
396デフォルトの名無しさん:2005/03/29(火) 00:50:31
>>395
有難うございます
K,Vは何となくわかりました
でも他が・・・

例えば、ListインタフェースでE,?について考えてみたんですけど
ぽっくりわからない・・・

1.5
boolean add(E o)
boolean addAll(Collection<? extends E> c) 
boolean containsAll(Collection<?> c)
1.4
public boolean add(Object o)
public boolean addAll(Collection c)
public boolean containsAll(Collection c)

>全部、利用時にパラメータで具体的な型を明示的に指定するまで
何の型か不明な汎用型「パラメータ化された型」を表してる。

この二行バカにでもわかるようにもう少し詳しくお願いします
397デフォルトの名無しさん:2005/03/29(火) 00:56:40
>>394
Stringクラスだけは特別でStringで変数を宣言すれば
newしないのにオブジェクトができるということでしょうか?
398デフォルトの名無しさん:2005/03/29(火) 01:01:21
WEBアプリを開発しているものです。
文字化けについて質問します。

Tomcatを3.3.1aから4.1.31にバージョンアップしたのですが、"〜"文字を画面表示する際にが"!)"と化けてしまいます。
Tomcatのserver.xml,web.xmlの設定はインストール時デフォルトにアプリ用のコンテキストを追加しただけで
特に文字コード関連の設定は行っていません。問題なく表示されていたものが、バージョンアップにより文字化け
するようになる原因、またアドバイス等ございましたら、よろしくお願いします。

その他ミドルウェアも以下のように変更しています。

環境
RedHatLinux7.2
Tomcat3.3.1a→Tomcat4.1.31
Apache1.3.27→Apache1.3.31
jdk1.4.1_07→j2sdk1.4.2.07
399デフォルトの名無しさん:2005/03/29(火) 01:02:19
>>396
Stringしか入らないListをList<String>と書く。この場合E=String。
? は任意のクラスを、? extends E は E の任意のサブクラスを指す。

>>397
>Stringクラスだけは特別でStringで変数を宣言すれば
違います。宣言はあくまで宣言。
ダブルクォーテーションでくくった文字列リテラルが
Stringオブジェクトになるだけ。
400デフォルトの名無しさん:2005/03/29(火) 01:13:16
>>397
3.10.5 文字列リテラル
文字列リテラルは,常にString型(4.3.3)とする。文字列リテラルは,常にクラスStringの同一インスタンス(4.3.1)を参照する。

4.3.3 クラス String
文字列リテラル (3.10.5) は,クラス String のインスタンスを参照する。
文字列連結演算子 + (15.18.1) は,新しいオブジェクト String を暗黙のうちに生成する。

と仕様で決まっている。
401デフォルトの名無しさん:2005/03/29(火) 01:18:13
つまり"厳密には違う"が

String a = "abc";
はコンパイラが自動的に
String a = new String("abc");
に変換してると考えると理解が早いかもしれん
402デフォルトの名無しさん:2005/03/29(火) 01:22:47
class Hoge {
 public final void work() throws Exception {
  // 何か処理
 }
}

class Piyo extends Hoge {
 // いろいろと
}

Hoge obj = new Piyo();
try {
 obj.work();
} catch (Exception e) {
 e.printStackTrace(); // ※
}

この場合 ※ で出力されるスタックトレースにはPiyoが出てこないのですが
eから「これ、Hoge#work()で出た例外やけど実はインスタンスはPiyoやってん」
という情報を引っ張り出せないものでしょうか?
実際はPiyoの他にもう一つHogeのサブクラスを作っているのですが、work()で例外が出たとき
一体どっちのクラスのインスタンスから出た例外なのか分からなくて難渋してますorz
どなたかお知恵を貸して頂けないでしょうか?
403デフォルトの名無しさん:2005/03/29(火) 01:32:03
e.printStackTrace()にこだわらなければいいんじゃないでしょうか。
e.printStackTrace()の前でも後でも適当にSystem.err.println(obj.getClass())するとか。
404デフォルトの名無しさん:2005/03/29(火) 01:36:18
>>396
EとかTとかは、Listを作る時にパラメータとして指定するまで不定だってこと。
逆に言えば、EとかTは何にでもできる。
そして、あたかもEの部分がパラメータで指定した型であるかのように、型チェックが
行われる。

Listの「add(E o)」の E を指定するにはこうする。

List<String> list = new ArrayList<String>( 10);

これで、Eの部分が「String」になったListが出来る。<String>という形で、パラメータとして
型を渡すから、「パラメータ化された型」と呼ばれる。

で、1.4の add(Object o)は、Objectのサブクラスであればなんでも入る。Stringはもちろん、
MyClassだろうがLongだろうがなんでも入る。すべてのクラスはObjectのサブクラスだからな。

5.0の add( E o) の場合は、生成時に指定した型のオブジェクトしか入らない。上記例で
いえば、Stringオブジェクトしか入らない。もしLongとかを入れようとするとコンパイルエラーに
なる。

ポイントは、Eの部分は任意の型に変えられるってことだな。
パラメータで明示的に指定するまで型が不定とはそういうこと。
「なんだか分からんがプログラマが指定するだろう型 E を引数に取ります」という意味だ。

で、複数になると、Map<K, V>という風に指定するわけだ。このKとVが

add(K key, V value)

というふうに使えるというわけ。当然KとV はプログラマが指定するまで不定。
これでOKか?
405デフォルトの名無しさん:2005/03/29(火) 01:42:02
コレクションといえばJ2SE5なら-warnuncheckedオプション正直デフォにしてほしいねぇ
406デフォルトの名無しさん:2005/03/29(火) 01:53:21
コマンドライン引数を使ってhashtableに値を格納し、
それを取り出せるようなプログラムを作りたい。

keyとbalue共にコマンドラインから引数をhashtableに渡したいのですが、
Hashtable hashtable = new Hashtable();

for (int i = 0; i < args.length; i++){
// 値の格納
hashtable.put(args[i], ????);

}

????のところでvalueに値を格納したい訳ですが、
これをコマンドライン引数を使って値を格納する場合って
どのようにしたらよろしいのでしょうか?
407デフォルトの名無しさん:2005/03/29(火) 01:57:36
>403
ううむ、やっぱしException以外から情報を得るしかないですか。
tryブロックの中に、別クラスのインスタンスがあって、そのメソッドも同じException投げるんで
Exceptionから取れたらいいなー、と思ったのです。
(てか、具体的に書いてしまうとJDBCをラップした(ような)クラスをいくつか作ってて、
それを参照系と更新系に分けて共通部を抜き出したはいいが、どのメソッドも発生しうる
SQLExceptionをcatchせずthrowするようにしてるんで、catchしたところでは
「参照系」か「更新系」のどっちでエラーが生じたか、しか分からないという……お粗末orz)
408デフォルトの名無しさん:2005/03/29(火) 01:59:41
そのargs[i]は、public static void main( String[] args)のargsだと解釈しておくが、









args[i]がコマンドライン引数だと知っての上の質問か?
409デフォルトの名無しさん:2005/03/29(火) 02:00:54
>406
それはコマンドラインの解釈によるとしか。
順にkey value[ key value ...]と続くとしたら、

for (int i = 0; i < args.length; i += 2) {
// キーと値の格納
hashtable.put(args[i], args[i + 1];
}

とか。(ほんとはちゃんとargs.lengthが偶数個か? とかチェックすべきだろうけど)
410デフォルトの名無しさん:2005/03/29(火) 02:10:50
>>408
args[i]がコマンドライン引数だというのは分かってはいたのですが、
args[i]を使って、keyとvalueに引数を渡すのはどうしたらいいのかな、
と思った訳です。

>>409
なるほど、ちょっとそれでやってみます。
ありがとうございました。
411396:2005/03/29(火) 02:34:43
>>399>>404
レスどうもです。八割くらい理解できたと思います

それよりすいません、ちょっと根本的な勘違いをしてたかも
これって1.5になって新しく追加された機能の説明ですよね

List<String> list = new ArrayList<String>( 10);

これ見て始めて見たオブジェクト生成宣言なので気づきました
実は1.5の知識は全くありません。どうりでわからなかった訳だ
申し訳ございませんでしたm(__)m
412デフォルトの名無しさん:2005/03/29(火) 02:36:59
いままでどおりにやりたかったら<Object>をつければよろし
じゃないとデフォのままでも警告、warnuncheckedオプションでエラーがかえるしね
413デフォルトの名無しさん:2005/03/29(火) 02:42:03
>>398
Java 1.4.1あたりから、Windows31JとShift_JISが明確に区別されるようになった。

・ちゃんとヘッダにcontentTypeをいれて、charsetを指定する。
指定するコードは、サーブレットが吐き出す漢字にあわせる。自分がどの漢字コードで書いている
かしっかり意識しろ。Shift_JISとWindows31Jは違うコード体系だ。

・JSPなら、かならずPageディレクティブでcontentTypeとPageEncodingを指定する。
ちなみに指定しない場合はデフォルトで勝手に望みもしないコードになるから気をつけろ。

contentTypeがshift_jisなのに、実はJSPファイルをWindowsで作ってて、そのまま漢字直打ちしてたら
まず化ける。JSPがWindows31Jなのに、contentTypeにShift_JISと書いてあるのでブラウザが混乱する。
その場合はどっちもWindows31Jにしよう。

・実はWindows31Jでも(ちゃんとヘッダにcontentTypeの指定があれば)マックなんかでもちゃんと表示される。

・めんどくさくなったら、ありとあらゆるファイルの内部文字コード、各種エンコード指定をすべてUTF8にする。
414413:2005/03/29(火) 02:45:30
>>398
すまん1.4.1使ってたんだな。じゃあ別の理由のような気がする。
でもエンコード指定周りをきっちり設定して試してみた方がいいと思う。
415403:2005/03/29(火) 02:57:58
>>407
>tryブロックの中に、別クラスのインスタンスがあって、そのメソッドも同じException投げるんで
>Exceptionから取れたらいいなー、と思ったのです。

必要な情報をもった例外クラスを投げればいいんじゃないでしょうか。
403では言わなかったがそもそもExceptionそのものをthrowしたり
Exceptionで全部の例外をcatchしたりするのはよくないよ。
416デフォルトの名無しさん:2005/03/29(火) 03:05:29
>>412
見当違いな勘違いしてたというのに・・・フォローまでしてくれるなんて
本当に有難うございました
417デフォルトの名無しさん:2005/03/29(火) 08:47:30
この前、アプレットのゲームを公開したのですが、PCの環境によって、プレイ出来る人と、灰色の画面で止まってプレイ出来ない人がいます。
もちろんブラウザの「javaをオン」にするように書いておきましたが。
マイクロソフトVMでも大丈夫なように -target 1.1でコンパイルしました。それでも互換性のない場合はあるのでしょうか?
また、プレイできないという人に話を聞くと、他のアプレットは動作するのに、このゲームはプレイできない、ということです。
思い当たる原因がないのですが、まずどう対処すればよいかわかりません(;_;)
418デフォルトの名無しさん:2005/03/29(火) 08:53:55
Java Pluginを使い、Sun 謹製のJavaをインストールさせれば解決する。
ttp://java.sun.com/j2se/1.4/ja/docs/ja/guide/plugin/developer_guide/contents.html
419デフォルトの名無しさん:2005/03/29(火) 10:05:44
>>417
MSのVMなんて捨てさせてやるのが世のため人のため。
420デフォルトの名無しさん:2005/03/29(火) 10:16:57
構成環境の変更を安易に進める人達ってさ
421デフォルトの名無しさん:2005/03/29(火) 10:22:08
企業の情報部門じゃないから問題ない
422デフォルトの名無しさん:2005/03/29(火) 11:21:01
>>392
質問者からのレスがないので分からんが、
StringBuffer#append な事がやりたいのではないかな、とも推測してみる

>>390
くっつけるの意味は、例えば"type" と "writer" をくっつけて
"typewriter" って文字列を作りたい、
って事なのか?ちなみに>>392は全くもって正しい操作だが、
"typewriter"って文字列が出来るわけではないぞ

文字列と文字列型配列が混同してない事を祈る
423デフォルトの名無しさん:2005/03/29(火) 13:08:07
質問です。
データモデルクラス(DataModel)があって、それを配列で
インスタンス化して使っていきたいのですが、
データをセットするsetStr("あいうえお")にて
java.lang.NullPointerExceptionエラーがでてしまいます。
(コンパイルエラーはでません)どなたかご教授ください。
public class HairetsuTest {
public static void main(String[] args) {
DataModel[] dm001 = new DataModel[2];
dm001[0].setStr("あいうえお");
String abc = dm001[0].getStr();
System.out.println(abc);
}
}
424デフォルトの名無しさん:2005/03/29(火) 13:11:18
>>423
public class HairetsuTest {
public static void main(String[] args) {
DataModel[] dm001 = new DataModel[2];

for( int i =0; i < dm001.length; i++ ) {
dm001[i] = new DataModel();
}

dm001[0].setStr("あいうえお");
String abc = dm001[0].getStr();
System.out.println(abc);
}
}
425デフォルトの名無しさん:2005/03/29(火) 13:13:50
>DataModel[] dm001 = new DataModel[2];
配列をつくってるだけであってインスタンスの生成ではない
この時点では{ null , null } の状態
426デフォルトの名無しさん:2005/03/29(火) 13:44:16
>>423
わかんなかったらよーく考えてみ、キミがやろうとしてる事は
int[] ary = new int[10];
int x = ary[3];
と同じだよ。

普通は
int[] ary = new int[10];
for(int i = 0 ; i < ary.length ; i++){
ary[i] = i; // 配列の初期化(値は今はテキトー)
}
int x = ary[3];
って初期化してから使うだろ?

これのプリミティブ型が参照型に変わっただけ
ただ参照型の場合は、最初の配列の生成で使うnewが、
インスタンス生成のnewとダブって見えて
あたかも既にnewでインスタンスを生成したように勘違いしてしまう、
それだけなんだよ

つーか、俺が昔そうだった... orz
427デフォルトの名無しさん:2005/03/29(火) 14:08:29
int[] ary = new int[] {0,0,0,0,0,0,0,0,0,0}
428390:2005/03/29(火) 14:15:59
>>391
携帯Javaのエミュレータだったのと関係があるのかもしれません
>>392 >>422
大変参考になりました。何かどんでもないところで勘違いしていたようでした。
String[] entry = {"http://〜〜〜/cgi-bin/"};
String[] s = new String[] {entry[0] + "?com=1"};
でメソッドにsを入れるとうまくいきました。これからStringBufferを使って効率化しようと思います。ありがとうございました。
429デフォルトの名無しさん:2005/03/29(火) 14:16:24
つ Arrays.fill()
使わんがなぁ

ふと思ったんだけれども fill(Object[] a, Object val) って、いつ使うんだろう…
一つのインスタンスへの参照を任意の数作りたい時?
いい使い道があれば教えてくだされ
430デフォルトの名無しさん:2005/03/29(火) 14:18:08
>>427が何をいいたいのかさっぱりわからん
431423:2005/03/29(火) 14:23:28
>>424 >>425 >>426 >>427 様 ありがとうございました。

解決しました。勉強になります。m(_ _)m
432デフォルトの名無しさん:2005/03/29(火) 14:25:19
「 new int[] {0,0,0,0,0,0,0,0,0,0} 」 = 「 new int[10] 」
と言いたかったのではないかと解釈
433デフォルトの名無しさん:2005/03/29(火) 14:33:21
お世話になります。
アプレットのコントロールからブラウザの画面を遷移させることは
可能でしょうか?
434433:2005/03/29(火) 14:43:22
433です。AppletContextクラスのshowDocument(URL)を使用するようです。
スレ汚し申し訳ございません。
435デフォルトの名無しさん:2005/03/29(火) 15:12:01
int[] arr = new int[] {0,0,0,0,0,0,0,0,0,0};
はシンタックスにかなう初期化となる。
436デフォルトの名無しさん:2005/03/29(火) 15:15:31
用語について質問です

デフォルトコンストラクタと言うのはJavaの中の人が作ったコンストラクタ
だと思うのですが、Javaの解説サイトによっては引数なしコンストラクタの
事を指している場合もあるようです
デフォルトコンストラクタは間違いなく引数なしコンストラクタだと思いますが
引数なしコンストラクタがデフォルトコンストラクタとは限りませんよね?
私の解釈がおかしいのでしょうか?
437デフォルトの名無しさん:2005/03/29(火) 15:26:02
>>436

それで合ってると思うよ。
ただ、引数なしコンストラクタを記述して
それがデフォルトじゃない場合というのがあまり想像できない。
438デフォルトの名無しさん:2005/03/29(火) 15:28:16
で、あってると思う

考えてみるとデフォルトコンストラクタって呼び方がおかしい気がしてきた
単にコンストラクタのオーバーライドをしていないから継承元のコンストラクタが使用される
だけで、勝手にコンストラクタが作られてるわけじゃないよな?
引数なしコンストラクタだってObject()ってだけだし
ただ、コンストラクタは一つでもオーバーライドするとそれ以外は全部隠蔽されるってのが
メソッドと違うところか
439デフォルトの名無しさん:2005/03/29(火) 15:34:58
>>438
勝手にコンストラクタが作られているのですよ。コンストラクタは継承されません。
440デフォルトの名無しさん:2005/03/29(火) 15:37:05
コンストラクターとしてとくにクラスファイルに記述しなくても、スーパークラスのコンストラクター
が引数なしのコンストラクターをもっている限り(普通だが)、引数なしで new すればそのコンストラクター
が呼ばれるわけだから、それはデフォルトのコンストラクターと言って良いのでは..
441デフォルトの名無しさん:2005/03/29(火) 15:39:08
>>438
> 単にコンストラクタのオーバーライドをしていないから継承元のコンストラクタが使用される
> だけで、勝手にコンストラクタが作られてるわけじゃないよな?

私は、「勝手に作られている」と考えたほうが分かりやすいような気がするけど・・・。

> ただ、コンストラクタは一つでもオーバーライドするとそれ以外は全部隠蔽されるってのが

コンストラクタはオーバーライドできないです。

あと、「隠蔽」って言葉も、なんか違うような気がする。
存在するけど、今は見えないとか、存在するけど、アクセスするにはレシーバを明記しなきゃならん
ってときに隠蔽って使うんじゃないかな。
442デフォルトの名無しさん:2005/03/29(火) 15:42:35
>>437 >>438
レスありがとうございます

前に何かで Class#newInstance はデフォルトコンストラクタを呼ぶ
とか書いてあるのを見て、ハァ? だったんですが
間違ってなかったんですね、ありがとうございました

でも引数なしコンストラクタを「デフォルト」であると
いうのも分からないでもないですが、、、
やっぱり呼び方に違和感を感じてるのは私だけではなかったようで

443438:2005/03/29(火) 15:46:30
すまん、今実験してて間違いに気づいた

 引数なしのコンストラクタ = デフォルトコンストラクタ
であって、特殊なものなんだな(明示的な実装の有無にかかわらず)

コンストラクタを持たないクラスは存在しないので、実装されていない場合は
デフォルトコンストラクタが補完される
439 の通りコンストラクタは継承されないのでコンストラクタを作らずにクラスを
実装するとデフォルトコンストラクタのみとなるわけだ

ただし例外がある
デフォルトコンストラクタを持たないクラスを継承してクラスを作った場合は、
継承先にデフォルトコンストラクタは生成されない
(なんらかのコンストラクタを作らないとコンパイルエラー)

で、OKでしょうか?
444438:2005/03/29(火) 15:50:49
突っ込まれまくり o...rz
精進します
445436=442:2005/03/29(火) 15:53:04
>引数なしのコンストラクタ = デフォルトコンストラクタ
え?
446デフォルトの名無しさん:2005/03/29(火) 15:54:59
>デフォルトコンストラクタと言うのはJavaの中の人が作ったコンストラクタ
>だと思うのですが

根拠は?
447デフォルトの名無しさん:2005/03/29(火) 15:57:37
>>443
>  引数なしのコンストラクタ = デフォルトコンストラクタであって、

厳密には、ちがうんじゃ・・・。
クラスがコンストラクタ宣言を含んでいなければ,実引数を取らないコンストラクタが
コンパイラによって自動的に提供される。これが「デフォルトコンストラクタ」。

デフォルトコンストラクタと同じように、実引数を取らないコンストラクタを
自分で書いたら、それはデフォルトコンストラクタとは言わない。

コンパイラが自動的に提供するのが、デフォルトコンストラクタ。

> コンストラクタを持たないクラスは存在しないので、実装されていない場合は
> デフォルトコンストラクタが補完される

順番が逆では?
「コンストラクタが一つも実装されていない場合はデフォルトコンストラクタが補完される」
ので、
「コンストラクタを持たないクラスは存在しない」

> デフォルトコンストラクタを持たないクラスを継承してクラスを作った場合は、
> 継承先にデフォルトコンストラクタは生成されない

違う。以下反例。
クラス Foo はデフォルトコンストラクタを持たないが、クラス Test にはデフォルトコンストラクタが生成される。
  class Foo {
    public Foo() {
    }
  }
  class Test extends Foo {
  }
448436=442:2005/03/29(火) 15:58:05
>>446
えと、言語規定の8.6.7です
449デフォルトの名無しさん:2005/03/29(火) 16:00:04
>>447が言うのと違うけど。

勝手に作られたものだけを「デフォルト」と決めなくてもいいんでは?
勝手に作られる代わりに、自分で作ったのもデフォルトコンストラクタ。(だと思ってる)
 コンストラクタなし⇒コンパイラが勝手に作ったデフォルトコンストラクタ
 引数なしコンストラクタ⇒自分で作ったデフォルトコンストラクタ
だから、デフォルトコンストラクタ=引数なしコンストラクタとしても、良いと思う。
450デフォルトの名無しさん:2005/03/29(火) 16:03:01
デフォルトのコンストラクターとは、コンストラクターが宣言されていないため、コンパイラーに
よって提供される

Object() {}

の形の何も実行せずそのまま制御をかえすコンストラクターのこと。
451デフォルトの名無しさん:2005/03/29(火) 16:05:29
>>448
>言語規定の8.6.7
言語規定って何ですか?
452デフォルトの名無しさん:2005/03/29(火) 16:07:02
正直、デフォルトコンストラクタなんて何だっていい。
議論するだけ時間とスレの無駄。
453デフォルトの名無しさん:2005/03/29(火) 16:07:25
454デフォルトの名無しさん:2005/03/29(火) 16:14:09
デフォルトコンストラクタとは

コンパイラがによって自動で生成提供してくれる引数なしのコンストラクタ

だと思うぞ。

>>449
自分で作った時点でそれはすでに厳密な意味ではデフォルトではないと思う。
自分で作ったものをデフォルトとして扱う、ってだけじゃないかな。
455デフォルトの名無しさん:2005/03/29(火) 16:14:38
>>453

"宣言しているクラスが,ルートクラスであるクラス Object ならば,デフォルトコンストラクタは,空の本体をもつ。
そうでなければ,デフォルトコンストラクタは,実引数を取らず,実引数をもたないスーパクラスのコンストラクタ
を単に呼び出す"

..ということですね。
456デフォルトの名無しさん:2005/03/29(火) 16:17:26
>>449
まあ、そういう「自分用語」を自分でだけ使ってる分には問題ないけど、
他人と話すときはまずいと思うよ。

例えば、Java 言語規定の「8.8.7 デフォルトコンストラクタ」に出てくる

  「デフォルトコンストラクタは,throws節をもたない。」

っていう記述。>>449 の意味でいくと、間違ってるってことになっちゃう。

自分用語の「デフォルトコンストラクタ」と、言語規定で使われている
「デフォルトコンストラクタ」っていう用語を、区別する必要が出てくる。

「今ここで私が使うデフォルトコンストラクタっていう用語は、言語規定で
言われている同名の用語とは別の用語である。私が使うデフォルトコン
ストラクタという用語の意味は、言語規定の同名の用語が指すものに加え、
プログラマが宣言した引数を取らないコンストラクタも含むとする。」

って、いちいち前置きしてくれるなら、文句は無い。
(私なら、「引数をとらないコンストラクタ。」って呼ぶどな。)
457デフォルトの名無しさん:2005/03/29(火) 16:28:48
Javaより先にC++を知っていると、混同しがちだ。
C++の用語のデフォルトコンストラクタは、まさに引数を取らないコンストラクタだ。
458デフォルトの名無しさん:2005/03/29(火) 16:32:08
言葉の詮索も好いですが、実際に動くプログラムを書きましょう..
459デフォルトの名無しさん:2005/03/29(火) 16:43:24
PreparedStatementに関する質問よろしいでしょうか?
SQLの?にあたる部分に、値をセットしますがセットした後のSQL文を確認したいのです.
pStmtに何が入っているかわからないので、エラー、バグの検出に時間がかかってしまいます。

String strsql = "insert into catalog (id , name) values ( ? , ?)";
PreparedStatement pStmt = null;
String strsql = null;
pStmt = con.prepareStatement(strsql);
pStmt.setInt(1, 1000);
pStmt.setString(2, "てすと");
//ココでpStmtの内容をチェックしたいのです。ココでは下記内容。
//insert into catalog (id , name) values ( 1000 , "てすと");
//バッチ登録
pStmt.addBatch();
//バッチの実行
pStmt.executeBatch();
pStmt.close();
よろしくおねがいします。
460デフォルトの名無しさん:2005/03/29(火) 16:49:05
>String strsql = "insert into catalog (id , name) values ( ? , ?)";
>PreparedStatement pStmt = null;
>String strsql = null;

何故コンパイルエラーにならないかわからない

461438:2005/03/29(火) 16:55:18
引っ張ってすまないが、これで最後

「引数無し&throws節無しのコンストラクタがデフォルトコンストラクタとして見なされる」
と結論を出したのは、以下が根拠
(throws > 前述では考慮してなかった スマン)

コンストラクタ無しのクラスを作った場合、継承元のデフォルトコンストラクタが使用される
このとき、継承元にデフォルトコンストラクタが定義されていない場合はコンパイルエラーとなる
これを判断基準に親クラスのコンストラクタをいろいろ作ってみたところ
 ・コンストラクタ無し (コンパイラ側で引数無しのコンストラクタが生成された)
 ・引数無し&throws節無しのコンストラクタを実装
の場合のみOKであった
462459:2005/03/29(火) 16:57:39
>>460
申し訳ないです。
String strsql = null;は必要ありませんでした...

String strsql = "insert into catalog (id , name) values ( ? , ?)";
PreparedStatement pStmt = null;
pStmt = con.prepareStatement(strsql);
pStmt.setInt(1, 1000);
pStmt.setString(2, "てすと");
//ココでpStmtの内容をチェックしたいのです。ココでは下記内容。
//insert into catalog (id , name) values ( 1000 , "てすと");
pStmt.addBatch();
pStmt.executeBatch();
pStmt.close();
463デフォルトの名無しさん:2005/03/29(火) 17:02:38
>>459
デバッガで無理やり中を覗いたことはあるけれども
PreparedStatementから直接取得はできなかった記憶がある
独自拡張するかログの出し方を工夫するしかないと思う

そもそも PreparedStatement は、DBで先にパラメータ化したSQLの解析を
行うわけだからSQLとして取得というのは原理的に不可能
(?部分を文字列的に置き換えて実行しているわけではない)
464デフォルトの名無しさん:2005/03/29(火) 17:06:18
?を順番に値で置き換えて自分でログをはけばいい
465デフォルトの名無しさん:2005/03/29(火) 17:08:54
>461
おまいは、ゴスリンよりもビル・ジョイよりもガイ・スティールよりも偉いというのか?
466デフォルトの名無しさん:2005/03/29(火) 17:26:48
すいません。
質問ですが、

http://www.techscore.com/tech/Java/Utility/1.html
上記のサイトにおいて、

String a=new String("test");
String b=new String("test");
このaとbは異なるインスタンスらしいですが、

String a="test";
String c="te"+"st";
このaとcが同じインスタンスとなる理由がわかりません。

なお、課題の
http://www.techscore.com/tech/Java/Utility/answer/1-3.html
をビルドした結果
0:2
equals:true
== :true
という結果が出ました。
467デフォルトの名無しさん:2005/03/29(火) 17:33:34
>>466
コンパイル時に最適化されるから。
468449:2005/03/29(火) 17:35:19
>>456
そこまで、言われると反論できん。
俺は>>449の解釈がが自分用語とは思わず、
言語既定で言われているデフォルトコンストラクタが、それだと思っていただけです。
「自分用語」押し付けるつもりはなかったです。ゴメン
469466:2005/03/29(火) 17:44:03
>>467
ということは、
aとcは同じオブジェクトであるということでしょうか?

つまり、aを変更すればcの内容も変わるということですか?
470デフォルトの名無しさん:2005/03/29(火) 17:51:59
>>469
まあそうなんだが、Stringはimmutableなクラスなので変更不可能
471デフォルトの名無しさん:2005/03/29(火) 17:52:20
>>469
同じオブジェクト。
aをへんこうするというのは、aの参照先を変えるだけ。
もともとaが指し示していたStringオブジェクトの中身は変えられない。
472466:2005/03/29(火) 17:55:11
>>470
>>471
よくわかりました。
即答いただき、ありがとうございました。
473459:2005/03/29(火) 18:22:27
>463 >464
ありがとうございました。独自で関数をつくって出力してみます。
474デフォルトの名無しさん:2005/03/29(火) 19:59:22 ID:
コレクションクラスは、似たようなものが多すぎて
何に違いがあるのかを明確に捉えることが難しいですね。

コレクションについて解りやすく説明されてるサイトをご存知な方いらっしゃいますか?
475デフォルトの名無しさん:2005/03/29(火) 20:06:11 ID:
Linuxでjavaアプリを動かしてます。
PostgreSQLサーバとそのjavaアプリを同一マシンで動かしてます。
そのjavaアプリはPostgreSQLサーバに接続し、SELECT, UPDATE, DELETE...等を行います。
そのjavaアプリを作った人は前任者で、今は私が担当になってます(javaは良く知らない)。

そこで基本的な事をお聞きしたいのです。

1.JDBCはPostgreSQLサーバへの接続にIPv4+TCP or IPv6+TCPといった方法でしか接続出来
ないのでしょうか?UNIXソケットとかはありえないのでしょうか?

2.Jdbc3PoolingDataSourceのdataSourceNameとは何なのでしょうか?
ODBCのデータソースの様な物なのでしょうか?
(私は違う様な気がしています。JDBCの持つプールという物に関する特殊な物と思っていま
す)

3.以下の様な感じで既存のコードは動いていました。
----------
Jdbc3PoolingDataSource source = new Jdbc3PoolingDataSource();
source.setServerName("127.0.0.1"); // 若しくはIPv6アドレスが入る。
source.setDatabaseName("test");
source.setUser("testuser");
source.setPassword("testpassword");
Connection con = source.getConnection();
----------
↑この様に、データソースという項目を無視しているのですが、それは問題無いのでしょ
うか?

4.現場のお客さんから「PostgreSQLサーバ設定をTCPコネクションを不可能にした状態でも
、このアプリが正常に動いたよ」と言われたのですが、それは本当なのでしょうか?私は
「有り得ないんじゃないか?お客さんの勘違いなんじゃないか?」と思っているのですが。
実は設定ファイルを書き換えた後にサーバの再起動をしていないとか…。
476475: 1.と4.を解決しました:2005/03/29(火) 20:15:40 ID:
http://www.postgresql.jp/document/pg734doc/programmer/jdbc.html#JDBC-SETUP

5.1.3. JDBC のためのデータベースの準備
Java は TCP/IP 接続しか使用しませんので、PostgreSQL サーバは TCP/IP 接続を受け入れるように構成しなければなりません。 この構成は postgresql.conf ファイルで tcpip_socket = true と設定するか、postmaster の起動時に -i オプションを与えることで可能になります。

また、pg_hba.conf ファイルによるクライアント認証の設定が必要かもしれません。 詳細は 管理者用ガイド を参照してください。JDBC ドライバは、trust、ident、password、md5、crypt の認証方法をサポートします。
477デフォルトの名無しさん:2005/03/29(火) 20:24:43
>>474
http://www.objectclub.jp/technicaldoc/java/jdk

最近Javaコレクションフレームワークのみを扱った本も出たので
アマゾンも覗いてみれ。
478474:2005/03/29(火) 20:26:51
>>474
ありがとうございます。
479474:2005/03/29(火) 20:27:09
>>477
ありがとうございます。
480デフォルトの名無しさん:2005/03/29(火) 21:04:18
List,Map,Set,Queueが基本

これらの実装としてなんちゃらListとかあるわけだ

LinkedListはQueueインターフェースも実装しているので
多少ややこしいかもしれない

俺の使用頻度としてはList>Queue=Map>Setってあたりか
正直Queueは便利な実装が多くて予想以上に便利だった
481デフォルトの名無しさん:2005/03/29(火) 22:03:47
Swingプログラミングで、既存のクラスを継承してあれやこれやする事がありますが、
NetBeansでGUIデザインしてそのワザを使うにはどうすればいいんでしょうか?
JPanelを継承して描画するように死体けど、JPanel貼っ付けてもextendsとか書けんし
482デフォルトの名無しさん:2005/03/29(火) 22:32:03
>>475
ノTorque
483デフォルトの名無しさん:2005/03/29(火) 23:30:12
>482
今さらTorqueは無いだろう。
484デフォルトの名無しさん:2005/03/29(火) 23:41:37
質問です。
「Mar 10 10:11:12」(3月10日10時11分12秒)
↑の文字列を日付型に変換して、「yyyy/MM/dd hh:mm:nn」形式に変換したいのですが、
どうやったらいいのでしょうか?

月の略字を数字の月に変換したいのです。
イマイチやり方がわかりません。
485デフォルトの名無しさん:2005/03/29(火) 23:50:57
つ SimpleDateFormat
486デフォルトの名無しさん:2005/03/29(火) 23:55:15
質問です、お願いします
StringのtoStringメソッドってどんな意味があるんですか?
いや、JavaDoc読んでこのオブジェクト自身を返すというのは解かります
それなら、下の例*1じゃなくて*2でもいいですよね
今読んでる参考書で文字列の比較するのに*1の方法を取ってるんですけど
何かメリットがあるんでしょうか?

String valhoge1="hoge1",valhoge2="hoge2";

*1
if ("hoge1".toString().equals(valhoge1)) {
System.out.println("hoge1=valhoge1");
} else if("hoge1".toString().equals(valhoge2)) {
System.out.println("hoge1=valhoge2");
}
*2
if ("hoge1".equals(valhoge1)) {
System.out.println("hoge1=valhoge1");
} else if("hoge1".equals(valhoge2)) {
System.out.println("hoge1=valhoge2");
}

487デフォルトの名無しさん:2005/03/29(火) 23:55:55
つーか普通にやればいい

日付文字列の取得はScannerで取り込め
でも年はどーするんだ

出力は
Date date = ・・・
String data = String.format("%1$tY/%1$tm/%1$td %1$tH:%1$tM:%1$tS",date);
とか
488デフォルトの名無しさん:2005/03/29(火) 23:59:50
DateFormat from = new SimpleDateFormat("MMM dd hh:mm:ss", Locale.ENGLISH);
DateFormat to = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss");

Date date = from.parse("Mar 10 10:11:12");
//Calendar cal = Calendar.getInstance();
//cal.setTime(date);
//cal.set(Calendar.YEAR, 2005);
//date = cal.getTime();
System.out.println(to.format(date));

今年の日付にしたかったらコメントアウトした部分も必要。
489デフォルトの名無しさん:2005/03/30(水) 00:09:03
>>486
普通*2のやり方で書く。
通常、*1にメリットはない。
結局hashCode()を比較しているわけだし。
490デフォルトの名無しさん:2005/03/30(水) 00:22:05
>>489
hashCode をよくわかってないのがバレたね。w

hashCode は int 値なので、任意の異なる文字列を持つ2つの
String のインスタンスについて、必ず異なる hashCode を算出できるはずが無いでしょ?
491デフォルトの名無しさん:2005/03/30(水) 00:25:22
@オブジェクト.メソッド()
A変数=オブジェクト.メソッド()

@のオブジェクトに対するメソッドを実行し、その結果をオブジェクト内に格納する方法と
Aのオブジェクトに対するメソッドを実行し、その結果を変数内に格納する方法では
使い方の違いはあるのでしょうか?
492デフォルトの名無しさん:2005/03/30(水) 00:28:01
>491
すごくデジャブを感じるのだが、@とAのオブジェクトとメソッドが全く同じだと仮定して
>@のオブジェクトに対するメソッドを実行し、その結果をオブジェクト内に格納する方法と
いや、@は「その結果をオブジェクト内に格納」してないから。結果をどこにも格納してないだけ。
493デフォルトの名無しさん:2005/03/30(水) 00:53:29
>>492
多分
オブジェクト.メソッド()
とすることで、元のオブジェクトに変化が起きている
ということを言いたいのではないだろうか、

どっちにしろ自分が聞きたいことをロクに書けないような奴が
書いていることだからあてにはならんけど
494デフォルトの名無しさん:2005/03/30(水) 00:54:48
System.err.println("data");
System.out.println("data");

誰かこの二行の教えてください・・・
どんな標準出力かコード見てすぐにわかるってだけですか?
495494:2005/03/30(水) 00:55:29
×誰かこの二行の教えてください・・・
○誰かこの二行の違いを教えてください・・・
496デフォルトの名無しさん:2005/03/30(水) 01:12:21
標準出力と標準エラー出力は意味合いが全然が違うだろ。
それの違いがわからないというのであればJava以前の質問なので初心者板でも行け。
497デフォルトの名無しさん:2005/03/30(水) 01:18:47
今となってはどっちでもたいした違いがない気もするが
498デフォルトの名無しさん:2005/03/30(水) 01:27:56
>>494
System.outとSystem.errは出力先として全然違う。二つのファイルが違うということと
同じくらい違う。

UNIX系OSの標準出力と標準エラー出力は、通常はどちらもコンソールに繋がってる
ので同じに見える。けど繋がってる先を簡単に変える事ができるから分けてる意味がある。

もし標準出力(System.out)の接続先がファイルに変更されたとしても、System.errに
吐き出したエラーメッセージは、ちゃんとコンソールに出力される。
499494:2005/03/30(水) 01:42:40
>>496-498
レスどうもです

>標準出力と標準エラー出力は意味合いが全然が違うだろ。
そうなんですか、プログラミング全般の基礎知識だとは知りませんでした
まだ、javaしかプログラミングの勉強してないんでjavaの質問だと思ってました

標準出力、標準エラー出力でググッて見たら確かにたくさんありますね
勉強してきます、失礼しました
500デフォルトの名無しさん:2005/03/30(水) 10:43:12
参考書でAppletクラスのrepaint()を呼び出すと
update()が呼び出されて、コンポーネントを背景色で塗りつぶして、paint()を呼ぶって書いてあるんだけど
実際にやったら、背景が塗りつぶされないのですが、何故でしょうか。
501500:2005/03/30(水) 10:50:33
updateオーバーライドしてた、スマソ
502デフォルトの名無しさん:2005/03/30(水) 12:13:06
すいません次のプログラムを作成していただけませんか。

三角形を表すTriangleクラスを宣言する。
Kadai2_1クラスのmain()メソッドで、Triangleオブジェクトを作成し、面積を表示する。

【Triangleクラスの構成】

<フィールド>
private double base; //三角形の底辺の長さ
private double height; //三角形の高さ
<コンストラクタ>
public Triangle(double b, double h); //底辺、高さの初期値を設定する
<メソッド>
public double getArea(); //三角形の面積を計算し、戻り値として返す
503デフォルトの名無しさん:2005/03/30(水) 12:18:28
マルチですかそうですか
504デフォルトの名無しさん:2005/03/30(水) 12:29:14
入門書のそのまんまの問題でワラタ
505デフォルトの名無しさん:2005/03/30(水) 12:35:09
if(マルチ || すれ違い){
 // 何もしない
}
else{
 回答を考えてあげる
}
506デフォルトの名無しさん:2005/03/30(水) 12:40:26
>>502
できたぞ
public class Call{
public static void main(String[] args) {
Trianan t=new t(10,10);
t.getArea();
System.out.println("平方センチメートルです。(・3・)");
}

}

class Trianan{

public Trianan(double b, double h){
System.out.print("面積は");
}

public double getArea(){
System.out.print("12");
}
}
507デフォルトの名無しさん:2005/03/30(水) 12:41:11
>>506
頼むからマルチに回答するのはやめてくれ
508デフォルトの名無しさん:2005/03/30(水) 12:45:44
まあ、この回答内容ならいいか...
509デフォルトの名無しさん:2005/03/30(水) 13:54:29
>506
なぜTrianan?
510デフォルトの名無しさん:2005/03/30(水) 13:57:49
>>509
回答内容をよく読むと分かるよ
511デフォルトの名無しさん:2005/03/30(水) 14:00:31
>>509
そうじゃないとコンパイルエラーになる。
512デフォルトの名無しさん:2005/03/30(水) 14:00:32
別に意味なんてないと思うけど
513デフォルトの名無しさん:2005/03/30(水) 14:45:25
J2EE1.3とか1.4で、中に含まれる技術が何で、
どの技術がどのバージョンをサポートしている
とかって情報はどっかに一覧でないっすかね?

例えば、こんなの。(Versionがあっているかは知らんけど)
J2EE1.3に含まれる技術
Servlet:2.3
JSP:1.2
EJB:2.0
・・・
J2EE1.4に含まれる技術
Servlet:2.4
JSP:2.0
EJB:2.1
・・・
514デフォルトの名無しさん:2005/03/30(水) 14:49:30
>>506
new tってなんだ?
インストラクタの引数は何処へ?
515デフォルトの名無しさん:2005/03/30(水) 14:51:37
インストラクタ?
516デフォルトの名無しさん:2005/03/30(水) 14:52:14
>>515
コンストラクタ
天然でボケた・・・軽く自分でワラタw
517デフォルトの名無しさん:2005/03/30(水) 14:53:46
いっぱいJAVA勉強して世界を征服してみせるぞっ!
518デフォルトの名無しさん:2005/03/30(水) 15:05:41
>>513
分かりやすく置いてあると思うけどなぁ。

http://java.sun.com/j2ee/reference/docs/index.html こっから
J2EEバージョンのDocumentを見て、Specifications
519デフォルトの名無しさん:2005/03/30(水) 15:06:40
>>513
リリースノートに載ってる。
http://java.sun.com/j2ee/sdk_1.3/techdocs/release/ReleaseNotes.html#9712
1.4は、これみりゃわかるか。
http://java.sun.com/j2ee/1.4/docs/index.html
どちらにしても、SunのJ2EEのトップページからすぐにたどれる。
520デフォルトの名無しさん:2005/03/30(水) 15:16:56
他の方が書いたコードをとある事情から読んでいるのですが、
int 型の a, b があって

if ((a & b)) != 0) {
temp = doSomething()
}

if ((a & b)) == b) {
returnValue = temp;
} else {
returnValue = doSomethingElse();
}

と言う処理が続けてある状態です。
数学というか論理の基本が絶望的なのでどうにも分からないのですが、

if ((a & b) != 0) {} と if ((a & b) == b)) {} で
抽出出来る違いってなんでしょう?

a が 0 の場合、どちらも必ず偽になりますよね。
a が 0 以外の場合、a & b は 0 か b にしかならない…ので
一緒くたにできるような気がするのですが、どこが勘違いしているのでしょうか?
521520:2005/03/30(水) 15:18:20
ああしまった。半角スペースじゃ整形駄目ですね...すみません。
コードの部分は

if ((a & b)) != 0) {
  temp = doSomething()
}

if ((a & b)) == b) {
  returnValue = temp;
} else {
  returnValue = doSomethingElse();
}

と言った感じです。
522デフォルトの名無しさん:2005/03/30(水) 15:32:57
>>520
「&」 はbit単位の演算だよ
だから結果は真とか偽とかじゃなくて、1234とかのint値
論理演算は「&&」ね
523デフォルトの名無しさん:2005/03/30(水) 15:33:56
>>520
2 & 1 は 2 になるか?
3 & 1 は 3 になるか?

a が 2、b が 1 の時は a & b は 2 になるか?
a が 3、b が 1 の時は a & b は 3 になるか?

を考えろ。
524デフォルトの名無しさん:2005/03/30(水) 15:34:41
>>522
1分も遅かったよ orz
525デフォルトの名無しさん:2005/03/30(水) 15:37:08
大丈夫だ! 正確には59秒だから
526デフォルトの名無しさん:2005/03/30(水) 15:41:48
>>520
>a が 0 の場合、どちらも必ず偽になりますよね。○
>a が 0 以外の場合、a & b は 0 か b にしかならない…ので×

a=(2)10進 (0010)2進
b=(6)10進 (0110)2進

a & b = (0010)2進 (2)10進

aが0以外なのに、a & bの結果が0かbじゃない。

その条件式を見て、何がしたいのかさっぱりわからん。
527デフォルトの名無しさん:2005/03/30(水) 15:46:40
>>521
Javaの&&、||はboolean型にしか使えないし
Cの比較演算と混同してないか?
528デフォルトの名無しさん:2005/03/30(水) 15:51:32
ところで、「(a&b) == b」って、「a == -1」と同義だよな?
そっちの方が速い気がするけど最適化されるんだろうか?
529デフォルトの名無しさん:2005/03/30(水) 15:51:49
>>520の混同はさておき何がしたいのかはよく分からんな。
530デフォルトの名無しさん:2005/03/30(水) 15:53:05
論理演算で &、| が定義されてること知らない奴多そうだな。
531デフォルトの名無しさん:2005/03/30(水) 15:58:28
もともと temp には何か入ってんだろ
532520:2005/03/30(水) 16:05:29
ああ、ありがとうございます_| ̄|○
多分に混同しているようで…

a, b が説明不足だったのですが、
ビットパターンとして定義している幾つかの数値があり、
a はこのいずれかのパターンか、もしくはパターンをビット演算した結果か、0
b はこのいずれかのパターン(a と異なりビット演算の結果は NG)か、0 と言う契約です。

この前提だと、前者
if ((a & b) != 0) は a が b を含んでいるか、ですかね。
if ((a & b) == b) は...やはり a が b を含んでいるか、でしょうか。むう...
533デフォルトの名無しさん:2005/03/30(水) 16:07:51
後者はすべてのビットがたっているかだろ?
534デフォルトの名無しさん:2005/03/30(水) 16:08:13
>528
>ところで、「(a&b) == b」って、「a == -1」と同義だよな?
否。
a==-1 ⊃ (a&b)==b
だが、
(a&b)==b ⊃ a == -1
ではない。
たとえば a == 3 の場合は b in {0, 1, 2, 3} を意味する。
535528:2005/03/30(水) 16:09:03
ゴメン違った、(a == b の場合も入るな...)
忘れてくれ... orz
536デフォルトの名無しさん:2005/03/30(水) 16:12:53
if ((a & b) != 0) は
a の ビット が 1 の ところは、b では 0 になっている

if ((a & b) == b) は 逆に
a の ビット が 1 の ところは、b でも 1 になっている

ことを表わしている。
537デフォルトの名無しさん:2005/03/30(水) 16:14:58
> if ((a & b) != 0) は
> a の ビット が 1 の ところは、b では 0 になっている
a の ビット が 1 の ところは、b では少なくとも一つ以上 1 になっている。
538デフォルトの名無しさん:2005/03/30(水) 16:18:28
>>532 は、&&と&の違いを認識してからレスしる
その書き方はまだ&&の方だぞ
キミに足りないのは
>数学というか論理の基本が絶望的なのでどうにも分からないのですが、
では無くてJavaの演算子の知識だ
539デフォルトの名無しさん:2005/03/30(水) 16:51:50
boolean型 & boolean型(論理演算)

boolean型 && boolean型(効率化論理演算)

int型 & int型(ビット毎の論理演算)
がこんがらがってるんだろう、と推測

一番上のは(今は)忘れた方が良いかも知れん
540デフォルトの名無しさん:2005/03/30(水) 17:00:38
これでいろいろ遊ぶと、ビット演算の感じがつかめるよ。
コマンドラインの入力はパラメーターふたつでともに0から254の範囲でどうぞ..
public class BinaryTest{
final static char[] coeffs = new char[]{(char)0x30,(char)0x31};
public static String toBinary(int n) {
char[] binary = new char[8];
for(int j=0;j<binary.length;j++) binary[j]=(char)0x30;
int charPointer = binary.length -1;
if(n==0) return "0";
while (n!=0){
binary[charPointer--] = coeffs[n&1];
n >>>= 1;
}
return new String(binary);
}
public static void print(int n){
System.out.print(BinaryTest.toBinary(n));
System.out.print(" ");
System.out.println(Byte.toString((byte)n));
}

public static void main(String[] args) throws Exception{
int a=Integer.parseInt(args[0]);
int b=Integer.parseInt(args[1]);
BinaryTest.print((a));
BinaryTest.print((b));
BinaryTest.print((a&b));

}
}
541520:2005/03/30(水) 17:31:09
これほどレスを戴けるとは。_| ̄| -=≡○ありがとうございます。
取りあえず少し頭を冷やしてきます…が、だんまりも失礼なので無理矢理。

>>533, >>536-537
例えば前者(if((a & b) != 0))
は(今回 b は最高一つしかビットが立たないのですが例えば)

a 0110 1100
b 1010 1110
-----------
c 0010 1100

のようなものが当てはまり(c != 0)、後者(if((a & b) == b)ではこれが
当てはまらない(c != b)。後者は

a 0110 1100
b 0100 1000
------------
c 0100 1000

のようなものが当てはまる(c == b)(※前者(c != 0)も当てはまる)
なので、後者は a & b の結果 b のビットが全て立っているか(>>533)、
と言う確認ってことですかね。ここまででしたら何とか…

…む、でも >>536
| if ((a & b) == b) は 逆に
| a の ビット が 1 の ところは、b でも 1 になっている
のパターンは、上記の例の後者とは矛盾(a の上3桁目等)してますね…
やはりまだ理解してないか…再考します。

>>540
うわああぁぁああぁ(゚Д゚;)、ありがとうございます。ちょっと勉強してきます…
542デフォルトの名無しさん:2005/03/30(水) 17:40:00
>>541
> 今回 b は最高一つしかビットが立たないのですが

あれ、だったら
if((a & b) != 0) と if((a & b) == b) で実質評価してるところって
結局変わらないことない?漏れも混乱してきたわ。
543513:2005/03/30(水) 18:09:09
>>518-519
dくす
なんか全然違うところとか、PDFとか見てて疲れはてて、ここに書いてみた。
正直すまんかった。今は反省している。
544デフォルトの名無しさん:2005/03/30(水) 18:57:27
>>542
私もそう思います
が、バグッたときやデータのエラーにより
ビットが増えたときの事を考えたら

if((a & b) != 0)

のほうが無難かと
545192.168.0.774:2005/03/30(水) 19:29:58
javaしようと思ってるのですが、スタートメニューにコマンド
プロンプトがない場合どうしたらよいでしょうか???

誰かバカな私に知識を〜〜
546デフォルトの名無しさん:2005/03/30(水) 19:30:43
JtextAreaに書き込んだ文字列を取り出すにはどうしたらいいのでしょうか。
547デフォルトの名無しさん:2005/03/30(水) 19:38:02
>>545
[スタート]-[プログラム]-[アクセサリ]-[コマンド プロンプト]
使われていない項目が折りたたまれてる可能性があるから [アクセサリ] の中を表示したまましばらく
ボケッと見てなさい。

マジで無いのであれば [スタート]-[ファイル名を指定して実行] で「名前」に cmd とだけ入力して「おk」
548192.168.0.774:2005/03/30(水) 19:50:57
>>547
cmd.exeが三種類見つかったのですが…
どれを使ってもよいのですか??
system32
servicePackFiles
SoftwareDistribution
とこんな場所に…
549デフォルトの名無しさん:2005/03/30(水) 19:52:41
普通system32のを使うと思われ。
550デフォルトの名無しさん:2005/03/30(水) 19:53:49
>>548
ひとつずつ試すべし
はずれを当てると...
どうなってもしらない
くわばらくわばら
551548:2005/03/30(水) 19:56:43
>>549
>>550

ありがとうございます
試してみます〜〜w
552デフォルトの名無しさん:2005/03/30(水) 19:58:15
>>546
マジの質問として回答..
JTextArea は JTextComponent を継承しているので、後者のgetTextというメソッドが使える。

http://java.sun.com/j2se/1.5.0/docs/api/
553デフォルトの名無しさん:2005/03/30(水) 19:59:04
>>548
マジで無いみたいだし実行ファイル探すくらいの知識はあるみたいだからもうちょっと詳細に書こう。

コマンドプロンプトのプロパティ
リンク先: %SystemRoot%\system32\cmd.exe → C:\WINDOWS\System32\cmd.exe
作業フォルダ: %HOMEDRIVE%%HOMEPATH% → C:\Documents and Settings\<username>
554デフォルトの名無しさん:2005/03/30(水) 20:20:03
>>552

思いっきりマジですた。
ありがとうございます。
555548:2005/03/30(水) 20:42:30
>>553

ありましたwww
いろいろやってるうちにようやく
最初のプログラム
「Hello Java World」
を打つことに成功しましたww

ほんとうにありがとうございました!!!!!!
これからも精進してがんばります
556デフォルトの名無しさん:2005/03/30(水) 20:55:06
>>555
なんかチミのレスは読んでて気持ちがいいね
マジ回答してお礼も言えないバカが増えたこの板だけど
救いのある若者ってまだまだいるのね
557デフォルトの名無しさん:2005/03/30(水) 20:56:49
> マジ回答してお礼も言えないバカが増えたこの板だけど
昔からそうだったよ
558デフォルトの名無しさん:2005/03/30(水) 21:47:19
>>556
おまいはお礼をいってもらいたいからマジレスするのか?
心の狭いやつだな。分からない人がいて質問をする。
それに対して、回答をしてあげる。それでいいじゃないか。

礼儀知らずなやつだな、と思いたきゃ勝手に思っておけばいいだけじゃない。
559デフォルトの名無しさん:2005/03/30(水) 21:49:00
>>558
つまらん事で出てくるなボケ
560デフォルトの名無しさん:2005/03/30(水) 21:50:44
>>555
なんかチミのレスは読んでて気持ちがいいね
マジ回答してお礼も言えないバカが増えたこの板だけど
救いのある若者ってまだまだいるのね
561デフォルトの名無しさん:2005/03/30(水) 22:12:08
>>555
なんかチミのレスは読んでて殺伐するね
マジ回答にお礼を期待する莫迦が増えたこの板だけど
脳内捏造の懐古主義って早く氏んでね
562デフォルトの名無しさん:2005/03/30(水) 22:14:57
チンコロ脳内↑ プッ
563デフォルトの名無しさん:2005/03/30(水) 22:21:49
夜になると餓鬼の執拗偏執狂がふえるな
礼儀は人として前提条件
それに(氏んでね)とかつかうのは
大脳萎縮始まってる
脳内捏造てどこでコピペしてきたの?ぼうや
564デフォルトの名無しさん:2005/03/30(水) 22:24:43
何顔真っ赤にしてマジレスしてんだw リアル莫迦かwwwww
565デフォルトの名無しさん:2005/03/30(水) 22:30:50
↓お約束の無職認定
566デフォルトの名無しさん:2005/03/30(水) 22:35:55
無色
567デフォルトの名無しさん:2005/03/30(水) 22:39:22
> 礼儀は人として前提条件
  ↓
> 大脳萎縮始まってる
568デフォルトの名無しさん:2005/03/30(水) 22:39:50
>>541
もとのプログラムで何をやろうとしているのかはわからないけどさ、
1をオン、0をオフとしてみようじゃないか。

たとえば、
(a & b) == 0
は、bのビットが1のところが全部0のときに真になる。だから、
「bで指定したビットがオフであることを確認する」という意味だね。

(a & b) != 0
は、「bで指定したビットのうちいくつかはオンのまま」であるかどうか
という判定だね。

(a & b) == b
こいつは、一番最初のと逆で、bで指定したビットが全部1である場合に
真になる。だから「bで指定したビットが全部オンか?」というチェックだ。

だから、8ビットの下位から2ビット目がオンであることをチェックする場合は
( a & 00000010) = 00000010
でチェック出来るというわけ。

「&」は右オペランドの「0」のビットを全部0でマスクするから、残った部分の
ビット状態を確認するときに使うもんだと覚えておけばいい。=の右側が
チェックしたいビット状態を表している。=0なら「全部オフか?」と聞いている
わけだ。

逆に「|」は、右オペランドの1の部分を全部オンにするので、特定ビットを
オンにするときに使うというわけ。
569ラブ天使:2005/03/30(水) 22:43:29
みんな幸せですよ
570デフォルトの名無しさん:2005/03/30(水) 22:46:40
愛のシステム
571デフォルトの名無しさん:2005/03/30(水) 22:48:06
おまえも名wwwwww
572デフォルトの名無しさん:2005/03/30(水) 22:51:07
m9(^Д^)プギャー
573デフォルトの名無しさん:2005/03/30(水) 22:52:50
早く春休みヲワレ厨房ウザ
574デフォルトの名無しさん:2005/03/30(水) 22:55:22
そして厨房認定w
575デフォルトの名無しさん:2005/03/30(水) 22:55:35
sagetesimae
konnasure
tyubogainakunarumade
576デフォルトの名無しさん:2005/03/30(水) 22:56:19
sagetesimae
konnasure
tyubogainakunarumade
577デフォルトの名無しさん:2005/03/30(水) 22:56:30
__________∫__∫________
|\  ________∧_∧______∫_ \
|  \ \      ∫    ( ´∀`)      ∫       \ \
|    \ \  ∫       〜〜〜〜    ∫       ∫ \ \
|      \ \___________________\ \
|        \_____________________\
\        |                                            |
  \      |                                            |
    \    |                                            |
      \  |                                            |
        \|______________________|

578デフォルトの名無しさん:2005/03/30(水) 22:57:38
sagetesimae
konnasure
tyubogainakunarumade
579デフォルトの名無しさん:2005/03/30(水) 22:58:28
sagetesimae
konnasure
tyubogainakunarumade
580デフォルトの名無しさん:2005/03/30(水) 22:59:35
連投厨房がんがれよ
581デフォルトの名無しさん:2005/03/30(水) 23:02:54
連投厨房がんがれよ
582デフォルトの名無しさん:2005/03/30(水) 23:03:33
連投厨房がんがれよ
583デフォルトの名無しさん:2005/03/30(水) 23:04:25
連投厨房がんがれよ
584デフォルトの名無しさん:2005/03/30(水) 23:05:48
|\  ________∧_∧______∫_ \
|  \ \      ∫    ( ´∀`)      ∫       \ \
|    \ \  ∫       〜〜〜〜    ∫       ∫ \ \
|      \ \___________________\ \
|        \_____________________\
\        |                                            |
  \      |                                            |
    \    |                                            |
      \  |                                            |
        \|______________________|


585デフォルトの名無しさん:2005/03/30(水) 23:06:32
アホ 懐古厨がレス流したいがためにコピペ作戦に出たようです
586デフォルトの名無しさん:2005/03/30(水) 23:07:43
何顔真っ青にしてマジレスしてんだw リアル亜穂かwwwww
587デフォルトの名無しさん:2005/03/30(水) 23:08:29
アホ 懐古厨がレス流したいがためにコピペ作戦に出たようです
588デフォルトの名無しさん:2005/03/31(木) 00:11:00
学生です。将来的にJavaとC++を学びたいと思っているのですが、
JavaとCのどちらから学習すればいいのですか?
JavaScriptで組んだことはありますが、本格的な言語は初めてです。
589デフォルトの名無しさん:2005/03/31(木) 00:16:31
>>588
JavaとC++を学びたいというのに、JavaとCのどちらからだ?馬鹿?
JavaScriptが本格的じゃないだ?無能?
590デフォルトの名無しさん:2005/03/31(木) 00:16:59
>>588
どっちでも良い。
悩んでる時間が無駄だから、とりあえずどっちかやれ。
591デフォルトの名無しさん:2005/03/31(木) 00:24:29
Eclipse 3.0.2 には JDK の 1.4 系と 1.5 系 のどちらを
使うべきでしょうか?
592デフォルトの名無しさん:2005/03/31(木) 00:25:37
>>588
Javaをやれ。Javaで出来ないことがしたくなったらC++をやれ。
593デフォルトの名無しさん:2005/03/31(木) 00:30:05
>>589
無能はおまえだよw
はよねれ厨房
594デフォルトの名無しさん:2005/03/31(木) 00:33:13
春厨キター!>>593
595デフォルトの名無しさん:2005/03/31(木) 00:35:05
Javaと同じ事ができないからJavaScriptは本格的な言語じゃありません


なんて言い出すのかな
596デフォルトの名無しさん:2005/03/31(木) 00:39:48
>>591
業務などでバージョンの違いが気になる人を除けば1.5でいいよ。1.5の方が速い。

ただし、1.5で追加された言語仕様
(拡張forループ、オートボクシング/アンボクシングなど)は
エディタとコンパイラが対応していないため使えないので注意。
Eclipseは自前のコンパイラ使ってるからね。
597デフォルトの名無しさん:2005/03/31(木) 00:41:05
JavaScriptが本格的でないという奴はprototypeやclosureは使っての発言だろうな
598デフォルトの名無しさん:2005/03/31(木) 00:49:53
JavaScriptはソース丸見え
だからいやだ
599デフォルトの名無しさん:2005/03/31(木) 00:51:57
Javaもソースに戻せるよな
600デフォルトの名無しさん:2005/03/31(木) 01:14:24
>>596
そこでSun純正のNetBeansですよ
601デフォルトの名無しさん:2005/03/31(木) 01:30:58
>>596
ありがとうございました。
602デフォルトの名無しさん:2005/03/31(木) 02:11:01
質問です
File型のfileインスタンスって文字列で扱われると知りました
これで凄い違和感があるんですけどjavaの仕様ですか?

File file=new File("c:\\temp\\hoge.txt");
String buf="test:"+file;
System.out.println(buf);

bufはtest:c:\temp\hoge.txt
603デフォルトの名無しさん:2005/03/31(木) 02:27:32
>602
いや、それ、暗黙にfile.toString()が呼ばれてるだけだから。
604602:2005/03/31(木) 02:40:19
>>603
そうなんですか
というよりそういう答えを期待してました、有難うございます
File型以外にもこういうケースがあるのでしょうか?
暗黙になされてた事が全く解らないのですが
どこかにそういう仕様書があるんでしょうか?
Javadoc見てもわからないです
605デフォルトの名無しさん:2005/03/31(木) 03:11:39
>>604
Java言語仕様というものがあります。
606デフォルトの名無しさん:2005/03/31(木) 03:18:13
>>588
時間に余裕があって末永くこの業界にいるつもりなら、手続き型の C で構造化、
モジュール化設計、構造体、ポインタ、関数ポインタなどを使いこなせるように
なってから Java をやったほうが良い。いきなり Java でも敷居が高いとはまったく
思わないが、(仮想マシンじゃなく) リアルコンピュータの基本構造も分からない奴は
すぐ頭打ちになる。

>>604
+ による文字列対オブジェクトの連結は、言語仕様でそのオブジェクトの toString()
との連結とみなされます。
607デフォルトの名無しさん:2005/03/31(木) 07:55:02
>>604,606
System.out.println() の中でもtoString()は呼ばれるしね。
608デフォルトの名無しさん:2005/03/31(木) 09:42:51
hoge(Object obj) でどう実装されてるかによるんじゃ? > toString()
609デフォルトの名無しさん:2005/03/31(木) 11:00:40
>>608
実装されてなくても、java.lang.Object で toString() が定義されてるから、それが呼ばれる。
610デフォルトの名無しさん:2005/03/31(木) 11:25:55
あ、いや、引数としてObjectをとるメソッドが実装されてる場合の挙動ね
println の場合だと Object.toString() が呼ばれるようになってますけど
それ以外の場合は知らんよって話

元の質問に戻すと
 ・String との + 連結は、コンパイラによって toString() 連結に解釈される
 ・hoge(String src) のようなメソッドで hoge(Object obj) も用意されてる場合
  hoge(Object obj) で toString() が呼ばれる実装がされている(パターンが多い)
611デフォルトの名無しさん:2005/03/31(木) 11:28:21
>>610
そもそもSystem.out.println(Object)以外のメソッドの話は誰もしていない。
612デフォルトの名無しさん:2005/03/31(木) 11:28:53
int price = 1000;
int tax = 50;
System.out.println(price + tax + "円");
System.out.println("¥" + price + tax);

1050円
¥100050
613デフォルトの名無しさん:2005/03/31(木) 11:36:29
>>610
>hoge(Object obj) でどう実装されてるかによるんじゃ? > toString()

>hoge(Object obj) で toString() が呼ばれる実装がされている(パターンが多い)

オマエの言う、hogeってメソッドは何のことを指しているんだ??
なぜtoStringが呼ばれる実装が多いのかさっぱり分からん。
hoge(Object obj) → 「Objectを引数とするメソッド」 ???
614デフォルトの名無しさん:2005/03/31(木) 11:47:28
>>611
質問者のレスをよく読んでなかった
println() 以外にもそういうのはあるのか?と解釈してた

>>613
文字列操作関連のメソッド
StringBuffer.append()等
615デフォルトの名無しさん:2005/03/31(木) 13:24:52
参考書見てたら「有形サブクラス」って言葉が出てきたんだけど
この「有形」ってなんだろ?
616デフォルトの名無しさん:2005/03/31(木) 13:33:24
>>615
「抽象ではない」という意味じゃないすかね。
617デフォルトの名無しさん:2005/03/31(木) 13:37:30
>>616
なるほろ!
618デフォルトの名無しさん:2005/03/31(木) 13:58:49
でも有形って使われてるの聞いたことないな。
有形 ⇔ 無形
抽象 ⇔ 具体

ちなみに特に DB 周りで「マスター ⇔ サブ」って使ってる人大杉
スーパー ⇔ サブ
マスター ⇔ スレーブ
619デフォルトの名無しさん:2005/03/31(木) 14:16:02
自分も「有形」ってのは聞いたことがないが、
concrete ⇔ abstract
でconcreteを辞書でひくと「有形の」ってのがあるのでまあアリなのかな。

マスター ⇔ メイドさん
ということで一つ。

620デフォルトの名無しさん:2005/03/31(木) 14:19:53
訳者が█鹿か
621デフォルトの名無しさん:2005/03/31(木) 14:21:46
質問です

DOMを使ってXMLの書き出しをやってるんだけど、
要素の属性をsetAttributeした順番に書き出したいんだよね。
ところが、XMLSerializer使ってもTransformer使っても
属性がアルファベット順にソートされて出てきちゃう orz

属性を登録した順番に書き出す方法があれば教えてクダサイ

ちなみにこんな感じで書き出しています

//DOMSerializerの場合:
OutputFormat format = new OutputFormat( doc, ENCODING_CHAR_SET, true ) ;
DOMSerializer serial = new XMLSerializer( writer, format ).asDOMSerializer() ;
serial.serialize( doc ) ;
out.flush() ;
out.close() ;

//Transformerの場合:
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
DOMSource source = new DOMSource(doc);
FileOutputStream os = new FileOutputStream(file);
StreamResult result = new StreamResult(os);
transformer.transform(source, result);
622デフォルトの名無しさん:2005/03/31(木) 14:24:57
属性の順序って意味あるのか?
623デフォルトの名無しさん:2005/03/31(木) 14:27:55
XML では属性の出現順序は意味が無い。
ただその意味と関連付くと読みやすい出現順序ってのはあるな。
624デフォルトの名無しさん:2005/03/31(木) 14:29:25
>>621
それらの手段で属性の順番を保持してシリアライズすることは不可能。
XMLで属性の順番に意味を持たせてはいけないし、DOMは属性の順番の情報は保持していない。
625621:2005/03/31(木) 14:46:25
>>623
そうなんです。
テキストエディタで開いた時に読みやすくなる、ということで。

>>624
この他の手段で属性の順番を保持できる方法はないものでしょうか。
ただ、1.4.2と1.5で同じソースが使える…という縛りがあって。
org.apacheをimportしなきゃいけない方法は使えません orz
626デフォルトの名無しさん:2005/03/31(木) 15:07:07
オマエ式シリアライザ作る
627デフォルトの名無しさん:2005/03/31(木) 15:07:57
>>625
DOMを使わないでXML生成する, or
自分で順序保持するようなDOM準拠クラスを作る
628621:2005/03/31(木) 15:15:10
>>626-627
オレ式シリアライザーを作るしか無さそうですね。。

回答してくれた方サンクスでした。がんがってみるよ。
629デフォルトの名無しさん:2005/03/31(木) 15:18:06
シリアライザだけ作っても無駄ですよ。
DOMに入った時点で順序が失なわれているんだから。
630629:2005/03/31(木) 15:19:55
あ、「このタグのときはこの順序で属性を書く」ってシリアライザを作
ればいいのね。すまん。

631デフォルトの名無しさん:2005/03/31(木) 15:28:51
ActionEventクラスのgetModifiers()メソッドを使って
修飾子のSHIFTが使われているか調べたいのですが、どうしたら良いのでしょうか。

if(ae.getModifiers()==ActionEvent.SHIFT_MASK)
  ↑ActionEvent

とりあえず↑みたいにやってみたのですが、ダメでした。
632デフォルトの名無しさん:2005/03/31(木) 15:30:27
SHIFT 以外に別のメタキーも押せるのでビットフラグになっている。

if((ae.getModifiers() & ActionEvent.SHIFT_MASK) != 0)
633デフォルトの名無しさん:2005/03/31(木) 15:32:30
>>632
あ、意味わかりました!ありがとうございます。
634デフォルトの名無しさん:2005/03/31(木) 15:32:45
635デフォルトの名無しさん:2005/03/31(木) 15:38:58
C++で暗号化した文字列を、Javaで復号化するような仕組みを作りたいのですが、
可能でしょうか?
暗号化方式は問いません。
具体的な例など提示していただけると助かります。。

いろいろ試してはみたのですが、BlowFishやAESでは渡した文字列を
復号化することが出来ませんでした・・。
636632:2005/03/31(木) 15:40:49
すいません、意味は分かったのですが
実際にShiftを押しながらButtonをクリックしたのですが
modifiersの値が64でshiftのフラグが立っていないようなのですが。
原因わかりますか?
637デフォルトの名無しさん:2005/03/31(木) 15:48:24
>>635
ヒント:JNI
638デフォルトの名無しさん:2005/03/31(木) 15:49:45
>>635
アルゴリズムが同じなら問題なくできると思うのだが…
文字エンコードが違うとかじゃないよな?
639デフォルトの名無しさん:2005/03/31(木) 15:51:57
>>636
MouseEventにしたら?
640632:2005/03/31(木) 15:57:46
>>639
しばらく試してみて
ちょうど今、何か間違いが無いか調べて間違いは無いようだったので
もう一度試したら何故か動きました。何か調子が悪いようです。
今はMouseEvent、InputEventのどちらでもちゃんと動いています
ありがとうございます。
641デフォルトの名無しさん:2005/03/31(木) 16:06:51
>>635
アルゴリズムが同じ(モードやパディングも)なら問題なくできます。
642デフォルトの名無しさん:2005/03/31(木) 17:04:31
Componentクラスのインスタンスを生成すると
Paint(Graphics g)が呼ばれるのは仕様?
643デフォルトの名無しさん:2005/03/31(木) 17:27:29
>>642
APIに書いてない以上、仕様とは言えないと思う
644デフォルトの名無しさん:2005/03/31(木) 17:58:50
>>643
そうでっか〜。

でも勝手に呼ばれるからいつも謎。
645デフォルトの名無しさん:2005/03/31(木) 18:17:00
そういう実装になってる、ってだけじゃないかな
646デフォルトの名無しさん:2005/03/31(木) 19:47:56
はじめまして。早速ですが質問させてください。

現在勉強をかねてJavaで簡単なゲームを作成しています。
操作はキーボードを使って行なうようにしていたのですが、
可能ならジョイパッドを利用したいと考えています。
しかし色々調べたのですがなかなかジョイパッドに関する資料が
見つかりませんでした。ここでするような質問なのかと悩んだのですが、
もしジョイパッドを利用する方法をご存知でしたら是非ご教授ください。
よろしくお願いします。
647デフォルトの名無しさん:2005/03/31(木) 19:54:21
>>646
ジョイパッドの利用方法については
製品に付属のマニュアルをご覧下さい
648デフォルトの名無しさん:2005/03/31(木) 20:38:59
>>646
Javaのみでは対応できない
JNI を使うか、JoyToKeyのようなユーティリティで誤魔化すしか
JNI を使ったライブラリを配布しているところもあるので探してみるといい
649デフォルトの名無しさん:2005/03/31(木) 20:55:38
質問です。
WebLogicなりTomcatなりを立ち上げる際にクラスローダにjarファイルを置くと、
そのjarファイル内のメソッドを呼んだりすることが出来ますが、
例えば.javaのファイルを作ってjarファイル内のメソッドを呼ぶ記述をしても、
コンパイルが通らずに呼び出すことが出来ないようです。

コマンドラインから直接叩くような.java(.class)ファイルからjarファイルにしたファイル内のメソッドを呼ぶ方法はないのでしょうか?
650デフォルトの名無しさん:2005/03/31(木) 20:59:43
BufferedReaderでreadLineで一文だけじゃなくて全ての中身を取り出すにはどうしたらいいのでしょうか?
651デフォルトの名無しさん:2005/03/31(木) 21:07:08
永久ループ
652デフォルトの名無しさん:2005/03/31(木) 21:07:46
終端までループ
653デフォルトの名無しさん:2005/03/31(木) 21:12:40
>>649
-cp hoge.jar
654デフォルトの名無しさん:2005/03/31(木) 21:20:15
>>650-652
BufferedReader の readLine は文字通り1行を読むのだから、readLine が null を返すまで繰りかえし
読むことが必要。
655デフォルトの名無しさん:2005/03/31(木) 21:25:23
>>649
多分こういうことがやりたいんだろう、と勝手に想像すると、

ClassLoader loader = ClassLoader.getSystemClassLoader();
Class clazz = loader.loadClass("HogeImpl");
Hoge hoge = (Hoge) clazz.newInstance();

これで実行時に HogeImpl クラスのインスタンスが1個、手に入る。
コンパイル時には、HogeImpl のソースコードは必要ない。
必要な三つの条件。

a-1) HogeImpl.class を置いてあるフォルダ
a-2) HogeImpl.class を含んでいる jar ファイル
のどちらかが、実行時のクラスパスに指定されていること。

b-1) HogeImpl はクラス Hoge のサブクラスである。
b-2) HogeImpl はインタフェース Hoge を実装している。
のどちらかが満たされていること。

c) HogeImpl は引数を取らない public なコンストラクタを持っていること。

HogeImpl 自体をコンパイルするときには、Hoge.class が必要。
656デフォルトの名無しさん:2005/03/31(木) 22:58:46
TCPのクライアント用コードと
サーバ用コードをLAN上の別々の
マシンで実行してみたのですが、
サーバに接続できず、
java.security.AccessControlException: access denied(java.net.SocketPermission 000.000.000.000: 000 connect,resolve)
となってしまいます。
ググってみると
Permission関係のことなのかなと
思ったんですが、いまいちよくわかりません。
securityの設定を甘くしないと駄目ってことでしょうか??
permissionをいじると、それは今後コンパイルするすべてのコードで同じpermissionの設定が反映されてしまうのでしょうか??
657デフォルトの名無しさん:2005/03/31(木) 23:36:41
IPアドレスが設定されてない。
658デフォルトの名無しさん:2005/03/31(木) 23:41:27
Socketをnewするときの引数に直接相手PCのIPを渡しているんですが
それがまずかったですか?
659デフォルトの名無しさん:2005/03/31(木) 23:53:54
OSがXP SP2か何かでファイアウォールが有効になってるんじゃね?
660デフォルトの名無しさん:皇紀2665/04/01(金) 00:55:07
>>656
OSとか、ポート番号とか、イロイロ関係してくるので、周辺環境の情報
をぜんぶ書くべし。
661デフォルトの名無しさん:皇紀2665/04/01(金) 01:13:15
OSはXPでサービスパックはSP1です。
ポートは5555使いました。
アプレットです。
ノートンつけてます。
共有フォルダにはお互いアクセスできるLAN内の二台つかってます。
XPのファイアウォールも関係ありですか?
javaのPermission設定とかって関係ないんですか
662デフォルトの名無しさん:皇紀2665/04/01(金) 01:21:00
まずすべてのファイアウォール関連のアクセス制御を外す。ぜんぶ素通り状態にする。
もし自分でSecurityManagerを設定しているなら、当然Permissionが絡んでくるが、
読んでると「Permissionってなんですか?」という状態のようなので、SecurityManagerは
設定してないんだろう。

で、全部素通り状態でもう一度テストして、つながるかどうか確認しる。
663デフォルトの名無しさん:皇紀2665/04/01(金) 01:43:20
こういう状態にしてやりました

PC1:XPSP1。ノートンはウィルスチェックのみ。
PC2:XPSP2。ウィンドウズファイアウォールをOFF。
どちらからでもpingはちゃんと届きます。

しかしやっぱり駄目ですた・・・
ルーターもきになるけど
ルーターの設定はLANの外に対してしか関係ないっすよね?
664デフォルトの名無しさん:皇紀2665/04/01(金) 02:29:20
そもそもアプレットは、どこにでも繋ぎにいけるわけじゃないよね?
その辺は大丈夫なのかな。

ポート5555でサーバが待ち受けている、そのサーバから
アプレットがDLされて来てるんだよね?
665デフォルトの名無しさん:皇紀2665/04/01(金) 11:13:02
AWTのScrollbarのコンストラクタやメソッドには、サイズを指定するようなものが無いのですが
ということは、やっぱりサイズ変更する方法が無いということでしょうか??
666デフォルトの名無しさん:皇紀2665/04/01(金) 11:19:37
>>664

えええ・・・
アプレットってどこにでもつなぎにいけないの??
どういうこと??
667デフォルトの名無しさん:皇紀2665/04/01(金) 11:23:55
>>666
アプレットが通信できるのは、自分が存在していたサーバーと
そのサーバーからDLされたアプレット間だけじゃないの??
そうじゃないと、好き勝手できるし。
668デフォルトの名無しさん:皇紀2665/04/01(金) 12:36:55
つまり片方のPCにサーバもクライアントも置いて簡易HTTPDを立てて
サーバプログラムを実行し、
もう片方のPCはHTML経由でクライアントを実行すりゃいいってことですかな
669デフォルトの名無しさん:皇紀2665/04/01(金) 16:22:15
画面の解像度を取得したいのですが、そのようなクラスはありますか?
ご存知の方がいらっしゃったら教えてください。お願いします。
670デフォルトの名無しさん:皇紀2665/04/01(金) 16:32:09
>>669
使ったことないし、使えるかどうか知らんけど
API見てたらこんなん見つけた

つ ToolKit#getScreenResolution
671デフォルトの名無しさん:皇紀2665/04/01(金) 16:42:44
>>669
解像度って DPIの方?
それとも、1024x768 とかの方?
672デフォルトの名無しさん:皇紀2665/04/01(金) 16:45:50
>>670
サンクス。でも試してみたけど使えませんでした。
ToolKitにgetScreenSize()ってのがあったけど、これもダメぽ。
673デフォルトの名無しさん:皇紀2665/04/01(金) 16:54:46
>>671
1024x768とかの方です。
DPIという用語ですが、今調べて初めて知りました。
674669:皇紀2665/04/01(金) 17:03:43
調べてたらコンポーネントクラスにgetToolkit()というメソッドがあって
それで取得したToolkitオブジェクトを使ったら
取得できました!助けてくれた人サンクス
675デフォルトの名無しさん:皇紀2665/04/01(金) 17:03:59
getScreenSizeが実装されないってことは考えにくいんだけど環境かいてもらわんと
676デフォルトの名無しさん:皇紀2665/04/01(金) 17:28:36
>>673
マルチディスプレイに対応したいなら、

GraphicsDevice[] devices = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
for(int i = 0 ; i < devices.length ; i++){
 System.out.println(devices[i].getDefaultConfiguration().getBounds());
}

こんな感じ。
677デフォルトの名無しさん:皇紀2665/04/01(金) 17:31:00
皇紀2665年になってる。今頃気付いたよ。
678デフォルトの名無しさん:int 2ch =05/04/01(金) 20:16:06
>>664
おいおい、アプレットなのかよ。元の発言には書いてないようだが。

アプレットなら、自分がロードされたサーバ以外とは一切接続できない。
どうしても接続したいなら、SecurityManagerで接続できるように設定しないと
いけないので、デフォルトならエラーになるだろうね。

ちなみにアプレットが自分がロードされたサーバ以外には接続できないのは、
セキュリティの問題。アプレットがブラウザにロードされて、勝手にどっかのサーバに
接続して、なんか分けの分からないものをダウンロードされたらたまらんからな。
679デフォルトの名無しさん:int 2ch =05/04/01(金) 21:03:04
>>678

自分がロードされたサーバに接続するってことは、
つまりクライアントもサーバもサーバPC上にアップしておいて、
他のPCはブラウザでクライアントにアクセスしなきゃならないってこと
かと思ったのでAN HTTPDを使って実験してみました。
お互い表示はされるんですが、通信はおこなわれませんでした・・・。
同じPC上でブラウザ二枚立てて実験する分には平気で動くのになあ
680デフォルトの名無しさん:int 2ch =05/04/01(金) 21:29:54
ポート 5555 ってことは、
http://www.hellohiro.com/socket.htm
のサンプルをいじってみた、ってとこだろ。
そもそもサンプルは動いたのか?
681デフォルトの名無しさん:int 2ch =05/04/01(金) 22:02:23
クライアントコードもサーバコードもサーバにアップしてある状態で
クライアントコードに別PCのブラウザからアクセスする場合、
そのクライアントコードがサーバにアクセスするためのアドレスって、
localhost?それとも鯖の生IP?
あとjavaVMのバージョンが違っても不都合はおこらないですよね??
682588:int 2ch =05/04/01(金) 22:10:01
>>588,590,592
亀レスすいません。ありがとうございました。
683デフォルトの名無しさん:int 2ch =05/04/01(金) 22:12:00
今度は、帰ってきたウンマンコが教えます
684デフォルトの名無しさん:int 2ch =05/04/01(金) 22:36:37
>>681
ひょっっっっっとして、サーバサイドJavaとJavaアプレットとの区別が
付いていないんじゃないか???
685デフォルトの名無しさん:int 2ch =05/04/01(金) 22:42:53
変数名の先頭に数字は使えますか?w
686ウンマンコ:int 2ch =05/04/01(金) 22:56:44
いや、そんなおかしくないと思うけど
687デフォルトの名無しさん:int 2ch =05/04/01(金) 23:42:18
>>684
サーバサイドjavaってようはCGIみたいな奴じゃないの?
同じサーバ上にあればアプレット同士って通信できるんですよね?
688デフォルトの名無しさん:int 2ch =05/04/01(金) 23:42:21
>>681
> そのクライアントコードがサーバにアクセスするためのアドレスって、
> localhost?それとも鯖の生IP?

鯖の生IPでもいいけど、それをコードの中に書いておいた場合、
鯖のIPが変化した時にアプレットのコードを書き直さなきゃならないよね。

なので、

アプレットの中で、こんなことを書いておく。
例えば init() の中で。

 URL codeBase = getCodeBase();
 String hostName = codeBase.getHost();

これで、自分がどこからダウンロードされてきたのかがわかる。
689ウンマンコ:int 2ch =05/04/01(金) 23:53:47
わかってないな〜
>localhost?それとも鯖の生IP?
http://localhostでアクセスするとcodeBase.getHost()はlocalhost
http://192.168.0.1でアクセスするとcodeBase.getHost()は192.168.0.1

690デフォルトの名無しさん:int 2ch =05/04/02(土) 00:11:11
しかし生IPでもつながらなかったってことは
やっぱ他のところが問題なんでしょ??
691デフォルトの名無しさん:int 2ch =05/04/02(土) 00:29:00
いつまでint 2chなんだよw
692デフォルトの名無しさん:int 2ch =05/04/02(土) 01:25:02
手作業のぬくもりを感じますね<int 2ch
693デフォルトの名無しさん:int 2ch =05/04/02(土) 03:45:13
Java Beanの命名で良く見かけるSuffixにV1とかV2つけるのって
バージョン互換の為なんでしょうか?
public class PersonV1
みたいなやつです。
どこかで定義されている手法なのでしょうか?
694デフォルトの名無しさん:int 2ch =05/04/02(土) 04:30:57
うーん。AN HTTPDを使って立てた鯖上で、
他のPCをつかわずにサーバ自身のブラウザを二枚たててクライアントとサーバを起動
してみたんだけど
そのときクライアントのsocketに渡すアドレスがlocalhostの場合
ちゃんと動いてるんだけど、自分の生IPでアクセスする場合は表示はされても
通信がうまくうごいてくれてないみたい。なぜだろう
695デフォルトの名無しさん:int 2ch =05/04/02(土) 06:13:54
>>693
そんなの見かけないよ
ダメな名前付けの例だなそりゃ
696デフォルトの名無しさん:int 2ch =05/04/02(土) 08:24:50 BE:11434122-##
>>693
俺も2年ほどこの業界にいるけどそんなの見たことないな
クラス名のSuffixって言ったらValueObject略のVOならみたことあるが
実はValue(Object)1、Value(Object)2って意味だったりしてな
697デフォルトの名無しさん:int 2ch =05/04/02(土) 12:30:06
曖昧化ツールを通った後だったりしてw
698デフォルトの名無しさん:int 2ch =05/04/02(土) 13:24:52
つーか同じPC上でブラウザ二枚でテストしてる場合ですら
生IPも.getHost()で得たアドレスでも駄目で、localhostのときだけ
動くみたいなんだけど。これってAN HTTPDの問題なのかな?と思ってしまう
699デフォルトの名無しさん:int 2ch =05/04/02(土) 13:33:57
他人の所為にする前にまず自分を疑えや
700デフォルトの名無しさん:int 2ch =05/04/02(土) 13:37:52
生IPってのはグローバルIPアドレスを指してるのか?
192.168.x.xや127.0.0.1はどうなのよ。
ルータが糞なんだろう?
701デフォルトの名無しさん:int 2ch =5,2005/04/02(土) 14:51:34
>>700
localhostと127.0.0.1ではうまくいきます。
192.168.〜だと駄目っぽいです。
アプレット以外のTCPプログラムでは192.168.〜で普通に送受信成功
してたので、ルーターが糞なのかどうかも微妙な気がするんですが・・・
702デフォルトの名無しさん:int 2ch =5年,2005/04/02(土) 15:11:18
>>701
・localhost(127.0.0.1)と、192.168.〜はまったく別のIP
・localhostからアプレットをロードしたら、そのアプレットのCodeBaseはlocalhost。
・アプレットはCodebaseとしか通信できない。

この三つを100回繰り返し声に出して読んでみろ。
703デフォルトの名無しさん:int 2ch =5年,2005/04/02(土) 16:40:49
>>702
192.168.〜でブラウジングするときにsocketのアドレスも192.168〜にしておけば
ちゃんとオフラインで送受信に成功しました。
で、これでLAN内の他のPCからもアクセスできるのかと思ったのですが
やっぱり他のPCからだと通信できないようでした。XPのファイアウォールも
きったんですが・・・
704ウンマンコ:2005/04/02(土) 17:28:28
もしかしてそれって
サーバの設定で
ホスト名がlocalhostになってるだけちゃうのか?
Apacheでいうところの
ServerName 192.168.11.100:82
705デフォルトの名無しさん:2005/04/02(土) 17:35:46
>>704
192.168.〜でアクセスした場合クライアントとサーバを通信させることは
できないんですが表示はされています。htmlとか接続が成立するまえのアプレット等々はね
706デフォルトの名無しさん:2005/04/02(土) 22:24:31
hostsにはlocalhost=127.0.0.1と書いてあるだろう
そもそもping通ってんの?
707デフォルトの名無しさん:2005/04/02(土) 22:53:30
質問です
ioパッケージのいくつかのクラスでclose()メソッドがありますよね
BufferedReader,BufferedWriter,FileInputStream,FileOutputStreamなどです
closeメソッドがストリームを閉じる事は解るんですが
実行しなくてもエラーも出なけりゃ例外にも引っかかりません
close処理を実行しない時に起こる具体的な問題を幾つか教えてください
708デフォルトの名無しさん:2005/04/02(土) 23:41:37
>707
宿題か? ならスレ違いだ。
いずれにせよ、まずは「BufferedWriter」の「Buffered」が何をどこにバッファしてるのか、考えて見れ。
709デフォルトの名無しさん:2005/04/02(土) 23:56:34
>707
想像だけど、クローズしないと次にオープンできないとか?
710デフォルトの名無しさん:2005/04/03(日) 00:02:39
688の人が書いてた
 URL codeBase = getCodeBase();
 String hostName = codeBase.getHost();
というコードを使ってSocket socket = new Socket("hostName", 5555);
とやった場合も、ローカルでもLANでも表示だけで通信されませんです。
>>706
pingは通るし、アプレット以外のEchoサーバ&クライアントのコードなんかは
普通に動作します。
711デフォルトの名無しさん:2005/04/03(日) 00:11:23
>String hostName = codeBase.getHost();
>Socket socket = new Socket("hostName", 5555);

ちょっとだけウケタ.
712デフォルトの名無しさん:2005/04/03(日) 00:11:57
そろそろウザイかな。
713デフォルトの名無しさん:2005/04/03(日) 00:40:53
そりゃ「"hostName"」というホストがどっかに登録されてないと接続できんだろうなあ。
714デフォルトの名無しさん:2005/04/03(日) 00:54:35
>>712
そうだね。
そろそろ全ソースをバシッと晒してもわらないと、どうしようもないかも。
715デフォルトの名無しさん:2005/04/03(日) 01:03:09
ダブルクオーテーションつけたままですた・・・
716初心者:2005/04/03(日) 10:21:32
MS-DOSプロンプトとコマンドプロンプトって一緒?
717デフォルトの名無しさん:2005/04/03(日) 10:29:09
>>716
若干違うような、同じといえば同じのような。
718初心者:2005/04/03(日) 10:36:05
>>717せんくす
719デフォルトの名無しさん:2005/04/03(日) 10:56:42
そんな答えでいいのかよ
大体、どこがJavaの質問・相談なんだ
720デフォルトの名無しさん:2005/04/03(日) 11:31:18
>>719
本人が満足してるっぽいので、良いのでは?
721デフォルトの名無しさん:2005/04/03(日) 11:32:54
java.io.IOException: Corrupt GZIP trailer
↑何これ?
不正なGZIPトレーラっていうエラーが出たんだけど、
jar圧縮したGZIP形式のファイルはどう読み込めばよいのかね?
722707:2005/04/03(日) 11:34:50
>>708
最後の一行でそう捉えられたのかもしれませんが、全然宿題じゃないです
参考書見ても最後にストリームを開いた状態なのでクローズ処理を行なうしか書いてないので
普通に疑問を持って質問しました、一行ずつ理解しないと引っ掛かるたちなんです

>「BufferedWriter」の「Buffered」が何をどこにバッファしてるのか
Javadocやググッて調べてみたけどどれもストリームの基本的な用法や効率の問題とかしか書いてないです
で、自分の考えですけど溜め込んだ文字列をメモリ上かと・・・ただ資源の無駄使いという事でしょうか?
でも、フラッシュすれば消えるんじゃないのかなと思ってます
例えば、いろんなストリームを開きまくって使う時などもあまり問題ないように思えます
(System.out,System.inなども本当はclose処理を持ってるけど閉じる必要ないですよね)
そりゃ、>>709さんのように同ファイル、また、ソケットプログラミングで同じポートを指定する時は
クローズ処理にも気を使う必要があるかとは思います
ただ単にストリーム使ったら最後に閉じろ閉じろ言われても納得できないというかなんというか・・・
だから質問させていただきした

>>709
>想像だけど、クローズしないと次にオープンできないとか?
同じファイルに書き込む時(FileInputStream,FileOutputStream)などはそう思います
723デフォルトの名無しさん:2005/04/03(日) 11:35:15
>>721
gzip を jar で圧縮して意味あるのか?
724デフォルトの名無しさん:2005/04/03(日) 11:36:48
>>723
gzipファイルとclassファイルをまとめてjarで配布する仕様なり。
725デフォルトの名無しさん:2005/04/03(日) 11:41:46
>>722
フッター書き出す OutputStream とかだと
flush() でなく絶対に close() で閉じないと、
フォーマット違うよって怒られるようなデータ作るよ。

実際にディスク操作するようなファイルシステム書いてみれば
close()しろと言われる意味がわかるかも……
726デフォルトの名無しさん:2005/04/03(日) 11:45:35
>>724
とりあえず、GZipInputStreamとかでなく、
普通にInputStreamでデータ取ってきてhexdumpしてみれば?

後はgzipのフォーマット調べて照合。
727デフォルトの名無しさん:2005/04/03(日) 11:45:57
>>724
trailerってのは終端部?
728デフォルトの名無しさん:2005/04/03(日) 11:53:17
レスありがとうです。

>>726
調べてみます!

>>727
最後の1バイトまで正しく読み込んでいるか調べてみます!
729ウンマンコ:2005/04/03(日) 12:47:44
そういう細かいことはあまり気にしていないが
ファイル系でclose()しないとどうなるのか昔実験したことあった
もちろんclose()しないとおかしくなる
でも、ByteArrayOutputStreamやStringWriterはclose()メソッド呼んでも「なにもおこらない」と書かれている
API/クラスの設計で親クラスのclose()メソッドが形式上継承されているだけ
730初心者:2005/04/03(日) 13:09:49
C:\JAVA>javac Sample1.javaでエンター押したら
 
’javac’は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチファイルとして認識されません。

ってでました。どうゆうことですか?
731デフォルトの名無しさん:2005/04/03(日) 13:12:12
>>1読むか氏ぬか>>1読んで氏ぬか
好きなのを選べ
732ウンマンコ:2005/04/03(日) 13:15:06
俺専用 コピペ倉庫より↓

「スタート」「設定」「コントロールパネル」「システム」「詳細」「環境変数」
「PATH」の項目に「;C\Javaインストールフォルダ\bin」って書く

チェルノブイリ いや もしくは

C:\JAVA>C\Javaインストールフォルダ\bin\javac Sample1.javaでエンター押す

733デフォルトの名無しさん:2005/04/03(日) 13:15:35
>>730
'javac' が内部コマンドまたは外部コマンド、操作可能なプログラム
またはバッチファイルとして認識されなかっただけ。

他に解釈のしようがあるとでも?
734初心者:2005/04/03(日) 13:20:53
>>733 その言葉自体が意味わかりませんでした・・・
735初心者:2005/04/03(日) 13:26:01
>>731 氏にます
736初心者:2005/04/03(日) 14:07:23
まだ解決しない・・センスない。もうちょいがんばってみます。
737デフォルトの名無しさん:2005/04/03(日) 14:17:58
>>728
gzipファイルを残り5バイトのところで
読み込みに失敗していました。
例外も発生せず、気づきませんでした。
引数なしのreadメソッドを使って1バイトずつ読みこんだのですが
結果は同じでした。
仕方なく、データ最後の5バイトは直書きして無理やり動かしました。
署名付きのjarですがこれも関係あったのでしょうか?

738デフォルトの名無しさん:2005/04/03(日) 14:37:11
>>722
閉じないとどういう不具合があるかは、Bufferしてる対象による。

例えばFileReaderをバッファリングしてるBufferedFileReaderを例にとれば、
もしclose()しなければ、OSでファイルを開いたときに確保される構造体なり
なんなりが解放されないままになってしまう(UNIXならファイル・ディスクリプタ)。

ネットワーク・ソケットでも当然OS側でなんらかのリソースを確保してるので、
それを解放する。

ちなみにclose()しないでも、別にエラーにならない。OSもJVMも、close()しわす
れたのか、まだ使うつもりでclose()してないのか分からないから。

まあ、close()は、未出力内容を吐き出すのはもちろんとして、OSレベルで
確保したリソースを解放するタイミングだと思っとけばいいんじゃないかな。
739デフォルトの名無しさん:2005/04/03(日) 14:41:27
URLクラスのgetHost()はString型でホストネームを返すみたいだけど、
文字列ってことはドメインネームを返すんだよね??
HTTPDとかでドメインを持たないコンピュータで実行すると、
無効なアドレスが返ってくるのだろうか??もしそうなら、ドメインじゃなくて
IPを返すようなメソッドってないの?
740ウンマンコ:2005/04/03(日) 14:50:19
そういう時はIP帰ってくる
741ウンマンコ:2005/04/03(日) 14:50:52
API見れば解決できるな
742デフォルトの名無しさん:2005/04/03(日) 14:59:53
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=22827

このアプレットをhtmlに張ってAN HTTPDで実験してください
127.0.0.1とかからアクセスしたときはパケットがとどくけど
サーバの生IPをブラウザに打ってアクセスするととどかない。
743デフォルトの名無しさん:2005/04/03(日) 15:21:19
aとbの内容を取り替えるc言語の関数
void swap(type* a, type*b)
、を、Javaで実現するにはどうすればいいですか?
744デフォルトの名無しさん:2005/04/03(日) 15:23:58
muri
745デフォルトの名無しさん:2005/04/03(日) 15:29:26
オリジナルオブジェクトでインスタンスを操作。
746デフォルトの名無しさん:2005/04/03(日) 15:41:19
>>743
どうしてもそれやりたきゃ要素1の配列でもつかえ
747初心者:2005/04/03(日) 15:44:21
class Sample1
{
public static void main(String[] args)
{
System.out.println("ようこそJavaへ!");
}
}

どうしてもエラーがひとつでてしまいます。どこか間違えてるところありますか?
ほんとレベル低くてすみません。
748初心者:2005/04/03(日) 15:52:10
すいません、できました。>>747スルーはスルーでお願いします。
749デフォルトの名無しさん:2005/04/03(日) 16:53:09
>>742
めんどいから試してないけどさ、ソース見る限り、受け取り側のソケットが
localhostの5555ポートを監視してるじゃん。

そりゃlocalhost(127.0.0.1)でアクセスすりゃ、送信側のcodeBaseがlocalhostに
なるんだから、受け取り側がlocalhostで待っててもOKだろうさ。

でも生IPにすれば、送信側のcodeBaseは生IPになるんだから、そりゃ受け取り側が
どんだけlocalhostで待ってたって受け取れんわな。
750ウンマンコ:2005/04/03(日) 17:00:14
>>742
残念ながらAN HTTPDではなく
Apacheでやってみたが両方とも成功した
ただ、ブラウザ開いたままで、両方やると
既にポート使われているというエラーになるので
一度全部ブラウザ終了させてから行った

server側の開くポートは前に俺が書いたように
http://localhost/・・・でアクセスすれば
そのプログラムの場合localhostの5555番が開く
つまり192.168.11.100でつながらない

192.168.11.100でアクセスしたければ
再度ブラウザで
http://192.168.11.100/serv.html
としてから
http://192.168.11.100/clie.html
としないとダメだと思う
751無関係の人:2005/04/03(日) 17:12:06
Applet とかは関係ない模様。
こんな感じで作ったデータグラムソケットは、

DatagramSocket socket = new DatagramSocket(5555);

localhost 宛や、127.0.0.1 宛のパケットには反応するけど、192.168.0.x
のような IP-Address 宛のパケットには、その IP-Address が自分のもので
あっても反応しないってことらしい。

だから、自分の IP-Address が例えば 192.168.0.1 の場合、

DatagramSocket socket = new DatagramSocket(5555);

とするか、

byte[] b = new byte[] {(byte)192, (byte)168, 0, 1});
InetAddress addr = InetAddress.getByAddress(b);
DatagramSocket socket = new DatagramSocket(5555, addr);

とするかによって、待ち受けソケットがバインドされるアドレスが異なってくる。
前者なら "localhost" や "127.0.0.1" 宛の、後者なら "192.168.0.1" 宛のパケットを待つ。

データグラムソケットってうまれて初めて触ったんだけど、
そういうことで合ってるでしょうか。
752デフォルトの名無しさん:2005/04/03(日) 17:15:53
>>737
すいません、自己解決しました。
GZIPInputStream同様、System.getResourceAsStream()から取得した
InputStream側でもreadメソッドで1バイトずつ
取得したらうまくいきました。
753ウンマンコ:2005/04/03(日) 17:17:47

InetAddress.getByName("192.168.0.13");
と、しましょうや
754デフォルトの名無しさん:2005/04/03(日) 18:07:48
>>751
だいたいそんな感じだと思う。
DatagramSocket(int port)
は、ローカルホストのソケットを作成するので、127.0.0.1のportを監視する。

別のインターフェースでソケットを作りたかったら
DatagramSocket(int port, InetAddress addr)
を使う必要があるよね。
755デフォルトの名無しさん:2005/04/03(日) 18:12:57
なんでそんなに複雑なことになるんだ。
どのアドレスでアクセスしたってちゃんと動くような仕様にはなってねーのか
756デフォルトの名無しさん:2005/04/03(日) 18:20:30
どのアドレスでアクセスしたってちゃんと動くってどんなんだよww

localhostと192.168〜は全然別のアドレス。故にそれぞれ別にLISTENするソケットが
必要ってだけの話だろ。何が複雑なんだ。
もしかしてIPアドレスじゃなくて、マシン単位で考えてないか?

だいたいソケット作っただけで、全インターフェースを勝手にアクセス可能にされたら
たまらんわ。
757デフォルトの名無しさん:2005/04/03(日) 18:21:48
自分のPC内だけで実験するなら、おっしゃるような方法でうまくいくんだけど
サーバを鯖PCのブラウザで立ち上げ、クライアントをLANでつないだ別PC
で立ち上げる
という風にするとうまくいきません。これはどうすりゃうまくいくんですか
758ウンマンコ:2005/04/03(日) 18:25:06
だからー
そのプログラムの書き方だとそういうことになるだけです

ポート開くときに自身のアドレス指定しなきゃいいじゃんか
759デフォルトの名無しさん:2005/04/03(日) 18:42:24
>>758
192.168〜であるサーバ側のソケットを192.168〜で作り、クライアント側がgetHost()で得た
サーバのIPにパケットを投げる。
こういう書き方ならサーバは192.168〜で起動しなきゃならないにせよ
クライアントは別PCから起動してもいいはずじゃないんですか??
760デフォルトの名無しさん:2005/04/03(日) 18:48:25
>>759
じゃあやっぱりサーバ側アプレットがLISTENしてるアドレスが、クライアントの
コードベースと同じになってないんじゃないの。

ちなみにサーバ側アプレットも自分自身のコードベースに対してしかソケットを
開けないぞ。

・クライアントもサーバも同じコードベースであること。
・それぞれ自分のコードベースに対してソケットを開くこと
・サーバ側アプレットは、コードベースとなるマシン上で起動すること。

そもそも、なんでサーバ側までアプレットでないといかんわけ?
761無関係の人:2005/04/03(日) 18:50:15
>>759
その通りだと思う。

で、あなたは誰?
元々の質問して来た人?

どれが元の質問者の発言なのかが判断付かないので、
元の質問者がどこまでわかってて、どこからわかってないのか、
が、こっちにはわからんのが困るな。

これまでの議論で、大体問題点は明らかになったと思うんだけど、
それがわかってないのか、わかってて、プログラムも書き換えたのに
うまくいかないのか。

プログラムを書き換えて、それでもうまく行かなかった、ってことなら、
何をどう書き換えたのかを、再度明らかにしてもらわないと話にならんし。
762デフォルトの名無しさん:2005/04/03(日) 19:29:46
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=22831

こう書き換えてオフラインでの実験はうまくいくようになったけども
クライアントを別PCから立てるとうまくいかないっス。
コードベースがうんぬんという三点はみたしていると思うんだけど
763762:2005/04/03(日) 19:49:14
ちなみにわたしが変な元の質問者です
764デフォルトの名無しさん:2005/04/03(日) 20:25:06
>762
クライアント側ソース52行目のhostNameがどんな
アドレスなのか調べてみれ
192.168.2.100じゃないかもしれないんじゃ?
765762:2005/04/03(日) 20:48:48
192.168.2.100でした
766無関係の人:2005/04/03(日) 20:57:23
なんとなくわかって来た。

Applet の中で、192.168.2.100 で待つ Socket を作成できていないのかも。
全くおなじことを、Applet ではなく、単なる Java アプリとして書いてみたらうまく行った。

今、サーバ側で、
socket = new DatagramSocket(5555, InetAddress.getByName("192.168.0.12"));
をやったすぐ後で、
SocketAddress sa = socket.getLocalSocketAddress();
System.out.println(sa);
をやってみてるところ。Applet とそうでない場合で、なんか表示が違って来るみたい。
767無関係の人:2005/04/03(日) 21:05:47
なんかわかりにくいことを言ってしまって済まん。
>>766 に書いてある、192.168.0.12 は、192.168.2.100 と読み変えてください。

# ええ、私が使ってる PC のアドレスです。
768デフォルトの名無しさん:2005/04/03(日) 21:13:36
>>756
いや、違うだろ。
少なくともDatagramSocket(int port)に関しては、「すべてのローカルインターフェースの」
指定ポートに対して待機するソケットを作成する。だからサーバ側については>>755
言ってることが正しい。

ただどっちにしろアプレットはコードベースとしか通信できんのは変わらない。
769ウンマンコ:2005/04/03(日) 21:16:32
つうかさ、あえて言わなかったけど
なんでservとclieが両方ともAppletなのかと思った
おそらくこの時点で、作ってる本人がシステム全体の意味を取り違えていると思う

だって、servが埋めてあるHTMLをブラウザで表示したって
そのブラウザ上でポート開くのは落とした元のサーバのIPアドレスとバインドしようとする(そのプログラムだと)

770デフォルトの名無しさん:2005/04/03(日) 21:17:34
本にあるSwingのフレームを作る物を
手動コピペして実行した後
そのフレームをドラッグして振り回すと
画面がそのフレームの中の色になったり
実行したフレームが見えなくなったりするのですが
普通にするにはどうすればよいのですか?
771ウンマンコ:2005/04/03(日) 21:20:14
http://hoge.com/
にそのプログラム置いたとして考えよう
getHostで取得できるのは何?
それに対してポート開こうとする
動くわけないよな
772ウンマンコ:2005/04/03(日) 21:21:52
>>770
ココに こっぴぺっとしないとわかんないけど
あらかた予想はつく
773デフォルトの名無しさん:2005/04/03(日) 21:32:25
>>771
別のマシンにサーバをおいたら書き込んであるIPと食い違ってくるから
動かなくなるってことですよね??
だからアプレットで作るなよ、と。たしかに普通はそれは不味いと思います。

でも今回はservとclieを置いているPCのIPは紛れも無く192.168.x.xだし
サーバも192.168.x.xの5555を監視し
clieはファイルのDL元である192.168.x.xをhostNameに取得してるのも
確認済み。なのにサーバにはパケットが来てない。これって何故??
どういうこっちゃ
774デフォルトの名無しさん:2005/04/03(日) 21:35:11
>>766

アプレットはもともとこういう使い方できない仕様だってことですか?
775デフォルトの名無しさん:2005/04/03(日) 21:37:56
bulid.xmlに第1引数、第2引数を指定する場合はどうすれば良いですか?
776デフォルトの名無しさん:2005/04/03(日) 21:43:52
>775
-Dオプションでプロパティとして扱った方が楽な希ガス
777デフォルトの名無しさん:2005/04/03(日) 21:54:24
>>762
サーバ側プログラムの"192.168.2.100"を
クライアントのIPアドレスに書き換えてみたらダメ?
778ウンマンコ:2005/04/03(日) 22:01:25
すいませんが
192.168.x.xって同じアドレスって考えていいのか?
省略しないで書いてもらいたい

それに766の話で、俺的にはなんとなくわかった気がする
つうか、一番最初にそれ思ったんだけど普通に通信できているんで
「まあ、いいか」とそのことが頭から離れていた

通信できないときJavaコンソールにどんなメッセージが出ている?UDPだから出ないか?




779デフォルトの名無しさん:2005/04/03(日) 22:10:15
>>778
同じアドレス。
ついでに補足するとclieやservにアクセスするときブラウザに打ってるアドレス
もちゃんと全部統一してます
780デフォルトの名無しさん:2005/04/03(日) 22:14:50
>>777
DatagramSocket(5555,InetAddress.getByName("192.168.2.100"));
の第二引数のアドレスって、
「そこに送られてくるパケットを監視する」って意味なんですか??
それとももしや「そこから送られてくるパケットを監視」するって意味??
781ウンマンコ:2005/04/03(日) 22:17:37
4人だけかよ ちぃ
782ウンマンコ:2005/04/03(日) 22:18:29
で、エラーメッセージでてるの?
783デフォルトの名無しさん:2005/04/03(日) 22:26:13
>776どうやれば良いのですか?
784デフォルトの名無しさん:2005/04/03(日) 22:28:01
>>780
「そこから送られてくるパケットを監視」であってると思われ
第二引数ナシだと、どのホストからのパケットも読むことになる
785デフォルトの名無しさん:2005/04/03(日) 22:33:31
>>762
なんか気になってたところがあって、もしかして俺も勘違いしてたかなあと思って
プログラム作って試してみた。
やっぱり勘違いしてたみたいで、そこを直したらちゃんと動いたよ。

そこってのはつまり、アプレットはコードベースとしか通信できないってとこね。

まず、クライアントがパケットを送信できるのは、アプレットのコードベースだけ。
これはそのまんまだ。

しかしサーバ側アプレットの方なんだが、これを今までは「サーバがソケットを開ける
のはコードベースだけ」と思ってたのが勘違い。
正しくは、「サーバが受け取れるのは、コードベースから来たパケットだけ」という
ことでした。

なんで、>>762のプログラムも、クライアントのアプレットをサーバ機に、サーバ用
アプレットをクライアント機においてやればいい。サーバ側プログラムでソケットを
作るときに、コードベースを指定しているのもやめていい。
「DatagramSocket( 5555)」 でいい。

クライアント→クライアント機からサーバ機に接続する→クライアントのコードベースはサーバ機になる。
サーバ→サーバ機からクライアント機に接続する→サーバのコードベースはクライアント機になる。

これでクライアントはサーバ機にパケットを送れるし、サーバはクライアントからくるパケットを
受け取れるってことだ。ちなみに、アプレットはコードベース以外から来たパケットは、警告なしに
ただ破棄する。

ただ、アプレットとしてサーバを書くって事自体、ちょっとイレギュラーだと思う。どうせサーバ機でしか
起動しないんだよねえ。ユーザにアプレットとしてロードしてもらう要件でもあるのだろうか?
そうでないなら、サーバ機で普通のJavaプログラムとして常駐させたほうがいいんじゃないかね?
786インデントは(ry:2005/04/03(日) 22:40:40
>>772
import javax.swing.*;

class Figure extends JFrame{
public Figure(String name){
setTitle(name);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
publc class SwingSample{
pualic static void main(String[] args){
Figure figure = new Figure("jFrame);
figure.setLocation(300,200);
figure.setSize(300,200);
figure.show();
}
}

何の変哲もないと思います
787デフォルトの名無しさん:2005/04/03(日) 22:42:10
>>782
DatagramSocketの第二引数をクライアントを起動する側のPCのアドレス
にして実行したんだけど、Javaコンソールに出たエラーは
java.net.BindException: Cannot assign requested address: Cannot bind
です。

>>785
いまからその方法やってみます
788デフォルトの名無しさん:2005/04/03(日) 22:45:35
>>785
え、これってクライアントもサーバもサーバ機におくんじゃなくて
サーバ機にクライアント、クライアント機にサーバをおくって意味なんですか??
789ウンマンコ:2005/04/03(日) 22:51:04
>>787
そのExceptionてどっちのプログラムのものか把握しているの?
ほんとにわかってるのか?
Host指定しなくていいっていうのも
だいぶ前に俺書いただろ
わかってんのか?
790デフォルトの名無しさん:2005/04/03(日) 22:58:09
>>789
785氏とオレは別人。
785氏はわかったのかもしれないが俺は相変わらずわかってません
791デフォルトの名無しさん:2005/04/03(日) 23:01:48
で、結局サーバもクライアントもサーバ機においておいて
クライアント機はブラウザだけでアクセスするような形では絶対無理ってことなのかどうか
誰か説明してくれえ
792ウンマンコ:2005/04/03(日) 23:05:38
java.net.BindException
が出る理由は>>769だろ

で、「Appletの配布元のサーバ」と「clieの動くクライアント」と「servの動くクライアント」は
別のマシンと考えてください
そうなると実際使うときにはセキュリティーも考慮する必要があるの そうなってんの
793デフォルトの名無しさん:2005/04/03(日) 23:09:29
>783
> ant build.xml -Dhoge.piyo=aaa -D hoge.puni=bbb
で、build.xmlの中では${hoge.piyo}が「aaa」、${hoge.puni}が「bbb」になる
単純に
> ant build.xml aaa bbb
だと、aaaとbbbはターゲットになる
まぁ、ターゲットaaaとbbbにpropertyタスク仕込んでもいいとは思うが
794ウンマンコ:2005/04/03(日) 23:09:52
>>791
それは無理だろう
servも誰かに落としてもらってどこかで動いてないと(じっこうしていないと)どこにつなげていいのやら・・・
だから、「両方ともなぜAppletなの?」という疑問が俺の中にはある

clieが実行中に接続先のアドレス指定できるように改良し尚且つ、Appletのセキュリティー外し
どこかでservを実行していれば可能だ

もう一回関係を整理してくれ これはCGIと通信するようなものとは別だ
795デフォルトの名無しさん:2005/04/03(日) 23:14:13
オレの妄想だとこういうシナリオになってたんだよ。
配布元サーバの中にあるclieとserv。
配布元サーバがservを起動。
clieは別PCの利用者がブラウザでアクセスして起動。
コードベースは配布元サーバ。
servで配布元サーバが配布元サーバからのパケットを待つ
clieは配布元サーバへのアクセスしてパケットを発射。
同じサーバ内の別アプレットやサーバ自身にはアプレットも接続できるん
だろうからこれでもいいだろうと思っていた。
clieは配布元サーバじゃなくて別PCからアクセスしても効果は同じ
だと思っていた。
でもちゃうってことだよね??
796デフォルトの名無しさん:2005/04/03(日) 23:19:29
まあ整理するとこうしたかったワケです。

配布元サーバ内にclieとserv在り。
配布元サーバ、ブラウザを使って自分から自分のservをDLし配布元サーバ自身からのパケット待つ。コードベースは配布元さば。
利用者の別PC、ブラウザを使って配布元サーバからclieをDLし配布元サーバへパケットを発射。コードベースは配布元さば
797デフォルトの名無しさん:2005/04/03(日) 23:32:00
あのですね・・・
もしかして

別々のPCからアクセスされている同一サーバ内のアプレット同士って通信できないのですか。
それが一番の疑問。
798横槍すまそ。:2005/04/03(日) 23:40:35
CGI や TCP/IP(特にHTTP)に関しての基本が解っていないように見える。
Java云々以前の問題ではないか?
799デフォルトの名無しさん:2005/04/03(日) 23:48:55
アプレット間通信は、同じページ内のアプレット同士に限られる。
もちろん理由はセキュリティ。アプレットA(クライアント)から
アプレットB(サーバ)にパケットを送れるとすると、Aは全然知らない
どっかのアプレットに情報が伝達されてしまうから。

何が何でもサーバ側もアプレットがいい、というのなら、サーバ機に
クライアントからのパケットを受信するための専用プログラムを常駐させ
て、そいつが自分自身に対してそのパケットを送信してやれば、
サーバアプレットから見ると、サーバ機からパケットが送出されたよう
に見えるから、セキュリティを回避してパケットを受け取れる。

ただそこまでするんやったら、その専用プログラムをそのままサーバ
プログラムにしろよ、と思うな。

ところで、>>796が実現したいことって具体的に何なわけ? どうして
アプレット同士でクライアント・サーバを作ろうとしているのか分からないん
だけど、たとえばかくかくしかじかのゲームを作ろうとしている、とか
もうちょっと具体的に情報公開しないか?
800デフォルトの名無しさん:2005/04/03(日) 23:50:30
801800:2005/04/03(日) 23:56:29
こういうことじゃないね。。
すまぬ、流してくれ
802デフォルトの名無しさん:2005/04/04(月) 00:02:27
>>799

どうしてもアプレットでなきゃならないってことでもないんだけど
勘違いしてアプレット同士通信できると思い込んだまま作った対戦用ゲームがあって、
ローカルの実験では通信できてるから別々のPCで起動してさっそく対戦
しようと思ったら、別々のPCからではうまくいかなかった。
アプレットで無理なら普通のアプリにするけど、もうアプレットで完成
しちゃってるからアプレットのまま対戦させる方法はないかと必死になってる
ってのが今の現状。
803デフォルトの名無しさん:2005/04/04(月) 00:05:09


でもま>>785で触れられているように両方ともサーバ機にすればアプレット同士でも
期待したような動作するってことなのかな?それは正しい?
804デフォルトの名無しさん:2005/04/04(月) 00:05:45
>>797
アプレットはクライアントにダウンロードされてクライアントのメモリ上に展開される
だからクライアントにはアプレットを動かすためにJREが必要になる
サーバ上で動いているんならクライアントにはJREなんかなくたっていいはずだろ。
たとえばサーブレットはサーバ上で動いているためJREはサーバにのみあればよく
クライアントにはJRE入れなくてもサーバのプログラムは動く

ということもわからずにやってたのかよ・・・
805デフォルトの名無しさん:2005/04/04(月) 00:10:23
>>797
同一のアプレットであろうが、別々のマシン上の別のブラウザ上でインスタンスが作られるんだから、
完全に別プロセスだからね。

別のものである以上、そこにはサンドボックスの最強のセキュリティが適用される。
806デフォルトの名無しさん:2005/04/04(月) 00:17:48
>サンドボックスの最強のセキュリティが適用される。
何故か笑ってしまった
807ウンマンコ:2005/04/04(月) 00:24:43
>>805 完全に別プロセスだからね。

そうだよね たぶんその辺も理解していないんだと思う

しかし、やろうとしていることは実現できる
ただ方法が違う
808デフォルトの名無しさん:2005/04/04(月) 00:32:12
ふつうアプレットでやらねーだろ、ってのはもっともなんだけど、
でも、アプレットで、UDP を待つソケットをローカルに bind できる
なんて、発見だったな。

127.0.0.1 だとどうして可能なのか、そして、
192.168.2.100 だと、どうして不可能なのか、が、いまだに不明。

「どっちもできません」って事なら、すごいすっきりなんだけど。
809ウンマンコ:2005/04/04(月) 00:37:45
127.0.0.1 だとどうして可能なのか、そして、
192.168.2.100 だと、どうして不可能なのか、が、いまだに不明。

それに関しては、おれ出来たって・・・(最初のプログラムに関してだが
810デフォルトの名無しさん:2005/04/04(月) 01:45:52
>>808
俺の中ではすごいすっきりなんだけど....

127.0.0.1(localhost)の場合

クライアント→自分のマシンに接続する→クライアントのコードベースはlocalhostになる。
サーバ→自分のマシンに接続する→サーバのコードベースはlocalhostになる。

これでクライアントはlocalhostにパケットを送れるし、サーバはlocalhostからパケットを受け取れる。

ってだけなんだけど。ちなみに、上記の127.0.0.1のところを192.168〜に変えても、同じマシン上の
同一IPアドレスならちゃんと動くよ。上記2項目のlocalhostが192.168〜に変わるだけだから。

二つのアプレットが別のホストに分かれた時に、問題が発生するということ。
811デフォルトの名無しさん:2005/04/04(月) 03:19:27
>>797をみてふと思ったのだが、
アプレットってのは、プログラムはサーバ上にあるけど、動くのはクライアントの
ブラウザ内だってことは理解OKということでいいのかね?

別々のPCからアクセスしたアプレットは、それぞれ別のブラウザ内で動いてる
んで、「同一サーバ内のアプレット同士」ではないんですよ。
サーバ内では一片のコードも動いてないわけだし。
812デフォルトの名無しさん:2005/04/04(月) 12:08:15
大変よくわかりました
813デフォルトの名無しさん:2005/04/04(月) 15:15:40
コレクション関連でいい参考書があれば教えてもらえないでしょうか?
814デフォルトの名無しさん:2005/04/04(月) 15:31:43
正直なところ、最近出た
「Javaコレクションフレームワーク」 ISBN 4797327057
は、薄い内容を大量のサンプルコードで水増ししている感が否めないが、
docs/ja/guide/collections/index.html からたどれる分では不足、サンプ
ルがないと何も分からないという人は買ってもいいかもしれない。
815デフォルトの名無しさん:2005/04/04(月) 15:36:25
javaって将来有望でつか?
ヒッキーから就職したいんだけど机でやれる仕事で
java技術が一番くいっぱぐれないって聞いたんだけど。
816デフォルトの名無しさん:2005/04/04(月) 15:55:58
マジレスすると、いろんな意味で、ヒッキーならまずバイトした方がいい。
817デフォルトの名無しさん:2005/04/04(月) 16:46:55
結城浩のJava言語プログラミングレッスン上下の内容を大体理解した程度の者ですが
特に作りたい物がある訳ではないのですが
GUIやアップレットなど画面上で動かせる物を作りたいと考えています

またJavaでどんな事が出来るかも知りたいです

何かオススメの書籍などはありませんか?
818初心者:2005/04/04(月) 18:18:22
C:\JAVA>javac Sample6.java
Sample6.java:11:シンボルを解決できません。
シンボル:メソッド readline()
場所:java.io.BufferedReaderのクラス
String str=br.readline();
^
エラー一個

って出たんですけど、意味がわかりませんOTL だれか教えて〜
819デフォルトの名無しさん:2005/04/04(月) 18:28:28
そのままだろ
readlineってのがなにかわからんといっておる

実際そんなメソッドはBufferedReaderにはない
820初心者:2005/04/04(月) 18:38:33
何がだめかわかりました。
readline→readLineでした・・プログラムって繊細ですね・・
この一文字にまるまる2時間も・・・
>>819サンキューです。
821デフォルトの名無しさん:2005/04/04(月) 22:54:00
return (char[]) byte[];
できない??
822デフォルトの名無しさん:2005/04/04(月) 23:35:23
>>815
どこまで本気か分からないけど・・・・・・
昨年からハロワの斡旋もあってうちの会社と専門学校で組んでJAVA講習やってる。
採用実績もあるし、前が無い人にとっては最善にして最高の穴場だと思うよ。
興味があるなら職安にGo!
823デフォルトの名無しさん:2005/04/05(火) 01:11:16
>>814
早速読んでみようと思います。ありがとうございました。
824デフォルトの名無しさん:2005/04/05(火) 03:10:54
プログラミング覚えたいんだけど、最初なにすればいいかな〜?
825デフォルトの名無しさん:2005/04/05(火) 03:21:54
なでしこ
826デフォルトの名無しさん:2005/04/05(火) 03:27:01
>>824
実際にプログラムを組む以外にやることなんてないだろ。
なんでも良いから自分の頭で考えてコードを書け。
827デフォルトの名無しさん:2005/04/05(火) 08:16:11
>>824
Swing&SynthでカスタムUI作って公開してくれ。頼む
828デフォルトの名無しさん:2005/04/05(火) 09:31:50
javaアプレットってユーザPCにDLされて実行されますが、ソース盗まれないんですか?
829デフォルトの名無しさん:2005/04/05(火) 09:58:39
配布されるのはソースではなく、コンパイル済みのバイナリなので直接エディタでは読めないが
アプレットに限らず、どんな製品でも逆コンパイルすればソースは盗める。
830デフォルトの名無しさん:2005/04/05(火) 11:17:03
Servlet側でボタンの2度押しを回避する方法を知りませんか?
831デフォルトの名無しさん:2005/04/05(火) 11:29:42
>>830
StrutsにTransactionTokenという、まさにそのための仕組みがあるから
調べてみれ
832デフォルトの名無しさん:2005/04/05(火) 12:10:27
>>831
Action#saveToken(HttpServletRequest)などのことですよね。
Struts使ってないんですよ(泣
Struts使わないで出来る方法ってないのですか?
833デフォルトの名無しさん:2005/04/05(火) 12:34:39
>>832
同じことを自分で実装すればいいじゃないか。
Strutsはソースコードが公開されているんだからパクればよろしい。
見ればわかるが、Strutsを使わないとできないようなことでもないし
その部分だけをいただくのはそんなに難しいことじゃない。
834デフォルトの名無しさん:2005/04/05(火) 15:51:40
Runtime#execを使って
String command = "touch test.txt";
process = Runtime.getRuntime().exec(command);
のようにJavaでコマンド起動しようとしたら

java.io.IOException: Cannot allocate memory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:139)
at java.lang.Runtime.execInternal(Native Method)
at java.lang.Runtime.exec(Runtime.java:546)
at java.lang.Runtime.exec(Runtime.java:413)
at java.lang.Runtime.exec(Runtime.java:356)

って出てエラーになっちゃいます。
午前中までは動いてたのに何故・・・
835デフォルトの名無しさん:2005/04/05(火) 16:25:31
Canvasを背面にしてボタン等をCanvas上にあるように配置したいのですがうまくいきません、検索をしても
Canvasとボタン等が重なって表示されている例がないのですができないのでしょうか?

できるのであればあれば教えてください、よろしくお願いします。
836デフォルトの名無しさん:2005/04/05(火) 16:30:15
837デフォルトの名無しさん:2005/04/05(火) 16:51:56
>>835
CanvasはContainerを継承していないので、
ボタン等の配置はできない。
838デフォルトの名無しさん:2005/04/05(火) 16:57:41
>>837
ご回答ありがとうございます
見かけ上に重ねるだけでもいいのですがそれも無理ですか?
839デフォルトの名無しさん:2005/04/05(火) 17:00:48
>>834
ご丁寧にどうも。
意味はさすがに分かるんですけど
どう対処したらいいかが分かりません。
単純にメモリ増やせってことなのかなぁ。
840839:2005/04/05(火) 17:01:21
>>836
の間違いですた
841デフォルトの名無しさん:2005/04/05(火) 17:05:41
>>833
確かに自分で作れそうです。
と、思ってやってみたらできました。
やってみるものですね。
842デフォルトの名無しさん:2005/04/05(火) 17:27:55
>>838
Canvasの代わりにPanelのpaint()をオーバーライドすればできる。
その際、必ず最後にPanelのpaint()を呼び出す。

public void paint(Graphics g) {
 // ほげほげ
 super.paint(g);
}
843デフォルトの名無しさん:2005/04/05(火) 17:44:09
>>842
ありがとうございます、あとは自分で調べてなんとかしてみます。
844デフォルトの名無しさん:2005/04/05(火) 20:20:59
Javaの文法的なことは一通り勉強しました。
次は実際にプログラムを組んでみたいと思います(プログラミングの練習で)。
初心者はどんなプログラムを作ってみればよいでしょうか?
845デフォルトの名無しさん:2005/04/05(火) 20:30:37
>>844
awtかswing勉強しつつ画像ビュアとかどうよ。
GUIはステップアップに向いてると思う。モチベーションも保てるし。

appletより、aplicationのほうがお勧め。
846デフォルトの名無しさん:2005/04/05(火) 22:42:30
宣言が for文の内にあるのと外にあるのとは、実効速度変わらず?
つまり、

Hoge hoge;
for(int i = 0; i < N; i++){
hoge = new Hoge();
}



for(int i = 0; i < N; i++){
Hoge hoge = new Hoge();
}


の速度の差は変わらない?
847デフォルトの名無しさん:2005/04/05(火) 23:18:40
実質的にないに等しい。
しかし速度に関係なく、変数の「スコープ」で使い分けろ。
848デフォルトの名無しさん:2005/04/05(火) 23:32:17
>>846
速度が変わるかどうか、速度がどれぐらい変わるかは実装による。
ま、>>847 が言うとおり普通は無視できるぐらいの差だろうね。
849846:2005/04/05(火) 23:45:58
>>847
>>848
ありがと。
850デフォルトの名無しさん:2005/04/06(水) 06:04:42
>>846
Hoge hoge;
for(int i = 0; i < N; i++){
hoge = new Hoge();
}



for(int i = 0; i < N; i++){
Hoge hoge = new Hoge();
}

とでは、上の方がきれいだし普通使うが、場合によっては下の方が若干早くメモリーも
若干効率的に使われるということもある。一概に上の方が常に優れているとは言えない。
851デフォルトの名無しさん:2005/04/06(水) 06:13:14
スコープは常に最小限に
852デフォルトの名無しさん:2005/04/06(水) 06:16:37
>>850
forの中でしか使わないなら普通は下だな
853デフォルトの名無しさん:2005/04/06(水) 12:12:28
>>850
美的感覚がズレてるみたいだね。
854デフォルトの名無しさん:2005/04/06(水) 13:26:05
上 メモリに優しい
下 わかりやすい

要件次第でしょ

for(int i = 0; i < getCount(); i++)

int cnt = getCount();
for(int i = 0; i < cnt; i++)
は下だよね?
スコープは常に最小限にって一概に言えない。
855デフォルトの名無しさん:2005/04/06(水) 13:48:11
for ( int i = 0, cnt = getCount(); i < cnt; i++ ) {

これでどうよ
856デフォルトの名無しさん:2005/04/06(水) 13:49:02
>854
下の方が「メモリに優しい」
オブジェクトの寿命を不必要に伸ばすのは良くない。
857デフォルトの名無しさん:2005/04/06(水) 13:54:02
for ( int i = 0, cnt = getCount(); i < cnt; i++ ) {

これでどうよ
858デフォルトの名無しさん:2005/04/06(水) 13:54:46
うお、二度書いてる。すまん
859デフォルトの名無しさん:2005/04/06(水) 13:56:04
妄想、妄想。妄想ですって。何回言わせるんですか。妄想ですよ。妄想ですから
860デフォルトの名無しさん:2005/04/06(水) 14:11:21
>>854
そもそも、その程度の微妙な差まで削るような
ギリギリの最適化をしたいなら最初からJavaを使わない方が良いのでは?

あと、その手の話題に固執しすぎると、
もっと高級な部分で最適化できねーのかyo! このウスラバカが!
って思われるから注意した方がいいよ。
861デフォルトの名無しさん:2005/04/06(水) 14:24:00
そのソースなら微妙じゃない場合もあるだろ?
getCount()の実装次第。
862デフォルトの名無しさん:2005/04/06(水) 14:34:09
>>856
>オブジェクトの寿命を不必要に伸ばすのは良くない。

実際には、>>850 の上のケースは変数宣言を長持ちさせているのであって、
for ブロックで作られたオブジェクトそのものについては参照がその都度外されるのだから、
"オブジェクトの寿命を不必要に伸ばす"わけではないことに注意されたい。参照の外された
オブジェクトは、機会がくればgcの対象となって一掃される。
863デフォルトの名無しさん:2005/04/06(水) 14:37:59
>>862
>>850 だと最後の new Hoge() で作られたインスタンスは
たぶんブロックかメソッドを抜けるまで強参照。

ループ抜けた直後に hoge = null; とかやってないし。
864デフォルトの名無しさん:2005/04/06(水) 14:54:34
>hoge = null;
これやるやつは痛いけどな・・・
865デフォルトの名無しさん:2005/04/06(水) 15:01:51
>>864
まぁ、ループ直後に hoge = null; をわざわざ入れるぐらいなら
for(int i = 0; i < N; i++){ Hoge hoge = new Hoge(); }
ってやるわな。普通なら。

null の代入全般について言ってるなら、痛いのは >>864 かもね。
866864:2005/04/06(水) 15:22:39
nullが意味ある代入ならいいが、
ループ後の意味の無いnullのことだけな

たまにこういうコード見て萎える
867デフォルトの名無しさん:2005/04/06(水) 15:27:26
>>866
その程度で萎えちゃうと仕事にならなくない?
俺はもう慣れた。
868864:2005/04/06(水) 16:16:23
>>867
君は大人だな

引数にObjectしかとらないあふぉなやつとか(昔Variant使いまくっていたらしい)
浮動小数点演算誤差をまったく知らないで消費税計算に1.05掛け算してるとか
もうきりが無いくらいのひどいの見続けてきて心がすさんでいたようだ

浮動小数点の話はもう10年ほどは見続けてきてかなり精神的にもダメージが
869デフォルトの名無しさん:2005/04/06(水) 16:19:14
>>868
昔と比べ、BigDecimalがあるから多少は緩和されたのでは?
870デフォルトの名無しさん:2005/04/06(水) 16:24:16
習慣として null に参照を変えるのは コードの読みやすさということもある。もうそれ以上そのオブジェクト
は使わないという。
871デフォルトの名無しさん:2005/04/06(水) 16:31:15
goto 851
872デフォルトの名無しさん:2005/04/06(水) 16:32:00
>>870
局所変数であれば、普通は null の代入をしたりはしない。
必要ならブロック使ってでも管理する。

インスタンス変数とかなら話は別だが。
873デフォルトの名無しさん:2005/04/06(水) 16:32:58
>>871
ダウト。Javaスレなんだから continue 使え。
874デフォルトの名無しさん:2005/04/06(水) 16:35:33
>>851
しかし、try-catch-finally ブロックを使っているときは、ブロックの外で変数を宣言していないと働かない
場合もある。try ブロックもきめ細かくするという原則があるので、兼ね合いが難しい。
875デフォルトの名無しさん:2005/04/06(水) 16:37:33
>>874
for() の中でしか使わない変数を外で宣言する奴は明らかにズレてる。
いつから try の話に摩り替わったんだ?
876デフォルトの名無しさん:2005/04/06(水) 16:43:24
>>851 に go to 文で誘導されたので、これは一般論だと思った。違ったらスマソ。
877デフォルトの名無しさん:2005/04/06(水) 16:46:49
goto でなくて、 go to と書くのは、何言語出身者?

BASIC じゃなさそうだけど?
878デフォルトの名無しさん:2005/04/06(水) 16:46:52
やっぱり goto文 は混乱のもとになるのか。
879デフォルトの名無しさん:2005/04/06(水) 16:47:40
go to は英語だろう。
880デフォルトの名無しさん:2005/04/06(水) 16:48:26
さっきから age てるのは同一人物?

どうも他人に責任転嫁するのが好きみたいだが。
881デフォルトの名無しさん:2005/04/06(水) 16:49:08
>>880
構って君だろ。しばらく放っとけば?
882デフォルトの名無しさん:2005/04/06(水) 16:49:46
責任はとる。
883デフォルトの名無しさん:2005/04/06(水) 16:49:54
俺も障ってほしい
884デフォルトの名無しさん:2005/04/06(水) 17:09:46
FortranはGOTOもGO TOもG O T Oも全部解釈してくれたと
じいちゃんが言ってた。
885デフォルトの名無しさん:2005/04/06(水) 17:13:50
初めまして
ホント最近、javaに興味をもってプログラムを作るために
Java2 SDKをダウンロードしようと思ったんですけど
http://java.sun.com/j2se/1.4.2/ja/download.html
からダウンロードできません
どなかた理由、或、原因を教えてください。
お願いします。
886846:2005/04/06(水) 17:19:21
皆ありがと。結局下で書いた。

スコープを考えると,下の書き方(for の中で宣言する方)がスッキリするけど、
for 文回したら明らかに差がでる程なら上(forの外)で書こうかと思っていた。

もひとつ質問.

class Hoge{
Hoge tako; //初期化せず...(1)
}

class Test{
public static void main(String[] args){
Hoge hoge = new Hoge();

if(hoge.tako == null){ //null で初期化されてる!
System.out.println("ぬるぽ");
}
}

をやると「ぬるぽ」 が表示される.
「インスタンス生成時に tako = null; と(自動的に)初期化される」は合ってる?
(1)のところを final Hoge tako; (この場合も宣言のみ)にしてやると、
コンストラクタの中で初期化しないとだめっぽいのでそう思ってるのだけど。

実際どんな処理が行われているかってのは、デバッガ使えば分かるんかな?
(恥ずかしながら使ったこと無い。いつも println(...)。 ショボ)
887デフォルトの名無しさん:2005/04/06(水) 17:23:30
>>885
・日本語が変
・手がかりになる情報を一切だしていない
・Javaの質問じゃない

一応、鯖が落ちているわけじゃないみたいだからブラウザの設定
じゃないの?
888デフォルトの名無しさん:2005/04/06(水) 17:23:50
>>885
http://java.sun.com/j2se/1.5.0/download.jsp
から JDK 5.0 Update 2 がよいと思う
889デフォルトの名無しさん:2005/04/06(水) 17:27:08
PHPの
function (hoge = 0) {
みたいな書き方はどうすればJAVAではコンパイルエラーでした。下のように二つ書くしかないのですか?
method () {}
method (hoge) {}
890デフォルトの名無しさん:2005/04/06(水) 17:27:35
891890:2005/04/06(水) 17:32:23
翻訳が分りにくいので補足
>個々のクラス変数,インスタンス変数又は配列構成要素は,それを生成するときに デフォルト値(default value) に初期化する (15.9,15.10)。

ピアソンの訳書では下のように訳されている。
>クラス変数,インスタンス変数、配列構成要素は,生成時にそれぞれのデフォルト値(default value)へと初期化される。
892デフォルトの名無しさん:2005/04/06(水) 17:37:38
>>886
完全な答えではないが、

if(hoge.tako == null){ //null で初期化されてる!
System.out.println("ぬるぽ");
}

は、


System.out.println(String.valueOf(hoge.tako));

の一行で置き換えることが出来る。


893デフォルトの名無しさん:2005/04/06(水) 17:38:00
>>889
2つ書くしかない。大した手間じゃないし。

void method(){ method(0); }
void method(int hoge){ /*処理*/ }
とか。
894886:2005/04/06(水) 17:41:06
>>890 ありがと。

895デフォルトの名無しさん:2005/04/06(水) 17:50:03
日本語が変ですか、 ごめんなさい

javaのプログラムを作るのにSDKが良いと
http://msugai.fc2web.com/java/
で教わったのですが、JDKでも何の支障も無いのであれば
こっちをダウンロードします

>>888はアップデート用なんですけど、これを入れるのがいいですか?
私は今までjava作成ソフトは入れたことがありません。

情報も入れるのを忘れていました
Windows2000 PU   ブラウザ設定は問題ないと思います
アンチウイルスの活動を停止状態

これでいいでしょうか?
896デフォルトの名無しさん:2005/04/06(水) 17:54:03
>>895
SDKもJDKも同じ。
1.4の新しいバージョンが5.0。迷わず5.0を使え。
がんばれ。
897デフォルトの名無しさん:2005/04/06(水) 17:56:26
>>895
Update 2 って書いてんのは version 2くらいの意味。
JDK1.4 と JDK5 (1.5) とは大分変わってるので、
新しいほうがいいと思う。
898デフォルトの名無しさん:2005/04/06(水) 18:08:03
>>896 >>897
親切に教えていただき
ありがとうございます
これからjavaをがんばってみます
899886:2005/04/06(水) 18:18:12
>>890 を読んでみた

まとめ

ロード : バイナリの用意
リンク : バイナリをつなぎ合わせて実行可能な形へ
検証
準備
クラス、インターフェースの初期化 : static フィールド(クラス変数)の初期化はここで
インスタンスの初期化 : インスタンス変数の初期化はここで。デフォルト値へ初期化される.
その後,コンストラクタ内に書いてある通りに(再)初期化.

class Hoge{
Hoge tako;
Hoge(Hoge i_hoge){
// this の他のコンストラクタがあれば呼ばれる。
// super のコンストラクタが呼ばれる。
//インスタンス変数のデフォルト値への初期化

//コンストラクタ内での(再)初期化
tako = i_hoge;
}
}
900デフォルトの名無しさん:2005/04/06(水) 18:53:15
JavaでXML文書を読み込んで、オブジェクトを生成し、
それをMapとかに入れたいのですが、参考になるサイトとか
ありますか?

●スキーマ例
<person>
 <name>John, Smith</name>
 <age>30</age>
 <address>
  <zip-code>123-456</zip-code>
  <city>Tokyo</city>
 </address>
</person>

●上のスキーマをオブジェクト化
class Person{
 String name;
 String age;
 Address address;
 :
 : 〜setter/getter〜
}

●それをHashMapなんかのコレクションに入れる

XMLBeansなどのサイトを見てるのですが、いまひとつ。。。
901デフォルトの名無しさん:2005/04/06(水) 19:09:31
>900
XMLBeansよりCommons-Digesterのほうがわかりやすいかも。
ttp://jakarta.apache.org/commons/digester/
902デフォルトの名無しさん:2005/04/06(水) 19:21:18
>>900
Relaxerとか
903デフォルトの名無しさん:2005/04/06(水) 21:16:50
単純にオブジェクトをXMLにしたいのならCommons Betwixtが楽
904デフォルトの名無しさん:2005/04/06(水) 21:18:37
オブジェクトとXMLとのリンクならJXPATHとかあのへんが細かく出来るな
905デフォルトの名無しさん:2005/04/06(水) 22:50:32
>>900
903に同意でBetwixtがお勧め。
何かサンプルでも出そうかと思ったんだけど、Googleってみたら山ほど
ヒットしたんで、そっちを参照してみ。

それにしても、暫く見ないうちに情報増えたな>JakartaCommons関連
前は攻略JakartaCommonsだけが頼りだったのに、ありがたい限りだ。
906デフォルトの名無しさん:2005/04/07(木) 01:29:46
>>854
メモリにやさしいとか分かりやすいでスコープを決めるな。
907デフォルトの名無しさん:2005/04/07(木) 01:33:28
>>889
ふつうC++を例にするだろ…なぜにPHP
908デフォルトの名無しさん:2005/04/07(木) 01:36:31
>>906
分かりやすいでスコープを決めればいいと思うんだけど
909デフォルトの名無しさん:2005/04/07(木) 01:38:08
>>908
age るような人にマジレスしないように。
910デフォルトの名無しさん:2005/04/07(木) 01:50:14
>>908
寿命の適切さでスコープを決めろ、と。
911デフォルトの名無しさん:2005/04/07(木) 08:09:10
>>910
金さん銀さんのスコープについて教えてください
912900:2005/04/07(木) 09:10:04
>>901,902,903,904,905
情報ありがとうございました。
BetwixtとDigesterを漁ってみます。

あと、その後自分でも調べたのですが、XMLで記述した設定を
プロパティとして簡単に得るフレームワークがあるんですね。
Jakarta Commons Configuration。
ttp://jakarta.apache.org/commons/configuration/
これはちょっとした設定をXMLに持つ時なんかに重宝しそうです。
913デフォルトの名無しさん:2005/04/07(木) 11:21:42

横軸がサイズで、S,M,L,LL・・・
縦軸が商品名で、A,B,C,D・・・

といった価格表がEXCELで作成されています。

ワークシートの下にプルダウンが横一列に並んでいて、1つ目でサイズ、2つ目で商品名、
3つ目で数量を選択すると合計額が表示されます。

中身はセルの値を単純に代入しているだけなんですが、これをWeb上で作成したいと
思っています。配列を使うんでしょうか?また、サンプルはどこかにありませんか?
914デフォルトの名無しさん:2005/04/07(木) 11:24:54
>913
スレタイ10回読みなおせ。
915デフォルトの名無しさん:2005/04/07(木) 11:39:01
間違えました。失礼。
916デフォルトの名無しさん:2005/04/07(木) 13:40:37
すいません、新人です。

JAVA swingでインプリメントができないんですが、仕様ですか?
                         ↓
public class sample extends JApplet //implements ChangeListener

(コメントにするとJAVAC通過)
917デフォルトの名無しさん:2005/04/07(木) 13:45:30
エラーメッセージをコピペする程度の労力を惜しまないで欲しい

インターフェースで宣言されているメソッドの実装ができてないと推測
918デフォルトの名無しさん:2005/04/07(木) 13:47:31
>>917
すいません。

sample.java:11: シンボルを解決できません。
シンボル: クラス ChangeListener
場所 : sample の クラス
public class sample extends JApplet implements ChangeListener
^
エラー 1 個
919デフォルトの名無しさん:2005/04/07(木) 13:48:35
public class sample extends JApplet implements ChangeListener

ずれてます。^はここです。                                ^
920デフォルトの名無しさん:2005/04/07(木) 13:49:21
また ずれてます
ChangeListener

です。
921デフォルトの名無しさん:2005/04/07(木) 13:52:03
importしてないだけじゃねえの?
922デフォルトの名無しさん:2005/04/07(木) 14:04:01
>>921
たぶん、それが正解。
923920:2005/04/07(木) 14:17:54
import javax.swing.*;
import javax.swing.event.*;

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

重複がいけないのでしょうか?
924ソース01:2005/04/07(木) 14:29:47
//import java.awt.*;
//import javax.swing.*;

import javax.swing.*;
import javax.swing.event.*;

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class sample extends JApplet //implements ChangeListener
{

JSlider Rslider;
JSlider Gslider;
JSlider Bslider;

int red = 255;
int green = 255;
int blue = 255;

925ソース02:2005/04/07(木) 14:31:03
public void init() {
/*JSlider slider = new JSlider();
slider.setPaintLabels(true);
slider.setPaintTicks(true);
slider.setMajorTickSpacing(10);
slider.setMinorTickSpacing(5);

getContentPane().add(slider , BorderLayout.NORTH);*/


Rslider = new JSlider(JSlider.HORIZONTAL, 0, 255, 255);
Gslider = new JSlider(JSlider.HORIZONTAL, 0, 255, 255);
Bslider = new JSlider(JSlider.HORIZONTAL, 0, 255, 255);

Rslider.setPaintTicks(true);
Gslider.setPaintTicks(true);
Bslider.setPaintTicks(true);
926ソース03:2005/04/07(木) 14:31:25
Rslider.setMajorTickSpacing(16);
Gslider.setMajorTickSpacing(16);
Bslider.setMajorTickSpacing(16);

Rslider.setMinorTickSpacing(4);
Gslider.setMinorTickSpacing(4);
Bslider.setMinorTickSpacing(4);

//Rslider.addChangeListener(this);
//Gslider.addChangeListener(this);
//Bslider.addChangeListener(this);

getContentPane().setLayout(new FlowLayout());

getContentPane().add(Rslider);
getContentPane().add(Gslider);
getContentPane().add(Bslider);

}
927ソース04:2005/04/07(木) 14:31:44
/*public void paint(Graphics g)
{
//Color clr = new Color(red, green, blue);
//g.setColor(clr);
//g.fillRect(150, 300, 100, 50);
}*/
928ソース05:2005/04/07(木) 14:32:55
/*public void stateChanged(ChangeEvent ce)
{
if(ce.getSource() == Rslider)
{
red = Rslider.getValue();
repaint();
}

if(ce.getSource() == Gslider)
{
green = Gslider.getValue();
repaint();
}

if(ce.getSource() == Bslider)
{
blue = Bslider.getValue();
repaint();
}
}*/
}
929デフォルトの名無しさん:2005/04/07(木) 14:35:16
>>923
Javaのバージョンが古いとか?
java -versionで結果を教えて
930デフォルトの名無しさん:2005/04/07(木) 14:36:50
よろしくお願いします
931デフォルトの名無しさん:2005/04/07(木) 14:37:51
>>923
やってみた。
> C:\test>javac sample.java
> sample.java:11: sample は abstract でなく、javax.swing.event.ChangeListener 内の
> abstract メソッド stateChanged(javax.swing.event.ChangeEvent) をオーバーライド
> しません。
> public class sample extends JApplet implements ChangeListener
> ^
> エラー 1 個

だって。
932デフォルトの名無しさん:2005/04/07(木) 14:39:20
>>931
stateChangedもコメントにされてるぞ
933デフォルトの名無しさん:2005/04/07(木) 14:40:42
>>932
いや、>>918 が言うように
> sample.java:11: シンボルを解決できません。
が出ない事が分ったので、それでOK。
934デフォルトの名無しさん:2005/04/07(木) 14:46:00
コメント全部外せば普通にコンパイル通るからなぁ

import javax.swing.event.ChangeListener; 入れるのは意味無いだろうし…
後はバージョンくらいしか思いつかないや
API からそれだけが無い状態なんてのはありえるのか?
935デフォルトの名無しさん:2005/04/07(木) 14:49:09
>>934
1.2 から javax.swing.event.ChangeListener あるし。

J2ME? って事はないよなぁ……
936デフォルトの名無しさん:2005/04/07(木) 14:55:48
>>930
とりあえずOSとJavaのバージョンだけでも教えてくれ
937デフォルトの名無しさん:2005/04/07(木) 15:04:09
狂ったトロイにピンポイントで消されたとか。
938デフォルトの名無しさん:2005/04/07(木) 15:40:40
>>936
Windows2000ProSp4 JDK1.2.4-08です
939デフォルトの名無しさん:2005/04/07(木) 15:47:16
まちがえた
java version "1.4.2_08"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_08-b03)
Java HotSpot(TM) Client VM (build 1.4.2_08-b03, mixed mode)
940デフォルトの名無しさん:2005/04/07(木) 15:51:01
コンパイル通ってもスライダが表示されないのです。
941デフォルトの名無しさん:2005/04/07(木) 15:57:49
問題が変わってるがな

先の質問「コンパイルできない」は解決したんだな?
942デフォルトの名無しさん:2005/04/07(木) 16:16:45
はい、できました。
>>934さんのようにコメントはずしましてやりました。
943デフォルトの名無しさん:2005/04/07(木) 16:24:16
すいません。
sunのSDKとDOS窓だったんで遅れてしまいました。
944デフォルトの名無しさん:2005/04/07(木) 16:51:36
新質問

先のプログラムでスライダが実行時に表示できません。マウスでクリックすると出ます。

よろしくお願いします。
945デフォルトの名無しさん:2005/04/07(木) 16:56:49
>>944
paintメソッド内で↓を呼び出す
super.paint(g);

もしくはpaintメソッドをオーバーライドしない
946デフォルトの名無しさん:2005/04/07(木) 16:57:53
新たな問題

値の取得もできません。
947デフォルトの名無しさん:2005/04/07(木) 16:59:38
>>945
ありがとうございます。
948デフォルトの名無しさん:2005/04/07(木) 17:04:15
ちょっとちらつきますけど、値の取得と描画できました。
みなさん、ありがとうございます。
949デフォルトの名無しさん:2005/04/07(木) 17:06:09
ところで>>954さんの言うオーバーライドしないってのが気になるのですが、どうやるのですか?
950デフォルトの名無しさん:2005/04/07(木) 17:22:33
新たな問題

上記ソースのコメントをはずし、super.paint();を追加すると、下部に四角く色が出ますが、スライダを止めると、
色も出なくなります。
951デフォルトの名無しさん:2005/04/07(木) 17:30:47
何でもかんでもここで聞けばいいってわけじゃないぞ?
952デフォルトの名無しさん:2005/04/07(木) 17:44:32
アプレットを一度も触ったことないので勉強ついでに 950 を再現してみた

描画順番がおかしくなってないかい?
多分 super.paint() ではアプレット全体の再描画が行われてるっぽい
色箱の描画 → super.paint() だと、折角書いた物を上書きすることになる

というかこの状態、ちょっとどころのちらつきじゃ無いぞ
現象みて何が起こってるのか考えながら進めてみようよ
953デフォルトの名無しさん:2005/04/07(木) 17:44:44
すんませーん。
954デフォルトの名無しさん:2005/04/07(木) 17:45:24
>>951
955デフォルトの名無しさん:2005/04/07(木) 17:46:07
>>952
はい、わかりました。
956デフォルトの名無しさん:2005/04/07(木) 17:48:18
>>952
できました。
super.paint(g);をpaint(略)の一番上につけたらできました。
ありがとうございます。
957デフォルトの名無しさん:2005/04/07(木) 17:50:39
若干のちらつきは残りますねえ。
これからの課題にします。
958デフォルトの名無しさん:2005/04/07(木) 18:02:28
あの、あるオブジェクトを普通に読み書きしてる時に、特に排他処理を行う事なく
そのオブジェクトをwriteObjectとかでファイルとかに書き込みした場合、書き込まれた
データは不正な状態になったりするんでしょうか?。書き込みした時点に近い範囲でのスナップショットであれば
正常なデータが書き込まれている限り、自分としては別に問題はないのですが。
どなたか教えて下さい。orz
959デフォルトの名無しさん:2005/04/07(木) 18:09:54
>>958
そのオブジェクトが他で使用されてるか、とかによる。
960958:2005/04/07(木) 18:21:24
>>959
といいますと?。他スレッドでとかいう事でしょうか?
961デフォルトの名無しさん:2005/04/07(木) 23:11:25
ちょっとスレ違いかもしれませんが・・・質問させてください。
LinuxでJAVAの勉強をしようとしているのですが、
作ったswingコンポーネントの文字が文字化けしてしまってうまく表示されません・・・
文字化けしないようにするには、どうすればいいでしょうか?
962デフォルトの名無しさん:2005/04/07(木) 23:16:32
>>961
javac -encoding xxx Foo.java でソースの文字コードを指定、とか?
963デフォルトの名無しさん:2005/04/07(木) 23:18:48
>>962
レスありがとうございます。
最初Windowsで作ってたソースなんですが、
Linuxに移した時に、nkfでeucに変換しました。
eucじゃダメなんでしょうか・・・?
964デフォルトの名無しさん:2005/04/07(木) 23:19:53
>>961
フォントが設定されてないとか?
965デフォルトの名無しさん:2005/04/07(木) 23:22:41
>>964
フォントが設定されていないとは・・・
メニューバーのアイテムにsetFontで・・・って事ですか?
setFontはしてないですね・・・
それが原因でしょうか?
ちょっとソース書き換えてみます。ありがとうございました
966デフォルトの名無しさん:2005/04/07(木) 23:35:46
>>965
そうじゃなくて、font.properties.ja とか、その辺。
1.5からやり方かわったんだっけ?

WindowsだとMSゴシックとか消さない限り標準で入ってるけど、
Linuxだとディス鳥によってフォントが入ってなかったり、
フォントが置いてあるディレクトリが違ったりするので、その設定ね。
Swingは自前でフォント描画するのでOSとかX86での設定とは無関係に、
フォント設定してやらんといかんのよ。
967デフォルトの名無しさん:2005/04/07(木) 23:54:05
DOMで読み込んだXMLのテキストで 〜 や − が含まれると ? に変換されてしまいます。
何をすればこのような文字化けを回避できるのでしょうか?
ただし、Eclipse上で実行すると平気です。コンソールから実行すると上記のようになってしまいます。
どなたか教えて頂けたら幸いです。
968デフォルトの名無しさん:2005/04/08(金) 00:00:20
MS932とShift_JISの違いでしょう>>967
969デフォルトの名無しさん:2005/04/08(金) 00:19:48
>>966
あ・・・そういう根本の設定ですか・・・
うーん、フォントは入ってるのは確かですが、
場所が違うんで文字化けしてるんでしょうね・・・
どうやって設定するんだろう・・・_| ̄|○
調べてみます、ありがとうございました
970デフォルトの名無しさん:2005/04/08(金) 00:44:30
>>968
どのような手段をとれば良いのでしょうか?
971デフォルトの名無しさん:2005/04/08(金) 00:52:00
>>970
現在のコードかいてもらわんと
972デフォルトの名無しさん:2005/04/08(金) 00:59:37
やった!
やっと文字化けせずに日本語が表示できるようになりました!
>>966さん、すごい参考になりました。
1.5からやり方が違いましたが、font.properties.jaからいろいろ辿りました・・・
こんな所で躓くとは・・・
Javaの勉強どころじゃなかった、今日は寝よう_| ̄|○
973デフォルトの名無しさん
>>972
オツカレ