【初心者】Java質問・相談スレッド111【大歓迎】at TECH
【初心者】Java質問・相談スレッド111【大歓迎】 - 暇つぶし2ch1:デフォルトの名無しさん
08/01/13 00:25:22
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。URLリンク(pc10.2ch.net)

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
URLリンク(www.wikiroom.com)
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

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

前スレッド
【初心者】Java質問・相談スレッド110【大歓迎】
スレリンク(tech板)

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝のう存じます。

次スレは>>980あたりで。

2:デフォルトの名無しさん
08/01/13 00:34:43
ニダ。

3:デフォルトの名無しさん
08/01/13 00:35:32
   ∧  b
  /●ヽ/
 (∧_∧)  / ̄ ̄ ̄ ̄ ̄
 ( ´∀`)< しねよおめーら
 (    )  \_____
 | | |
 (__)_)

4:デフォルトの名無しさん
08/01/13 00:46:56
>>スレリンク(tech板:987番)

2つめの質問について。
(5)です。
URLリンク(www.javainthebox.net)
とか、"Java 可変長引数"あたりのキーワードで調べれば?

1つめの質問について。
ちゃんと調べてないけど、コンパイル段階で
> それ1つだけ
になってるんじゃ?つまり検索は発生しない。


5:987,993
08/01/13 01:12:58
>2つめの質問について。
>(5)です。
>URLリンク(www.javainthebox.net)
>とか、"Java 可変長引数"あたりのキーワードで調べれば?
>
>1つめの質問について。
>ちゃんと調べてないけど、コンパイル段階で
> それ1つだけ
>になってるんじゃ?つまり検索は発生しない。

「それぞれ1つだけ書いたら」というのは、その時は
method("str2");で、(1)(3)(4)のどれもが呼ばれますよね、
シグナチャとしてはマッチしてますよね、
ということの単なる確認(思考実験)です。
実際には(1)(3)(4)をオーバーロードメソッドとして書いて、
(1) public void method(String... s) {}
(3) public void method(String s) {}
(4) public void method(String s,int... i) {}
それからmethod("str2");します。
その時(1)が呼ばれるらしい事は分かっているのですが、
じゃ、(1)を削ったら(3)(4)どっち?と。
で、そもそもどういう検索順なの?と。
という事なんです(^^;

--
リンクは、見てみました(どうもありがとうございます)が、
第一引数から可変長をアーリーアクセス扱いの時期の
記事のようで・・・
可変長引数のあるオーバーロードメソッドの検索順の定義
までは追求なさってないようでした。


6:987,993
08/01/13 01:18:51
それと書き忘れましたがsuperからの継承かどうかも関係あるのかも・・・
というのもわかってません(^^;


7:デフォルトの名無しさん
08/01/13 03:14:35
質問です
文字列から数字だけを取り出そうとすると

at java.long.Integer(Integer.java …) ってエラーがでます。


ボタンが押されたらサイトにアクセスしてhttpの文字列から数字だけを取り出すプログラムです

8:デフォルトの名無しさん
08/01/13 03:20:22
質問です、で始めるなら何を聞きたいか明確に述べなさい。

9:デフォルトの名無しさん
08/01/13 04:09:48
質問です。
いつになったらsunは符号なし整数を使えるようにしてくれますか?
バイナリデータ扱うとすごく大変です。

10:デフォルトの名無しさん
08/01/13 04:10:14
>>5
URLリンク(www-06.ibm.com)
の39ページ。
大本に当たりたいのなら
URLリンク(jcp.org)

> その時(1)が呼ばれるらしい
いや(3)。>>4の説明を読んで何故(1)だと思うの?

11:デフォルトの名無しさん
08/01/13 07:22:24
NodeList を for でまわしてノード参照しながら、そのうちの特定のノードを削除とかすると
NodeList の長さが変ったりするバカ仕様は何なの?

12:デフォルトの名無しさん
08/01/13 07:38:07
>>11
1999 年頃だったかな。IBM の何とかという日本人 (後に AlphaWorks に逝った) が Java の
お勉強に作った xml4j と言う XML パーサがデファクトスタンダードとして世に広まってしまって、
その頃からそういう動きだったよ。その後 Apache に引き継がれ Xerces と名を変え、今の
JDK の標準 XML 実装として使われている。だから XML 関連 API の C 臭さ、使いにくさ、
挙動の不自然さ全てこの日本人のせい。

13:デフォルト
08/01/13 09:35:55
javaのプログラマになったらどんな仕事がありますか?

14:デフォルトの名無しさん
08/01/13 09:47:44
>>13
仕事してません><

15:デフォルトの名無しさん
08/01/13 11:11:52
バイナリデータと整数の符号の有り無しの相関関係がわからない

16:デフォルトの名無しさん
08/01/13 12:12:14
一番上のビットが+/-に使われるか使われないかの違い。
情報工学の本見れば必ず書いてある。

17:デフォルトの名無しさん
08/01/13 13:42:15
それは知っているけど、なんで大変なの?

18:デフォルトの名無しさん
08/01/13 13:50:23
byte の負値が暗黙変換で int に格上げされると上位 3 バイトのビットが全て立ってしまう
(例: 0x80 → 0xFFFFFF80)。そのままビット論理和やビット論理積取ると想定外の結果に
なるから、byte → int 格上げ時には必ず 0xFF でマスクしてやる必要がある。
だがこれを忘れてもコンパイルは通るし、負にならない限りは正しく動いてしまうからちょっと厄介。

19:デフォルトの名無しさん
08/01/13 13:55:28
実行時バグの追跡はしんどいからな

20:デフォルトの名無しさん
08/01/13 13:59:14
学校のjavaの課題むずい…

21:デフォルトの名無しさん
08/01/13 14:07:02
>18
普通はbyteのままでやるもんじゃないのか?

22:987,993
08/01/13 14:10:39
>10
ありがとうございます!
確かに・きっちり一致・autoboxing・可変長引数の順に拡張して
探していくとありますね。langspec-3.0.pdfの本ネタの方にも
phase1,2,3で上記検索をしていくことが
15.12.2 Compile-Time Step 2: Determine Method Signatureに
書いてありました。助かりました!


23:987,993
08/01/13 14:12:00
そもそも私がおかしいと思って質問したのは、actualtests(笑)に
QUESTION: 118
class Alpha {
public void foo(String... args)
{System.out.print("Alpha:foo ");}
public void bar(String a)
{System.out.print("Alpha:bar ");}
}
class Beta extends Alpha {
public void foo(String a)
{System.out.print("Beta:foo ");}
public void bar(String a)
{System.out.print("Beta:bar ");}
public static void main(String[] argv) {
Alpha a = new Beta();
Beta b = (Beta)a;
a.foo("test");b.foo("test");
a.bar("test");b.bar("test");
}
}
answer:
Alpha.foo Beta.foo Beta.bar Beta.bar
とあったからです。
Alphaのfooはstaticじゃないです。煙が出るほどみましたから(笑)。


24:987,993
08/01/13 14:13:16
おかしいおかしいと考えていて、langspec-3.0.pdfも見ましたが
今回みたいにここの個所しか定義の記述がある分けないというところまで
たどり着けないでいました。
ありがとうございます。
これは、一般化すると仕様の読みが足りないだけなので、
wikiはいいですよね。actualtests警告という事はあるかもですが。
ほんとうにありがとうございます。


25:デフォルトの名無しさん
08/01/13 14:17:40
>>21
byte 対 byte のビット論理演算は int。まぁ大抵はシフト演算 + ビット論理演算で併せて使うから、
想定外のところのビットが立ってるとおかしな結果になる。

一般的なのだと 4 バイト整数のバイトオーダー変換とか、8 ビットバイトバイナリを 6 ビットずつ
整数化するような処理考えてみ。

26:987,993
08/01/13 14:18:45
引用した035-055のQ118のactualtestsバージョンは070507でした。


27:デフォルトの名無しさん
08/01/13 16:49:09
>>21
バイナリ演算のつもりでやってても、式中で暗黙に int へ変換されてたりしてハマる事は結構多い。
バイナリをいじるコードを書くときは、しつこく ( b & 0xff ) と書いておいた方が無難。


というか、普通にこれはJavaの言語仕様が腐ってると思うんだけど、こういう仕様である必然性って何かあるのかね。

28:デフォルトの名無しさん
08/01/13 16:52:33
何でこんな仕様なの? と疑問に思ったら BugParade で検索するとすっきりする。
余計にモヤっとすることの方が多いかも知れんが。

29:デフォルトの名無しさん
08/01/13 19:05:30
URLリンク(java-house.jp)

30:デフォルトの名無しさん
08/01/13 19:10:00
int a=Integer.valueOf(str).intValue() が使えないんですけどどうすればいいですか?

31:デフォルトの名無しさん
08/01/13 19:41:46
>>30
1. 文末にセミコロンが入っているかチェック。
2. str に正しい値が入っているかをチェック。
3. a を正しく使用しているかチェック。

つーか valueOf(String).intValue() とかやるくらいなら parseInt() 使え。

32:デフォルトの名無しさん
08/01/13 19:50:00
>>29
それって、Cでバッドノウハウが使えちゃうことを説明しているだけで、
Javaで警告すら出ない理由にはなってないような・・・。

33:デフォルトの名無しさん
08/01/13 20:18:29
>>32
何に対してどういう警告を出せと言ってるの?


34:デフォルトの名無しさん
08/01/13 20:24:52
それを言われると確かに困るが・・・

35:デフォルトの名無しさん
08/01/13 21:10:21
Cから初めて、今Javaやってるのですが
クラスやら継承やらが、複雑で…というか
スパゲッティプログラムになりやすい?じゃヴぁって


なんか、.がつくたびに、クラス見て戻って先に進めない。疲れる

36:デフォルトの名無しさん
08/01/13 21:34:03
そりゃCでも構造体とか関数使いまくれば一緒じゃ?

37:デフォルトの名無しさん
08/01/13 21:45:32
>>35
一般的にはJavaのほうがスパゲッティになりにくい。
>>35が書きづらく思ってるのは単に慣れてないだけ。

下の方は、EclipseなりNetBeansなりでコードアシスト使えばいい。

あと、文面からしてクラスや継承を使いすぎてる感じがする。
必要のないところにまでそういう機能を使う必要はない。
Cからの人なら、最初はC的に書いて、徐々にOOPに置き換えていけば一番楽だと思う。

38:デフォルトの名無しさん
08/01/13 21:48:03
jarの中からjarが置かれているディレクトリを取得するにはどうすれば良いでしょうか

new File(".").getAbsoluteFile();
で取得出来ると思っていたのですが
cd /hoge
/usr/java/jrexxx/bin/java -jar /usr/local/XXX.jar
で取得出来たのはカレントディレクトリの/hogeでした・・・。

39:デフォルトの名無しさん
08/01/13 22:09:34
できないので諦めろ

40:デフォルトの名無しさん
08/01/13 22:16:27
>>39
ありがとうございます
System.getProperty("java.class.path")から無理やり取るか思案中です。
それとも.shとか.batとか用意してjarと同階層から起動すれば良いのか・・・鬱だ。

41:デフォルトの名無しさん
08/01/13 22:18:28
すみません。2回目の質問です。

現在googleカレンダーのjava用apiを勉強しているのですが、ライブラリのimport
ができなくて困ってます。
コンパイルの際、必要なjarファイル(gdata-client-1.0.jarとgdata-calendar-1.0.jar)
はちゃんと指定してるつもりですがimportしたパッケージが存在しませんというエラー
が出てコンパイルが出来ません。

(コンパイルのコマンド)
javac -classpath /home/~/gdata-client-1.0.jar:/home/~/gdata-calendar-1.0.jar GCAccessor.java
(エラーメッセージ例)
パッケージcom.google.gdata.dataは存在しません
・・・

開発環境はOSはVineLinux4.1、jdkは1.6.0_03です。
ちなみに同じコードをwindowsでやった場合はコンパイル・実行できましたが
linuxではコンパイルすらできません・・・。

ネットでいろいろ調べたのですが、原因が分かりませんでした・・・。
ここなら詳しい方がいそうなので、どなたか原因の分かる方教えていただけないでしょうか?

42:デフォルトの名無しさん
08/01/13 22:21:26
>>37-38
ありがとー
今、入門書系を片手に、チマチマサンプル弄くってる。

どうも、Cで慣れすぎてて。
privateやらそこらは理解できたけど、継承やらのところでウワー、うぜーとおもて

43:デフォルトの名無しさん
08/01/14 01:05:22
>>38
System.out.println(MyClass.class.getResource(MyClass.class.getName().replace('.', '/')));

44:ぽっぽ
08/01/14 01:25:11
入力ストリームですが、

BufferedReader rd = new BufferedReader(new InputStreamReader(System.in,1));  //第二引数のバッファサイズを1で指定

String str = rd.readLine();
System.out.println(str);  //strの内容を表示

↑の文で入力した内容を表示させたとします。
で、一行目でバッファのサイズを1で指定してるので、
1文字しか読込めないプログラムになったと思うのですが、
最後のprintで確認すると入力した分がそのまま表示されます。

バッファサイズが1なので abcdefg と入力すると
a だけが表示されると思ったのですが、何か理解が間違ってますか?

45:デフォルトの名無しさん
08/01/14 01:28:52
間違ってます。
バッファサイズを何だと思ってるの?

46:デフォルトの名無しさん
08/01/14 01:39:35
>>44
バッファサイズというのは一度に読み込める量を決めるもので、それを超えて読み込めない
という制限をつけるものではない。

100 バイトのデータ読むのに 5 バイトのバッファを用意すれば 20 回も I/O が発生して
効率が悪いが、100 バイトのバッファなら 1 回で読み込める。逆に 1000 バイトのバッファは
使わないメモリ 900 バイト分の無駄。

47:デフォルトの名無しさん
08/01/14 01:43:31
>>44
str を洗濯機、入力した文字列を風呂の残り湯、
バッファサイズをバケツの容量と考える。
洗濯に必要な水が30リットルだったとする。
これに対してバケツの容量は5リットルだとしよう。

さて、君はあきら君にバケツを使って
洗濯機に風呂の残り湯を汲み移すように言いつけた。
バケツで5リットルしか汲めないので、
あきら君は洗濯機には5リットルを移して作業を完了した。

あきら君の仕事に満足できないと思えるなら
1文字だけ読み込むという動作が正しくないと理解できるはず。

48:デフォルトの名無しさん
08/01/14 01:47:17
いや、あきら君はポンプを使うべきだ。

49:デフォルトの名無しさん
08/01/14 01:49:02
>>48
それを言うなら、
仕事はあきら君ではなくポンプに行わせるべきだ
じゃね?

50:ぽっぽ
08/01/14 01:50:35
なるほど・・・。
strに格納できる文字数の上限かと誤解してました。
先輩方ありがとうございます。

51:デフォルトの名無しさん
08/01/14 01:53:33
>>47
質問者の期待する結果から違ってるんだからそんな例は意味がない。

52:デフォルトの名無しさん
08/01/14 02:41:07
>>50
ソースを使え、ルーク。

53:デフォルトの名無しさん
08/01/14 07:47:24
>>11
NodeListってDOMの?
それならDOMのNodeListはライブオブジェクトだから。
変更はすぐさま反映される。そういう仕様。

54:デフォルトの名無しさん
08/01/14 08:10:45
>>53
XPath で取得した NodeList では反映さないので、仕様として甘いといわざるをえんがな。

55:デフォルトの名無しさん
08/01/14 08:25:51
それ実装の問題

56:デフォルトの名無しさん
08/01/14 08:52:56
DOM の状態が変る or ノード取り出すたびに XPath 評価しなおして反映させるのが
現実的なわけないんだから、NodeList を live とした時点で仕様が破綻してるのも分からんのか。

57:デフォルトの名無しさん
08/01/14 08:55:10
DOMだったら反映させても非現実的にはならんと思うけど。

58:デフォルトの名無しさん
08/01/14 08:59:13
ん、ひょっとして XPath がどれだけ遅いかご存知でない?

59:デフォルトの名無しさん
08/01/14 09:03:52
W3Cに文句言えよ。バカじゃないの?

60:デフォルトの名無しさん
08/01/14 09:04:01
XPath使ってない場合の話

61:デフォルトの名無しさん
08/01/14 09:19:12
暴れるだけだからバカの相手はしなさんな

62:デフォルトの名無しさん
08/01/14 09:23:09
>>59
仕様の問題か実装の問題かで何でいきなり W3C までエスカレーションすんだよw アホ?

63:デフォルトの名無しさん
08/01/14 09:33:14
W3C って API やらスキーマだけ規定して オナヌー してるところでしょ。
「俺たちは崇高な活動家。ありがたい API 作ってやったから勝手に
実装して使っとけ。実装側から提案なんてありえないw」 臭がとても強いところ。

64:デフォルトの名無しさん
08/01/14 09:46:46
あそこは今は大手 IT 企業のアーキテクト連中の肩書きアップの場になってる。
キャリア官僚が省庁や特殊法人渡ってるのとよく似てる。

65:デフォルトの名無しさん
08/01/14 11:02:17
うろ覚えの記憶なので恐縮ですが
メソッドだか関数だかに変数を引数として渡した時、
呼び出し先でその引数に変更を加えることで、元の変数も同様に変化させるには
どうすれば出来たんでしたっけ。戻り値を使ったわけではなかったと思います。

66:デフォルトの名無しさん
08/01/14 11:11:09
>>65
可変オブジェクトを、複製せず、そのままメソッドに渡せば良い。

67:デフォルトの名無しさん
08/01/14 11:18:07
リターンバッファという奴です。

68:デフォルトの名無しさん
08/01/14 12:51:57
>>67
それってもしかして、CやC++のポインタに相当する?

69:デフォルトの名無しさん
08/01/14 12:53:49
Jtableにて1列のみクリック不可(選択編集不可)にしたいんですが、
どうすればいいでしょう?

70:デフォルトの名無しさん
08/01/14 13:11:47
>69
JTableModel#isCellEditable

71:デフォルトの名無しさん
08/01/14 13:35:54
>>66-67
ありがとうございます。
一般的に参照渡しって言われるようなものですね。

72:デフォルトの名無しさん
08/01/14 13:41:24
>>70
早速のレスありがとうございます。

JTableModel#isCellEditable

とは、TableModeインターフェイスのisCellEditableを使えということでしょうか?
isCellEditableメソッドを調べますと
rowIndex、columnIndex に位置するセルが編集可能な場合に true を返します。
と出てきました。

import java.awt.*;
import javax.swing.*;
class JTableTest extends JFrame {
JTableTest() {
getContentPane().setLayout(new FlowLayout());
JTable tb = new JTable(3, 3);
tb.setValueAt("あああ", 0, 0);
tb.setValueAt("いいい", 1, 1);
tb.setValueAt("ううう", 2, 2);
JScrollPane sp = new JScrollPane(tb);
sp.setPreferredSize(new Dimension(230, 80));
getContentPane().add(sp);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("JTableTest");
setSize(250, 120);
setVisible(true);
}
public static void main(String[] args) {
new JTableTest();
}
}
とした場合 A列を、選択編集クリックすべて不可にしたいのですが、どうすればいいでしょうか?

73:てきとう
08/01/14 13:44:09
JTable tb = new JTable(3, 3){
  public boolean isCellEditable(int r, int c){
    return (r != 0);
  }
};


74:デフォルトの名無しさん
08/01/14 13:59:30
>>73様 レスありがとうございます。

JTable tb = new JTable(3, 3);

JTable tb = new JTable(3, 3){
    public boolean isCellEditable(1,1){
        return (1 != 0);
    }
};

と変えてみましたがコンパイルエラーになってしまいました。
以下エラーメッセージ
JTableTest.java:9: 型の開始が不正です。
public boolean isCellEditable(1,1){
    ^
JTableTest.java:11: <identifier> がありません。
}
^
エラー 2 個

しつこくて申し訳ありませんが、よろしくお願いします。

75:てきとう
08/01/14 14:03:59
まちがえたw JTable のメソッドじゃねーやハズカピー

JTable tb = new JTable(new DefaultTableModel(3, 3){
  boolean isCellEditable(int row, int column){
    return (column != 0);
  }
});


76:デフォルトの名無しさん
08/01/14 14:05:16
>>74
(思わずカエレ!!と言ってしまいそうになる)

それは無名クラスの定義文です。
内部クラス > 無名クラス(途中)
URLリンク(www.javaroad.jp)

>>75
有るにはありますが、挙動に注意です。

77:デフォルトの名無しさん
08/01/14 14:25:38
>>75
>>76

どうもありがとうございました
とても勉強になりました。

78:デフォルトの名無しさん
08/01/14 18:26:56
javaのとっかかりで
GUIを作りながら勉強できるサイトとかありますか?

79:デフォルトの名無しさん
08/01/14 18:39:59
>>78
URLリンク(java.sun.com)
日本語版ってあるんだっけ…?



80:デフォルトの名無しさん
08/01/14 18:44:24
出来れば日本語で
ほんとの初心者向けのが助かります

81:デフォルトの名無しさん
08/01/14 19:15:31
創るJavaじゃね?

82:デフォルトの名無しさん
08/01/14 19:24:31
>>81
宣伝乙。どこにGUIの話が載ってるの?
URLリンク(book.mycom.co.jp)

83:デフォルトの名無しさん
08/01/14 19:52:56
GUIなら最近java6対応の本が出てたな。

84:デフォルトの名無しさん
08/01/14 19:58:44
NetBeansでつくって学ぶ Java GUI & Webアプリケーションと書いてあるが?

85:デフォルトの名無しさん
08/01/14 20:24:46
教えて下さい

コマンドプロンプトでjava -version 入れたら
Error: could not open `C:\Program Files\Java\j2re1.4.2_16\lib\i386\jvm.cfg'
こんなエラーが表示されます。
J2SDKを1.4.2.16→1.4.2.10と変えたらこんな事に・・・
どうすればよいのやら・・・

86:デフォルトの名無しさん
08/01/14 20:39:04
>>85
たぶん環境変数の問題だと思うけど、
取り敢えずコントロールパネルの中の"Java"を起動してみて
期待する設定になってるか見てみたら?

87:デフォルトの名無しさん
08/01/14 20:44:53
というか1.4.2の最新って1.4.2.14くらいじゃなかったけ?


88:デフォルトの名無しさん
08/01/14 20:45:35
ああ、バージョンダウンしたのか。

89:デフォルトの名無しさん
08/01/14 20:57:15
>>86
コントロールパネルにJava Plug-in があって
それ起動しようとしたらエラー・・・

>>88
バージョンダウンです

90:sage
08/01/14 21:11:26
うぅぅぅ
the time zone update file
がダウンロードできない(T_T)

Welcome xxx | Logout
[continue]

先に進まない

91:デフォルトの名無しさん
08/01/14 21:14:05
前のバージョンをアンインストールして再インストールする方をクリーンインストール。
たぶん、ごみが残るからごみは手動で消す。

92:デフォルトの名無しさん
08/01/14 21:14:39
>>89

93:デフォルトの名無しさん
08/01/14 21:57:17
>>91
85です。解決しました。

1_4_2_10や1_4_2_16はうまくいかなかったです。
なぜうまくいかないのか今はわかりません。今後調べてみます。


ひとまずアンインストールを行った後、1.5.0_14をインストールし、
ユーザ環境変数のみ
PATH
C:\Program Files\Java\jdk1.5.0_14\bin
に設定して、
javac
java -version
の確認がとれました。
ありがとうございました。

94:デフォルトの名無しさん
08/01/14 22:04:27
java_home設定しといた方が良いよ。

95:デフォルトの名無しさん
08/01/15 04:51:51
Stringで受け取った文字列に対しての色変更はどのようにしたら良いのでしょうか?


96:デフォルトの名無しさん
08/01/15 04:56:49
>>95
・Stringには色はありません。
・標準入出力には色を付けられません。
・Graphics.setColorを使えばいいと思うよ。
・何十回も質問を読み直してから来ればいいと思うよ。

97:デフォルトの名無しさん
08/01/15 05:06:32
なんというおもしろ質問

98:デフォルトの名無しさん
08/01/15 06:24:40
>>95
勘で。
スレリンク(tech板:354番)


99:デフォルトの名無しさん
08/01/15 07:22:05
javaはコンソール制御できないからなぁ。

100:デフォルトの名無しさん
08/01/15 07:24:22
そういや一応、Cursesはあるよね。

101:デフォルトの名無しさん
08/01/15 07:28:53
エスケープシーケンスでできんじゃね? NT 系のコマンドプロンプトでできなくなったんだっけ?

102:デフォルトの名無しさん
08/01/15 07:59:24
できない

103:デフォルトの名無しさん
08/01/15 09:50:35
double/doubleを小数点以下第一位まで表示するにはどのようにすればいいのでしょうか??

104:デフォルトの名無しさん
08/01/15 10:25:54
formatでいんじゃね

105:デフォルトの名無しさん
08/01/15 10:35:26
URLリンク(www.hcn.zaq.ne.jp)
ここのシューティングのJAVA版が動かないんですが。どうしたら動きますか?


106:デフォルトの名無しさん
08/01/15 12:13:48
作った人に聞く

107:デフォルトの名無しさん
08/01/15 12:53:22
MozillaParserを使い始めたんですが
クイックスタートに載ってる

File parserLibraryFile = new File("./native/bin/MozillaParser" + EnviromentController.getSharedLibraryExtension());
String parseLibrary = parserLibraryFile.getAbsolutePath();
MozillaParser.init(parseLibrary, "C:\\dapper\\mozilla\\dist\\bin");
Document domDocument = MozillaParser.getInstance().parse("<html>Hello world!</html>");
MozillaParser.getInstance().stopRunning();

がうまく動きません
Pathなどは通してありMozillaParserそのものは呼び出せますが
メソッドが呼び出せません

ひょっとして仕様変ってますか

108:デフォルトの名無しさん
08/01/15 12:56:55
エラーメッセージは?

109:デフォルトの名無しさん
08/01/15 13:21:59
SE 6 で JavaScript 使えるようになったことだし、そろそろ PDA のフルブラウザ程度の
標準 GUI コンポーネント作れよというチラ裏。

110:デフォルトの名無しさん
08/01/15 13:37:25
つJavaFX Mobile

111:デフォルトの名無しさん
08/01/15 13:48:40
>>12
NodeListの動作はW3C DOMが決めているものだから、xml4j云々は関係な
いでしょ。W3C DOMの仕様だって、IEとMozillaのJavaScript DOMの挙動
を明確化するところから始まったものだし。



112:デフォルトの名無しさん
08/01/15 15:17:41
java初めて1ヶ月の初心者です。
エクリプスで普通に実行できるプロジェクトが、DOSからjreで起動しようとするとシンボルが見つかりませんエラーを頻発するのは何が原因と考えられますか?
ちなみにjavacをやっても、同じ数だけ、クラスが見つからないよエラーが出ます。

113:デフォルトの名無しさん
08/01/15 15:20:11
クラスパス関連

114:デフォルトの名無しさん
08/01/15 16:05:05
URLリンク(www.uploda.net)
サンプルみながら弄くってるのですが

ボタン押したら終了するようなのって
このソースのどこら辺をどう変えたらいいですか

115:デフォルトの名無しさん
08/01/15 16:10:00
>114
jframe.setDefaultCloseOperation(jframe.DO_NOTHING_ON_CLOSE);
JavaDoc、JFrameのsetDefaultCloseOperationの項目を嫁

116:デフォルトの名無しさん
08/01/15 16:10:54
actionPerformed の中でイベント e.getSource() が終了ボタンかどうかを判定して
終了ボタンなら終了動作をすれ

117:デフォルトの名無しさん
08/01/15 16:17:12
>>actionPerformed の中でイベント e.getSource() が終了ボタンかどうかを判定して
すんません、どうやって判定するんですか

118:デフォルトの名無しさん
08/01/15 16:17:37
==

119:デフォルトの名無しさん
08/01/15 16:49:14
ネットで既にあるアプリケーションのサンプル、ソースを見ると
Main.java A.java B.java のようにクラスごとにファイルを分割しているもの
見るのですが、どのように分割したファイルを関連付けすればいいのでしょうか

例えばMenuItem等の基本的機能を実装したMain.javaに、
JTreeを実装したA.java、TextAreaを実装したB.javaを追加するような形です

120:デフォルトの名無しさん
08/01/15 16:52:03
同じパッケージ (同じディレクトリに保存してある) なら何もしなくても使えるだろ。

121:デフォルトの名無しさん
08/01/15 16:57:19
すみません、表現がおかしかったですね
・MainでMainメソッド等を作った
・A,BでMainメソッド込みで必要な機能をそれぞれ作った
 ↑
 これをMainに関連付けるにはどうしたらいいのでしょうか

122:デフォルトの名無しさん
08/01/15 17:00:46
↓エスパー求む

123:デフォルトの名無しさん
08/01/15 17:01:32
すみませんが、質問です。
intの配列を、リストに変換するライブラリはないでしょうか?
commons にありそうな気がするのですが。

Arrays.asList() を使ったのですが、
intの配列だと、配列全体を一要素とするリストができてしまいます。
java.util.Arrays.asList(new int[]{1,2,3})
=> (java.util.Arrays$ArrayList<E>) [[I@18f6235]

Integerの配列なら、そのままリストに変換されるのですが。
java.util.Arrays.asList(new Integer[]{1,2,3})
=> (java.util.Arrays$ArrayList<E>) [1, 2, 3]


124:デフォルトの名無しさん
08/01/15 17:04:21
なんか最近質問も回答もひどいな。

125:デフォルトの名無しさん
08/01/15 17:11:56
>>123
一発変換じゃないけど、commons lang の
Integer[] org.apache.commons.lang.ArrayUtils#toObject(int[])
とかで、いったんInteger[]に変換してからArrays#asList()で変換するとか。

126:デフォルトの名無しさん
08/01/15 17:14:33
>>121
「関連付ける」っていう表現がJava歴12年の私によくわからない。
何を心配しているのだ?


127:デフォルトの名無しさん
08/01/15 17:15:42
List<Integer> list = new ArrayList<Integer>();
for(int i: array){
  list.add(i);
}

なぜこの程度のコードのために非標準ライブラリを使おうとするんだ?

128:123
08/01/15 17:27:31
>>125
おお、これでOKです!ありがとうございます。
URLリンク(commons.apache.org)(int[])

>>127
まあループをなるべく書かないのがポリシーなのだと思ってください。
LISPで再帰せずにmapを使うようなものです。
commons-langは、まずどんなプロジェクトでも使わないことはないし。

129:123
08/01/15 17:39:13
趣味じゃなくて実用の話をすると、これは配列の中身をログに書き出すために、
リストに変換したかったのです。配列#.toString()と違い、List#toString()は
各要素を出力してくれますので。

ロギングのためにわざわざループを書いたり、その後使うあてのない諸々の変
数を宣言したりするのは煩雑ですが、これなら一行ですみます。

log.debug("x = " + Arrays.asList(ArrayUtils.toObject(xarray)));


130:デフォルトの名無しさん
08/01/15 17:41:35
それは十分趣味だと思うが。

131:デフォルトの名無しさん
08/01/15 17:51:26
>>129
そーゆー用途なら java.util.Arrays#toString(int[]) でも良いのでは?
もっとも、1.5以上じゃないと使えないけど。

132:デフォルトの名無しさん
08/01/15 18:05:40
final
static final
static

の使い分けがわかりません。

final float TEST = 1.0f;
static final float TEST = 1.0f;
static TEST = 1.0f;

どういう状況・どういう時に使い分けるのですか?

133:デフォルトの名無しさん
08/01/15 18:13:45
>>132
メンバ変数の話だとすると、
final
変更できないメンバに付ける。コンストラクタで初期化することはで
きるので、あるインスタンス内でのみ有効な実行時定数として使う
static final
そのクラスの全インスタンスに共通の定数として使う
static
そのクラスの全インスタンスに共通の変数として使う



134:デフォルトの名無しさん
08/01/15 18:17:52
>>133
ありがとうございます。
static final は Cでいうと #define みたいなものと捕らえて大丈夫ということでしょうか?


135:デフォルトの名無しさん
08/01/15 18:23:12
>>134
そんな感じですね。

例を思いついたので書いてみる
class 人間 {
static final int 足の数 = 2; // 足の数は全人類共通
static int 人口;
final String 名前; // 名前は一度決めれば変わらない

人間(String n) {
名前 = n;
}
void 出生() {
人口++;
}
void 死去() {
人口--;
}
}


136:デフォルトの名無しさん
08/01/15 18:24:23
定数の特徴がstaticでfinalなんだよ
って昔言われたな

137:デフォルトの名無しさん
08/01/15 18:26:21
>>135
わかりやすい例で納得できました
ありがとうございます

138:123
08/01/15 18:36:34
>>131
> そーゆー用途なら java.util.Arrays#toString(int[]) でも良いのでは?
> もっとも、1.5以上じゃないと使えないけど。

おおお!全然知りませんでした!ありがとうございます。
早速これに乗り換えます。

139:デフォルトの名無しさん
08/01/15 18:41:14
>>135
カタワは人間でないt(ry

140:デフォルトの名無しさん
08/01/15 19:23:05
>>139
カタワは基本構造から差し引かれているわけだから2本って定義は間違ってないよ。


141:デフォルトの名無しさん
08/01/15 19:48:07
java.nio.channelsのSelector#wakeupについて教えて下さい。

このメソッドはSelector#selectの待ち合わせを解除するものですが、
動かしてみたところ、
Selector#selectで待ち合わせていないときに(複数回)Selector#wakeup
を呼び出すと呼ばれた回数だけ次のSelector#selectで待ち合わせをしなくなるように見えますが
そういうものですかね?






142:デフォルトの名無しさん
08/01/15 20:05:46
>>129
>List#toString()は
>各要素を出力してくれますので。

そうとは限らない。おまいは何か勘違いしている。
Listの実装に何を使うかによって違う。



143:デフォルトの名無しさん
08/01/15 21:16:48
import java.util.*;

class Super {}
class Sub extends Super {}
public class Main {
    static void test1() {
        List<? extends Super>s = new ArrayList<Sub>();
        s.add(new Super());    //あ
        s.add(new Sub());    //い
    }
    static void test2() {
        List<? super Sub>s = new ArrayList<Super>();
        s.add(new Super());    //う
        s.add(new Sub());    //え
    }
    public static void main(String args[]) {
        test1();
        test2();
    }
}

上記コードの あ・い・う・え すべて「シンボルを見つけられません。」というエラーになるんですが
本には あ・い はエラー、う・え はOKって書いてあるんです。
これて、本が間違ってるんでしょうか?それとも何かコンパイラーの設定とかあるんでしょうか?
本はソフトバンククリエイティブの 「 Java2 Exam 310-055 」で、336ページです。
ここだけがどうしても理解できないので、スッキリしたいです。

144:デフォルトの名無しさん
08/01/15 21:32:51
ひどいコードだな。

145:デフォルトの名無しさん
08/01/15 22:30:40
>>141
URLリンク(java.sun.com)()
>ある選択操作から次の選択操作までの間にこのメソッドを 2 回以上呼び出しても、
>1 回だけ呼び出したときと同じ結果になります。

ってあるから、もしそうだとしたらバグかな?
どうでもいいとは思うが

146:デフォルトの名無しさん
08/01/15 22:34:42
漠然とした質問で申し訳ありませんがお聞きします。
eclipseなどだと、ソーエディタの変数名にマウスカーソルを合わせたりすると「型名 変数名 -クラス.メソッド」
という感じで表示されますよね?
この文字列ってどうにかして取得できませんか?イメージとしては
元のJavaのソースコードを食わせて、すべての変数に対して「型名 変数名 -クラス.メソッド」
が取得できればいいです。
eclipseはJavaで書かれていると聞いたので、こういったことを処理するクラスがあるのでしょうか?

147:デフォルトの名無しさん
08/01/15 22:39:24
>>146
リフレクションAPIを使うといいよ

148:デフォルトの名無しさん
08/01/15 22:40:23
Eclipseはすべて自前でやっている
Eclipseのプラグインを作ってEclipse(というかJDT)の機能を使うって手もあるけど・・・

そのJavaのソースコードを普通にコンパイルして、実行時にリフレクションで取得する方が簡単と思う
たとえばAっていう名前のクラスなら A.class.getDeclaredMethods() とか

149:デフォルトの名無しさん
08/01/15 22:41:14
>>146
できねーよ。自分でパーサー組んでコンテキスト分析すれ。

150:デフォルトの名無しさん
08/01/15 22:42:28
>>147
早速のご回答ありがとうございます
大変恐縮なのですが、そのAPIはどのパッケージにあるか教えていただけますか?

151:デフォルトの名無しさん
08/01/15 22:44:43
おまいら別クラスの任意の位置のローカル変数にどうやってリフレクション使わせる気だ。

152:デフォルトの名無しさん
08/01/15 22:53:16
変数名が要るのか、失敬
それなら、classファイルのデバッグ情報を読む・・・ちょっと手間だな

153:デフォルトの名無しさん
08/01/15 23:35:59
>>105
ダブルクリック。

154:デフォルトの名無しさん
08/01/16 00:01:28
>>143
本の通りで、コンパイルエラーになるなら本が間違ってる。
もしくは、本の説明が足りない。もしくは、本にとってあなたは想定外の人物。

私の環境だと「え」以外はエラー。

155:デフォルトの名無しさん
08/01/16 01:03:42
>>143 の疑問は解けないかもしれないが、今回探した中では一番読み応えのあった文章
Javaの理論と実践: Generics、了解!
(初級:ただし、JDK 5.0でのgenericの基本に慣れている必要がある)
URLリンク(www.ibm.com)

156:デフォルトの名無しさん
08/01/16 13:20:37
>>121

Main.java
 ……
 static int hogehoge = 1;
 static A a = new A();
 static B b = new B();
 ……
 a.starting();

A.java
class A {
 public void starting() {
  int i = Main.hogehoge;
  Main.b.ending(i);
  ……
 }
}
試せ。適当に書いてみてエラーが出なければ多分正しい

157:デフォルトの名無しさん
08/01/16 15:01:17
Iteratorを使ったループでの同期化について質問させてください。

動画の描画のような、毎秒数十回呼び出されるループ内で、ArrayListをIteratorで回してます。その一方で、別スレッドからこのArrayListに追加するためのメソッドがあります。

(例)--------------
ArrayList<Hoge>() hoge = new ArrayList<Hoge>();

loop(){ // 毎秒数十回呼び出すループ
 Iterator<Hoge> it = process.iterator();
 while(it.hasNext()){
  Hoge h = it.next();
  if(!h.loop()){ // Hoge内のループがfalseを返したら削除
   it.remove();
  }
 }
}

public void addHoge(Hoge h){
 hoge.add(h)
}
------------------

こういう場合にIteratorループでConcurrentModificationExceptionが起こらないようにするには、どうすれば良いのでしょうか?

synchronized修飾子で囲ってみたり、Collections.synchronizedList使ってみたりと色々試したのですが、どうしてもConcurrentModificationExceptionが起こってしまいます。

大人しくVector + Enumerationを使ったり、for(int i = 0; i < hoge.size(); i++) で回せば解決するのですが、Iteratorでの解決策が無いはずは無いと思うのです・・・。

158:デフォルトの名無しさん
08/01/16 15:15:37
loopの中をsynchronized(process)で、
addの中をsynchronized(hoge)で
くくる?
URLリンク(www.nextindex.net)

159:デフォルトの名無しさん
08/01/16 15:17:19
CopyOnWriteArrayListを使ってIterator#removeの代わりにList#removeにする・・・とか。

160:デフォルトの名無しさん
08/01/16 16:34:58
JAVAを使う職業に転職したいのですがいい本はないでしょうか?
今は会社員ですが、辞める予定ですので、早く覚えたいのです。

161:157
08/01/16 16:47:54
さっそくのご回答有難うございます。

そしてすいません、4行目の

Iterator<Hoge> it = process.iterator(); は、
 ↓
Iterator<Hoge> it = hoge.iterator();

の間違いでした。

>> 158さん
ありがとうございます。
どちらのメソッドもsynchronizedブロックで括るということですね。
むむむ、しかし試してみたところ、やはりadd後に即、loop内でConcurrentModificationExceptionが起こってしまいました。

ArrayListをiteratorで回してる最中は、追加・削除等の処理は一切行っちゃダメってことなんですかね。何か凄く不便に感じます。
多分、僕が無知なだけなんだろうとは思いますが・・・。

>>159さん
やや!並行処理用のコレクションがあったとは知りませんでした。
パフォーマンスも満足行くものみたいですね。
ありがとうございます、活用してみます。

やはり、並行処理するならば、ArrayListにこだわるのは良くないということなんでしょうかね。

MapにはConcurrentHashMapがあるようですね。以下のサイトを参考にしました。
URLリンク(www.itarchitect.jp)

返答ありがとうございます。

162:デフォルトの名無しさん
08/01/16 16:51:04
>>157
API を読みましょう。ってことなのでしょうか
URLリンク(java.sun.com)

163:デフォルトの名無しさん
08/01/16 16:57:34
>157
List list = new ArrayList() {
  @Override
  public Iterator iterator() {
       ArrayList list = new ArrayList(this);
       return list.iterator();
  }
}

164:デフォルトの名無しさん
08/01/16 20:20:23
<fmt:bundle> と <fmt:setBundle> って機能まとめて一つで良いよなぁという独り言。

165:デフォルトの名無しさん
08/01/16 23:17:07
>>163

it.remove();


166:デフォルトの名無しさん
08/01/17 09:41:33
すいません、Javaを勉強しようと思っているのですが
色々種類がありすぎてどれから始めるのが良いのか分かりません。
おすすめとかありますか?
ちなみに、僕のスペックです。
・経験言語
 Perl(4年)/PHP(3年)
 Ruby(半年)/C(半年)
 JavaScript(1年)

167:デフォルトの名無しさん
08/01/17 09:54:15
Java の色々種類って何だよ
開発環境なら Java SE 6.0 + Eclipse 3 使っとけ。
GUI なら Swing (Java SE 標準) 使っとけ。
Web 系なら Tomcat 使っとけ。
データベースなら PostgreSQL 使っとけ。
i-Appli, ゲームは知らん。

168:デフォルトの名無しさん
08/01/17 10:40:08
>166
得意分野から入るってならばSeasar2あたりでJ2EEをやる
Ruby(Rails)やったことあるならば大雑把には感覚つかめる筈
まったく知らない分野に手を伸ばしたいならばSocket通信とSwingあたりがいいかと思われ。
簡単なチャットプログラムあたりを作成するのがちょうどいい

169:デフォルトの名無しさん
08/01/17 14:43:05
JDK6に含まれている JDBC 4.0 APIには、DataSet<T>やBaseQueryなどが
含まれていないようなのですが、これらは、他のライブラリに入っているのでしょうか?
 それとも、JDBC 4.0仕様から削除されたのでしょうか?

170:デフォルトの名無しさん
08/01/17 15:27:49
リファレンス実装が十分固まらないうちにリリースに間に合わなくなって 1.6 から除外された。
その後は知らん。

171:デフォルトの名無しさん
08/01/17 15:30:36
>>167
MySQL勧めとけ

URLリンク(internet.watch.impress.co.jp)

172:デフォルトの名無しさん
08/01/17 15:37:09
Sun に買われた Cobalt がどうなったか知らんのか。

173:デフォルトの名無しさん
08/01/17 16:45:23
Stream の close() の仕方について質問です。
以下のようなみたいなコードがあったとき、

FileInputStream fis = new FileInputStream("hoge.txt");
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);

今まで以下のように書いていました。

br.close();
isr.close();
fis.close();

ところでピアソンの「プログラミング言語Java 第4版」p.450(20.4 InputStreamReader と OutputStreamReader という節)
をみると、以下の記述があります。

>どちらの場合も、変換ストリームをクローズすると、関連付けされているバイトストリームもクローズされます。
>標準ストリームを変換するような場合には、クローズされるのは常に好ましくはないかもしれません。
>したがって、変換ストリームをいつクローズするかは慎重に検討してください。

これをよむと、以下のように isr.close() するだけで fis も close() されるという理解でよいですか?

br.close();
isr.close();

以下のように br.close() だけだと、isr と fis は close() されないですよね。

br.close();


174:デフォルトの名無しさん
08/01/17 16:48:59
創るJava って第2版がでるんだな。(2008/1/23)

175:デフォルトの名無しさん
08/01/17 17:00:26
>>173
br.close()だけでぜんぶクローズされるはず。
手元にソースがなくて確認はしてないけど、ストリームにかぶせるタイ
プのストリームはぜんぶclose()で中のストリームのclose()を呼んでい
たと思う。


176:デフォルトの名無しさん
08/01/17 17:08:09
>173
その文章書く時間あるならば、先にJavaDoc嫁
void close() throws IOException
    このストリームを閉じ、関連付けられているすべてのシステムリソースを解放します。ストリームがすでに閉じている場合、このメソッドを呼び出しても何も行われません。

177:173
08/01/17 17:15:07
>>175
どうもありがとうございます。BufferedReader のソースを見たところ、
close() の内部で、BufferedReader のコンストラクタで受け取った Reader の close() を呼んでいました。

今後プログラムを書くときは、br.close(); だけを書くようにしよう。

>>176
すみません、聞く前に javadoc 読むようにします。
ちなみに PrintWriter#close() は、Javadoc では「関連づけられているすべてのリソースを開放する」とは
書かれていませんでしたが、ソースを見ると、やはりコンストラクタで受け取った Writer をclose() していました。

178:デフォルトの名無しさん
08/01/17 17:41:49
>>177
1.6 のドキュメントだと、PrintWriter#close() には
「関連するすべてのシステムリソースを解放します」って書いてあるけど。

「ストリームを閉じます」だけで終わってるのは 1.4以前かな。

179:173
08/01/17 17:47:19
>>178
手元にある DL 済みの javadoc は 1.5 です。(はじめのカキコ時に java のバージョンを書いておくべきでした)
「ストリームを閉じます」だけで終わっています。

やはり DL ずみの1.6 では、>>178 さんのようになっていますね。

180:デフォルトの名無しさん
08/01/17 19:31:49
JavaServletについてわからない事があるので教えていただけますか。

/*環境*/
OS:Windows xp Professional SP2
開発アプリケーション:Eclipse Version 3.3(Tomcatの起動はxampp内のTomcatを利用)
サーブレットコンテナ:Apache Tomcat 6.0(XAMPPのTomcatプラグインより利用)

Eclipseから出たメッセージ
「インポートされた javax.servlet は見つかりません。」

//Servlet.java
import java.io.*;
import javax.servlet.*; //”javax.servlet”の所で赤の波線が出る
import javax.servlet.http.*; //”javax.servlet”の所で赤の波線が出る
public class Servlet extends HttpServlet {
public void doGet (HttpServletRepuest req,HttpServletPesponse res)throws ServletException, IOException {
}
}

多分、servlet.jarか、servlet-api.jarが必要になるのだと思いますが。
これを、どのようにすれば、正常に動作させる事が出来るのか解らないです。

どうぞよろしくお願いします。


181:デフォルトの名無しさん
08/01/17 19:44:24
初心者です、何を始めたらいいですか?

182:デフォルトの名無しさん
08/01/17 19:54:56
Javaでぐぐるとこから始めたらいいです

183:デフォルトの名無しさん
08/01/17 20:08:06
最近自分で調べた方が早い事ばかり聞いてくるな。

184:デフォルトの名無しさん
08/01/17 20:26:40
POIでVBAを含んだExcelを読み込み、保存するとVBAが消えてしまいます。
消えないようにする方法は無いでしょうか。
POIでVBAを書き込む方法ってありますか??


185:デフォルトの名無しさん
08/01/17 20:36:22
Exception#printStackTraceで出力される例外情報を文字列化してログファイル
におちしたいんですが、良い方法ありますか?

186:デフォルトの名無しさん
08/01/17 20:47:06
つ ロギング

187:デフォルトの名無しさん
08/01/17 22:49:01
>>185
ちなみにNetBeansだとロギングAPIでコード補完されます。

188:デフォルトの名無しさん
08/01/17 23:08:31
>>185
Throwableクラスに、文字列を取得するのにぴったりのメソッドがあるだろ?

189:デフォルトの名無しさん
08/01/17 23:10:36
サーブレットとJSP簡単に言うと如何使い分けてるのが一般的?

190:デフォルトの名無しさん
08/01/17 23:26:54
MVCのCとVで分ける

191:デフォルトの名無しさん
08/01/17 23:55:22
servletでフィルターをかける場合にfilterインターフェイス使うみたいだけど、
インターフェイスって、implementしたクラスで実装するんじゃないのですか?


192:デフォルトの名無しさん
08/01/17 23:58:04
途中で書き込んでしまった。
色々な本なんかを見てると実装している部分が見当たらないんです。
俺の認識が間違ってるだけですか?


193:デフォルトの名無しさん
08/01/17 23:58:16
その実装クラスを作るときに ServletFilter インターフェイス使ってんじゃん。

194:デフォルトの名無しさん
08/01/18 12:11:19
なぜ継承やオーバーライドをするのでしょう?
似通っているクラスであれ、継承せずに新しいクラスを作り、
新しいメソッドを作ればいいとか思っちゃうのですが。
効率性の問題ですか?

195:デフォルトの名無しさん
08/01/18 12:17:43
>>194
君みたいな開発者のおかげで、僕の仕事があります。ありがとう。

196:デフォルトの名無しさん
08/01/18 12:18:05
>>194
ヒント:ポリモーフィズム

197:デフォルトの名無しさん
08/01/18 12:19:55
>>194
新しいクラスも既存のクラスも同じインタフェイスで扱いたいから

198:191
08/01/18 12:32:05
>>193
例えばinit()なんですけど、
実行される内容は自分で書きますが、
「最初に実行される」という決まりはどこに定義されていて、
自分の作ったクラスにどのように継承?されているのでしょうか?

199:デフォルトの名無しさん
08/01/18 13:35:03
そんな決まりはない
ただの慣習
されども慣習を守らないとみんなが迷惑する

200:デフォルトの名無しさん
08/01/18 14:01:12
>>199
おい!

>>198
最初にinit()を実行するという決まりは、Servlet Specificationで規定されている。
だから、Servlet仕様にきちんと準拠して実装されたServletコンテナなら
Filterとして作成され、web.xmlにFilterとして登録されたクラスの
init()メソッドを呼び出すように実装されている。

201:デフォルトの名無しさん
08/01/18 14:10:15
すみませんが、質問です。

Luceneというオープンソースの検索エンジンを使ってみたのですが、思ったよ
りパフォーマンスが出なかったので、プロファイラ hprof で分析してみました。

URLリンク(itpro.nikkeibp.co.jp)

結果
CPU SAMPLES BEGIN (total = 50358) Thu Jan 17 17:43:10 2008
rank self accum count trace method
1 33.34% 33.34% 16787 300001 java.lang.Thread.run
2 33.33% 66.67% 16786 300005 java.lang.ref.Reference.getPending
3 17.58% 84.25% 8853 300364 java.io.RandomAccessFile.readBytes
4 11.94% 96.19% 6013 300777 java.io.RandomAccessFile.readBytes
5 0.33% 96.52% 167 300473 jrockit.net.SocketNativeIO.readBytesPinned
6 0.29% 96.81% 146 300537 java.lang.String.<init>
7 0.19% 97.00% 96 300536 org.apache.lucene.store.BufferedIndexInput.readByte
8 0.15% 97.15% 77 300587 org.apache.lucene.store.IndexInput.readString
9 0.14% 97.29% 69 300561 org.apache.lucene.store.IndexInput.readString
10 0.12% 97.41% 58 300578 org.apache.lucene.store.IndexInput.readString
...(略)...

てっきり java.io.RandomAccessFile.readBytes がCUP時間のほとんどを占める
かと思ったら、それは30%に満たず、java.lang.Thread.run と
java.lang.ref.Reference.getPending が全体の2/3を占めていました。

これは一体、何を意味するのでしょう?パフォーマンス改善には何をしたらい
いと思われますか?


202:デフォルトの名無しさん
08/01/18 14:11:14
>>198
サーブレットコンテナを作る側と、サーブレットを作る側で
「お互いこういう決まりで作りましょうね」という規格(Servlet API)
の上で決まっているだけで、
唯一固有の実装により定義されるわけではない。

例えばTomcatなら、そのコードの中で、
Filterクラスをインスタンス化して、最初にinit()を実行し、
該当リクエストがある度にdoFilter()を実行する、
というように実装されている。
Tomcatのソース読めば見つかるはず。

これはあくまでTomcatの実装であって、
他のサーブレットコンテナ(ResinやJetty、商用ならWebSphereやWebLogicなど)なら
また別の書き方で、フィルタの扱い方が実装されているけど、
やはりServlet APIの規則に従って実装されている。
それをはずすとServlet API準拠って名乗れないからね。

繰り返すけど、この辺は、APIの仕様に定義されている。
これは文書読まないとわからない。
どのAPI使うにしろ、そういった約束事の塊に出くわすので、
慣れろと言うしかない。

203:デフォルトの名無しさん
08/01/18 15:19:23
明快Javaってどうなの?

204:デフォルトの名無しさん
08/01/18 16:08:31
自分で読んで決めろ。それか該当スレ
やさしいシリーズじゃなけりゃなんでもいい。

205:デフォルトの名無しさん
08/01/18 16:10:38
創るJavaのほうがいいよ。

206:デフォルトの名無しさん
08/01/18 16:13:14
>>205
もうすぐ新版もでるしね




はじめて工作員活動しちゃった

207:デフォルトの名無しさん
08/01/18 17:13:59
パネルの背景を画像にして、その上に各コンポーネントを貼り付けていこうと
考えているのですが、うまく表示されません。
1.最初は画像を背景にしたJLabelをJPanelに貼り付けて、
さらにその上に貼り付けていこうと考えていたのですが、
うまく作成することができませんでした。
(上に貼り付けたコンポーネントが正しく表示されない)
2.そこで、JPanelのpaintComponet部分でdrawImage
してみましたが、画像は描写されませんでした。

1の場合LayoutはSpringLayoutやNullで行へば回避できるのか?
そもそも2で行おうとしていることは可能なのか?
また、このような場合に行う良くある方法についてのアドバイスをお願いします。



208:デフォルトの名無しさん
08/01/18 17:43:12
javaの勉強中なんですが、
VectorやHashtebleなどでコンパイルすると、

注:Hashtable_sample.java の操作は、未チェックまたは安全ではありません。
注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。

とでるんですが、どうすれば解決できますか?

209:デフォルトの名無しさん
08/01/18 17:48:45
DOS窓って一体何のことですか?

210:デフォルトの名無しさん
08/01/18 17:49:30
>-Xlint:unchecked オプションを指定して再コンパイルしてください。

211:デフォルトの名無しさん
08/01/18 17:49:56
>>207
自己レス
2のほうでImageIcon経由Imageを作成したらうまく動きました。
もしかしたら、ロードが終わってない状態で
画像を表示しようとしていたのかもしれません。

212:デフォルトの名無しさん
08/01/18 17:55:01
>>207
1の方法でもちゃんと動いたぞ
import略
public class Test {public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {
JLabel label = new JLabel(new ImageIcon(getClass().getResource("image.png")));
label.setLayout(new FlowLayout());
label.add(new JButton("button"));
JPanel panel = new JPanel(new BorderLayout());
panel.add(label);
JFrame frame = new JFrame();
frame.add(panel);
frame.pack();
frame.setVisible(true);
}});}}

213:デフォルトの名無しさん
08/01/18 17:55:36
>>209
コマンドプロンプトのことです

214:デフォルトの名無しさん
08/01/18 18:01:38
>>213
もしかしてWindowsのことですか!

215:デフォルトの名無しさん
08/01/18 18:03:22
-Xlint:unchecked オプションを指定ってどうすればいいんですか??

216:デフォルトの名無しさん
08/01/18 18:10:07
>>208
Generics でぐぐるといいかもしんない

217:デフォルトの名無しさん
08/01/18 18:16:53
>>212
ありがとうございます。
さっそくJwindowに変えてやっていみたのですが、動きますね。
ラベルでなくパネルのほうにコンポーネントを貼り付けようとしたせいで
背景の画像が表示されなくなっていたのかもしれません。


218:デフォルトの名無しさん
08/01/18 18:17:23
>>215
javadocの開発ツールjavacの部分嫁

219:デフォルトの名無しさん
08/01/18 18:55:48
>>208
javac -Xlint:unchecked Hashtable_sample.java

220:デフォルトの名無しさん
08/01/18 19:52:24
ジェネリックメソッドで
<T> T getT(){
    return //T型のオブジェクト生成
}
ってやりたいんだけど、どうすんの?つうかコンストラクタは引数無しじゃなきゃダメ?


221:デフォルトの名無しさん
08/01/18 20:27:09
Tに引数なしのコンストラクタがある保証ないじゃん

222:デフォルトの名無しさん
08/01/18 20:30:37
<T> T getT(Class<T> clazz){
    return clazz.newInstance();
}
とやるしかない
もしくはクラス名を渡すなど。

223:デフォルトの名無しさん
08/01/18 20:38:03
>>222即レスあざす。・・・マジすか
まぁ、妥協できないとこじゃないんで別の実装考えますね。

224:デフォルトの名無しさん
08/01/18 20:53:21
設計の問題でどうにかなる

225:デフォルトの名無しさん
08/01/18 21:02:46
>223
自分も同じようなこと考えたんだけど、コンパイルされた後には型情報ってなくなるんだよね。
あくまでコンパイル時にキャストがうまくいくってだけで、そこまで。
ただ、使い方を制限するなど、使い道は多いぜ。
<T extends HogeHoge> T getT(Class<T> clazz){
    return clazz.newInstance();
}

226:デフォルトの名無しさん
08/01/18 21:03:11
ファイルから数値を読み込んでそれの合計とか平均とかだしたいんですけど
どうすればいいですか

227:デフォルトの名無しさん
08/01/18 21:23:15
勉強するといいよ

228:デフォルトの名無しさん
08/01/18 21:39:00
javadoc読めば良いと思うよ

229:デフォルトの名無しさん
08/01/18 21:51:14
あんまりWebアプリ作る技術者系の人はここにはいないのかな

230:デフォルトの名無しさん
08/01/18 22:14:29
>>220
>>155 おすすめ

231:デフォルトの名無しさん
08/01/19 01:20:57
>>225,230
確かにTが実行時にコンスタントプール内のクラスを指し示してる保証もできないですしね。
バイトコード弄くりじゃ結局ジェネリックス使わないし・・・結局
<T> T createT(T t){
  //tが不正でないか調べる
  return t;//正しいtを返す
}
って感じにしました。まぁ、超個人的なことなんで何したいのか分からないと思いますが・・・
ありがとうございました。

232:デフォルトの名無しさん
08/01/19 13:15:50
antのbuild.xmlってなんであんなフリーダムになっちゃったの?

233:デフォルトの名無しさん
08/01/20 22:14:35
swingのJLayeredPanelに

ImageIcon icon = new ImageIcon(img);
jlabel.setIcon(icon);
jPanel.add(jlabel);
jlayeredPane.add(jPanel, 2);
おおざっぱですがというような方法で層状にして画像を表示しているのですが、上の6ピクセル行くらいが空白になってしまい表示できません。これを解決する方法ってありますか?
iconを使うと無理?

234:デフォルトの名無しさん
08/01/20 22:51:55
JLabelのBorderとかを設定
JLabelの機能を使わないならば、画像表示用のコンポーネントをJComponentを継承して作るほうが楽かも

235:デフォルトの名無しさん
08/01/20 22:54:53
Borderですか。
そっちでやってみます。
ありがとうございます。できるかな。。

236:デフォルトの名無しさん
08/01/21 01:18:13
Cプログラマ必須テキストです!

URLリンク(mori.eco.to)

237:233
08/01/21 10:26:56
>>234
結局borderではできませんでした。。
継承とかうまく扱えないので、他になにかいい解決方法があるといいのですが。

238:デフォルトの名無しさん
08/01/21 11:45:41
>>237
setBorder(null)してみた?

239:デフォルトの名無しさん
08/01/21 12:25:38
それを言うなら、BorderFactory.createEmptyBorder(だっけ?)じゃね?


240:デフォルトの名無しさん
08/01/21 15:07:50
javaでCPUや、メモリ量などのシステム情報を取得するにはどうしたらいいですか?

241:デフォルトの名無しさん
08/01/21 15:10:19
format c:

242:デフォルトの名無しさん
08/01/21 15:30:11
質問です。
無制限強度の管轄ポリシーファイルを%JAVA_HOME%\jre\lib\securityに置いて鍵長制限解除をしようとおもったのですが・・・、

CPadからGUIを起動して暗号・複合を行うと442bitsの鍵を扱えるのですが、
それらをまとめたjarをクリックして起動したGUIではどうしても暗号・複合ができませんorz
#無制限強度の管轄ポリシーファイルの必要ない64bitsの鍵はできます。
例外処理の内容は制限を超えた長さの鍵を使った時にでるものが投げられるので、
jarで起動するとどうも無制限強度の管轄ポリシーファイルを見てない感じなのですが・・・。


教えてくださいせんせー。

243:デフォルトの名無しさん
08/01/21 16:49:40
CPadってのは何者か解らんけど、開発環境か?
エスパーしてみると、jarをダブルクリックした時に使われるJREと、開発環境で使われるJREが異なるのが理由かと思われ

244:デフォルトの名無しさん
08/01/21 17:38:56
CPad for Java2 SDK

245:デフォルトの名無しさん
08/01/21 17:40:12
尿Pad

246:デフォルトの名無しさん
08/01/21 18:15:50
>>243
まさにその通りでしたorz
開発環境ではjdk下のjreを参照してるのですね。勉強になりましたorz
てんてーありがとうー


//チラ裏
jdk
%JAVA_HOME%jdkx.x.x\jre\lib\security\US_export_policy.jarとlocal_policy.jar

jre(jrex.x.xは最新のjreフォルダ)
?\jrex.x.x\jre\lib\security\US_export_policy.jarとlocal_policy.jar

247:デフォルトの名無しさん
08/01/21 18:48:30
ホットスポットがネイティブコードにコンパイルされるのって単純に実行回数?
それともバイトコード分析して?

248:デフォルトの名無しさん
08/01/21 20:05:21
HotSpot実装ならホットスポット解析

249:デフォルトの名無しさん
08/01/21 20:30:39
ホットスポット探すのに実行回数を一切使わないって事はないと思うが。

250:デフォルトの名無しさん
08/01/21 22:20:59
失礼します。
現在JAVAでRS232Cを使って通信を行なう事を行なっております。
まず現在行なっている仕様は
OS :Vine Linux 2.6.16 - 0vl160
J2SE :1.4.2_16
RXTX :2.07 i686 linux
Java Communications API :3.0 Linux

:参考サイト:
JAVA開発メモ - CommunicationsAPI
URLリンク(www.moriwaki.net)

:現状:
JAVAにおいてはコンパイル・実行ともに問題無く使用できますが
RS232Cに関係するプログラムをコンパイルするとエラーが
起こります。
(URLリンク(www.ais-com.co.jp))でお借りしました。
雛形プログラムをコンパイルしたところ。
以下のような場所にシンボルが不明と出ました。
CommPortIdentifier
^
SerialPort.DATAITS_8....
^

実験は大学の実験室にて行なっているので
現在はエラー文をお見せできないので本当に申し上げません。
恐らくですが、rxtxかCommunicationsに問題があると思いますが
現在の所その解決策は見つかっておりません。

どなたか解かる限りでかまいませんので教えてください
よろしくお願いします。

251:デフォルトの名無しさん
08/01/21 22:31:45
classpath通ってないんだけちゃうん??

252:デフォルトの名無しさん
08/01/21 23:01:17
だろうね。説明サイトでは javacomm20-x86.tar を JAVA_HOME/jre/lib/ext に
入れろと書いてあるがちゃんと入ってるか? また入れたディレクトリの JDK が
本当に使われてるか? 下のコマンドでも叩いて確認しる

ls `dirname \`which javac\``/../lib/ext/javacomm20-x86.tar

どうしてもダメならクラスパス設定しる

export CLASSPATH=$CLASSPATH:/path/for/javacomm20-x86.tar

↓と、ここで満を持して lib/ext アレルギー患者が一言

253:デフォルトの名無しさん
08/01/21 23:43:10
└→HDDが一杯で入りません。

254:>>250
08/01/21 23:52:19
>>251
>>252
ご返答ありがとうございます。
classpathですね。明日早速試してみたいと思います。
また>>252さんのJDKが本当に使われているかを
試してみたいと思います。

255:デフォルトの名無しさん
08/01/21 23:58:31
>>246
JREのパスを先に持ってくればいいんじゃね?

256:デフォルトの名無しさん
08/01/22 00:46:07
匿名クラスを使わずにスレッドの生成できるんでしょうか?

257:デフォルトの名無しさん
08/01/22 00:59:39
できる

258:デフォルトの名無しさん
08/01/22 02:07:14
おまいらネットで役に立つと思った情報見つけたら広告くらいクリックしてやれよ。
という独り言。

259:デフォルトの名無しさん
08/01/22 02:45:00
JAVAの練習に簡単なイメージビューアを作っています。

JFrameを継承したメインクラスにJMenubarをaddしてメニューを作っているのですが
ウィンドウを閉じるとメニューも一緒に消えてしまいます。

最後のウィンドウを閉じてもメニューは残るようにするにはどうすればいいのでしょうか?

260:デフォルトの名無しさん
08/01/22 02:59:55
JMenuBar を static 宣言したりしないで、フレームごとに JMenuBar を new して add する。
とエスパー気味に答えてみる。

261:デフォルトの名無しさん
08/01/22 03:09:15
IDEで作ってみて解析してみれば?
最近この手の質問多すぎね?

262:デフォルトの名無しさん
08/01/22 03:14:02
初心者無視スレや死滅スレ以前のはるか昔からですが何か。

263:デフォルトの名無しさん
08/01/22 03:17:17
まあでも、こう思うんだけど如何なの程度の推測持ってからの方が伸びるだろうね

264:デフォルトの名無しさん
08/01/22 04:24:20
Logging API で Log4J で言うところの PatternLayout みたいなのって無いの?
tuka ひょっとしてわざわざ Formatter 作らなきゃダメなのかよ。

265:デフォルトの名無しさん
08/01/22 10:29:03
JDK5.0でのオートボクシングに関する質問です。

byte b = 1;
Integer i = new Byte(b) + new Integer(2);

この処理は問題なく実行されますが、処理の内容と順序は

1.Byte型とInteger型の足し算がアンボクシングでbyte型とint型の足し算になる
2.byte型とint型の足し算の結果はint型になる
3.int型がオートボクシングでInteger型となり代入される

これで合ってますか?
3はいいと思いますが、1-2は不安です。

266:デフォルトの名無しさん
08/01/22 10:36:43
はい

267:デフォルトの名無しさん
08/01/22 11:54:45
>>265
byte 型と int 型の足し算の際に byte 型が int 型に暗黙に型変換される。

268:265
08/01/22 13:43:15
>>266-267
ありがとうございます。

269:デフォルトの名無しさん
08/01/22 15:18:27
java5で配列から部分集合を全て列挙したいのですが,どのようにすればよいでしょうか?

270:デフォルトの名無しさん
08/01/22 15:44:15
if文

271:デフォルトの名無しさん
08/01/22 15:44:17
べき集合ってこと?

272:デフォルトの名無しさん
08/01/22 15:51:30
部分集合の条件を書けよw

273:269
08/01/22 16:20:56
>>270
すみません.もう少し詳しくお願いします.

>>271
はい,べき集合の列挙です.分かり辛くてすみません

>>272
集合の条件はn個の自然数です.

274:デフォルトの名無しさん
08/01/22 16:37:40
まともな質問もできねーのかよw
具体的にやりたいことをきちんと書く

275:デフォルトの名無しさん
08/01/22 16:47:03
宿題スレ向きの内容じゃないの?べき集合の列挙ならアルゴリズムの問題。

276:デフォルトの名無しさん
08/01/22 16:57:12
文字コード変換で悩んでいます。

JIS 8単位符号:JIS X0201を使用して、変換を行いたいですが
実装がわかりません。

例)引数はString 戻り値もString
引数に0が入力された場合、JIS X0201を使用すると30に変換されるのですが
どのように実装を行ったらよろしいでしょうか??


277:269
08/01/22 16:57:47
ごり押しですがべき集合を再帰的に呼び出すことで解決しました.
ありがとうございました.

278:デフォルトの名無しさん
08/01/22 17:15:12
>>277
すぐ解決すんなら書くなよw

279:デフォルトの名無しさん
08/01/22 17:24:04
>>276
> 例)引数はString 戻り値もString

そのインターフェイスは激しく変だぞ。何から何に変換したいの?
たとえば、Javaの1文字をJIX X 0201のコードにしたいのなら、
☆入力は char、戻り値は byte か int

もし、入力が複数の文字なら、
☆入力は String、戻り値は byte[]
じゃない?

JIS X 0201のコードはStringに成り得ないです。




280:デフォルトの名無しさん
08/01/22 17:32:06
"JIS X 0201のコードはStringに成り得ないです。 "
しらなかったです。

戻り値byte[]でも良いです。
結果的にはファイルに書き込めればよいので。

"☆入力は String、戻り値は byte[]
じゃない?"
で実装を教えてください。



281:デフォルトの名無しさん
08/01/22 17:41:22
>>280

inputString.getBytes("JIS_X0201");
これだけ。

ファイルに書きたいだけだったら、
OutputStreamWriter writer = new OutputStreamWriter(
new FileOutputStream(fileName), "JIS_X0201");
writer.write(inputString);
という感じにOutputStreamWriterを使ってもいいね。


282:デフォルトの名無しさん
08/01/22 19:06:11
>>279
こいつアホ?

283:デフォルトの名無しさん
08/01/22 19:23:15
byte[] b = new byte[10];
byte[] temp_hoge = new byte[10];

これらふたつを比較して等しければtemp_Ahogeを返すようにしたいのですがどうすればいいのでしょうか?

if(ここに等しい条件を入れる){
return temp_Ahoge;
}

だと思うのですがアドバイスをお願いします。

284:デフォルトの名無しさん
08/01/22 19:24:29
>> 281
試してみましたが、
ファイルに何も書き出されませんでしたが、どうしてでしょうか??

実装は
String fileName = "C:\\tmp2\\sample.txt";
String inputString = "0";
OutputStreamWriter writer;
try {
writer = new OutputStreamWriter(new FileOutputStream(fileName),
"JIS_X0201");
writer.write(inputString);
System.out.println(inputString);

です。

285:デフォルトの名無しさん
08/01/22 19:34:43
>>280
JavaのStringで保持してるbyteの文字セットはUnicode。
他の文字セットで保持する場合は、変換してbyte配列まま。

>>283
static boolean java.util.Arrays.equals(byte[], byte[])
但し、引数がnull同士の場合もtrueを返す。

286:デフォルトの名無しさん
08/01/22 19:45:19
>>285
レスありがとうございます。
早速使用させていただきます。

287:デフォルトの名無しさん
08/01/22 19:51:28
>>284
さいごにwriter.close()してる?


288:デフォルトの名無しさん
08/01/22 20:44:24
>>287
書き忘れてました。

>>285
すいません。その変換することがよくわからんです。

289:デフォルトの名無しさん
08/01/22 21:48:10
A.javaというファイルとB.javaというファイルがあるとします。
このとき
A.javaからあるものをB.java
に渡したあとB.javaで処理をしてA.javaに返すプログラムを構築したいのですが
どのようなコードを書けばいいですか?

290:デフォルトの名無しさん
08/01/22 21:51:40
質問です。

JavaプログラムでCygwinに対して「javap -c 任意の.class」を行い、その結果を取り込みたいのですがどう行えばいいでしょうか。
ProcessBuilderを使えばいいようなのですが、そこから先が分かりません。
申し訳ありませんがよろしくお願いします。

291:デフォルトの名無しさん
08/01/22 21:52:11
表現があいまい。
プロセス間通信みたいな事したいのならTCP/IPなり叩いてシリアライズされたオブジェクト渡すとか。

クラス間で単に見えれば良いだけならアクセス修飾子つけるとか

292:デフォルトの名無しさん
08/01/22 21:54:50
>>290
ProcessBuilder から Process → InputStream の順に取得すればそこから javap コマンドの出力内容が取れる。

293:デフォルトの名無しさん
08/01/22 21:57:30
cygwin は関係あるんだろーか?

294:デフォルトの名無しさん
08/01/22 21:59:48
そんな質問者トラップに惑わされているうちはまだまだひよっこ。

295:デフォルトの名無しさん
08/01/22 22:01:33
>>289
ファイルを処理するプログラムが希望なのか?

落ち着いて、用語を正しく使って質問しよう

296:291
08/01/22 22:03:46
ややこしいな>>289

297:デフォルトの名無しさん
08/01/22 22:05:02
>>289
public class A{
public static void main(String[] args){
  B b = new B();
  Object nanika = /* 何か */;
  Object kekka = b.shori(nanika)
}
}

public class B{
public Object shori(Object nanika){
  /* 処理 */
  return kekka;
}
}

298:デフォルトの名無しさん
08/01/22 22:05:49
早速のご解答ありがとうございます。

やりたいことは、.classファイルの情報をjavap -cコマンドで取得し、それらの情報を
プログラムで使用したいのです。

本当に初歩的ですいません。。。

299:デフォルトの名無しさん
08/01/22 22:19:00
大変失礼いたしました。
>>295を >>290に対する返答と勘違いしました、申し訳ありません。

試しに書いたプログラムです。

       ProcessBuilder pb = new ProcessBuilder("C://cygwin/Cygwin.bat","ls");
try {
Process p = pb.start();
InputStream stdIn = p.getInputStream();
InputStream errIn = p.getErrorStream();
int c;
while ((c = stdIn.read()) != -1) {
System.out.print((char)c);
}
stdIn.close();
while ((c = errIn.read()) != -1) {
System.out.print((char)c);
}
errIn.close();
int ret = p.waitFor();
System.out.println("process exited with value : " + ret);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
出力は一切ありませんでした。

300:デフォルトの名無しさん
08/01/22 22:24:05
>>299
new ProcessBuilder("bash", "--login", "-c", "\"ls -laF\"")

301:デフォルトの名無しさん
08/01/22 22:42:03
>>296
あいまいすぎてすみません。
A( URLリンク(www.uploda.org) )
というファイルがあってAのなかには

public static void main(String[] args) {
HelloWorldJNI hello = new HelloWorldJNI();
byte[] card_idm = new byte[16];
String temp;
String sid = "0404040404040404";

というコードがあるのですが、0404~という特定のものではなく
Bが受け取る値をそのままAの上の部分に返したいんです。

302:デフォルトの名無しさん
08/01/22 22:42:27
>>300
回答ありがとうございます。

早速試したのですがエラーが、
java.io.IOException: CreateProcess: bash --login -c "ls -laF" error=2

試しに"bash"のみでやったところ同じエラーが返ってきました。
java.io.IOException: CreateProcess: bash error=2

パスか何かの影響なのでしょうか。。
また、Cygwinを無視して "cmd","cd ../"とやったところ

Microsoft Windows XP [Version x.x.xxxx]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\workspace\test>

という結果になり、cd ../については反映されていないようなのですが。。

303:デフォルトの名無しさん
08/01/22 22:43:47
>>302続き

という結果になり、cd ../については反映されていないようなのですが。。

304:デフォルトの名無しさん
08/01/22 22:45:50
Eclipse3.3でtomcat6.0+JSPによるウェブアプリケーションを開発しています。
あるクラス(hoge)の作成には成功するのですが、そのクラスをJSPファイルから参照しようとすると
「NoClassDefFoundError: foo/bar」という例外が投げられてしまいます。
見つからないクラス(bar)というのはEclipseの機能である「ユーザー・ライブラリーの追加」で追加したJARファイルの中のクラスです。
・JSPファイルからこのクラスファイルを呼ばないようにする
・JSPやtocatなどを使用せず、かわりにmainメソッドを持つクラスを新たに作成し同様の処理を行う
などとすると、上記例外は生じません。
「ユーザー・ライブラリーの追加」によって追加されたクラスを含むクラスをJSPファイルで利用することはできないのでしょうか?
少々ややこしいですが、よろしくお願いします。

305:デフォルトの名無しさん
08/01/22 22:52:27
>>302
フルパスで書け。"C:\\cygwin\\bin\\bash.exe"

306:デフォルトの名無しさん
08/01/22 23:02:48
>>305

解決いたしました、本当にありがとうございます。

307:デフォルトの名無しさん
08/01/22 23:06:23
>>304
ユーザライブラリで追加した JAR ファイルを WEB-INF/lib の下に置け。

308:デフォルトの名無しさん
08/01/22 23:13:42
>>301java bean使うとかプロパティファイルに追い出すとか単にpublic void setSID()なメソッドをAに定義するとか。

設計の問題なんだけどjavaの仕様自体は理解してるの?

してないならお勉強。

309:デフォルトの名無しさん
08/01/22 23:28:41
>>308
レスありがとうございます。
卒業研究でJavaを使っているのですが全然わからなくて・・・。

310:デフォルトの名無しさん
08/01/22 23:29:39
>>308
public void setSID()なメソッドをAに定義するというのは
A.javaのプログラム中に
public void setSID(){
というのを作って中で呼び出せばいいのでしょうか?

311:デフォルトの名無しさん
08/01/22 23:34:40
初めっから勉強し直せ

312:デフォルトの名無しさん
08/01/22 23:51:35
>>309
朝まで一夜漬けだ

浅煎り珈琲 - Java アプリケーション入門
URLリンク(www.nextindex.net)

313:デフォルトの名無しさん
08/01/23 00:26:07
>>312
またそれかよ
宣伝乙

314:login:Penguin
08/01/23 00:46:36
String fileName = "C:\\tmp2\\sample.txt";
String inputString = "0";
OutputStreamWriter writer;
try {
writer = new OutputStreamWriter(new FileOutputStream(fileName),
"JIS_X0201");
writer.write(inputString);

と実装してみましたが、ファイルにはinputStringの値"0"が書き出された
だけでした。

やりたいこととしては、"0"を入力したときにJIS_X0201の値の"30"を
出力したいのですが、どうすればよろしいでしょうか??

315:デフォルトの名無しさん
08/01/23 00:54:27
>>314
もしかして, '3' と '0' という文字を書き出したいの?

316:login:Penguin
08/01/23 01:04:10
"0"をJIS_X0201で読み込むと"30"という値になると思います。
自分の認識が間違っているかもしれませんので、"3","0"と分割して
書き出すやりかたがあれば教えてください。


317:デフォルトの名無しさん
08/01/23 01:23:58
>>314,316
ある文字をJIS X 0201にエンコードしたときのバイト列を16進数の文字
列にしたい、ということなのね。

であれば、OutputStreamWriterは忘れて、
inputString.getBytes("JIS_X0201") で得たバイト列を1バイトずつ
String.format("%02x", ... で加工していくので良さそう。


318:login:Penguin
08/01/23 01:31:48
>>317
ご理解ありがとうございます。

実際の実装方法を聞いてもよいですか??
ファイルに書き込む処理まで行いたいです。

319:デフォルトの名無しさん
08/01/23 01:37:47
さすがに自分でやれよw

320:デフォルトの名無しさん
08/01/23 01:40:15
>>318
317でここまで具体的にヒントが書いてあるんだから、あとは自分で書き
なさいな。


321:login:Penguin
08/01/23 01:42:42
ありがとうございます。
やってみるです。

322:デフォルトの名無しさん
08/01/23 04:12:01
BigDecimalクラスで平方根の計算をしたいんですが、
これって用意されてないんでしょうか?
ググって見つかって喜んだらRubyでした orz


323:デフォルトの名無しさん
08/01/23 08:05:16
用意されてないから自分で書くしかない。

324:デフォルトの名無しさん
08/01/23 08:18:10
>>322
やはりそうですか。ありがとうございました。

325:304
08/01/23 08:31:13
>>307
レスが遅くなってしまいすみません。
先ほど試してみたところ、上手くいきました。
ありがとうございました。

326:デフォルトの名無しさん
08/01/23 11:22:00
すみません。初心者の質問です。

System.out.printf("税金: $%.2f x 5.0% = $%.2f. \n", calcp, calctax);

で 5.0% と % を表示したいのですが、どうすればよろしいでしょうか?
よろしくお願いします。

327:デフォルトの名無しさん
08/01/23 11:24:38
>>326
%%

328:デフォルトの名無しさん
08/01/23 11:30:06
>>327
ありがとうございます!
やっとできた・・・(´∀`)

329:デフォルトの名無しさん
08/01/23 13:32:38
オブジェクトをシリアライズ化してセーブしたファイルをロードし、
再びセーブしようとすると、こんなエラーが発生します
Exception in thread "AWT-EventQueue-0" java.lang.InternalError: Unable to bind [ファイル名] to parent
at sun.awt.shell.Win32ShellFolder2$4.call(Unknown Source)
at sun.awt.shell.Win32ShellFolder2$4.call(Unknown Source)
at sun.awt.shell.Win32ShellFolderManager2$ComInvoker.invoke(Unknown Source)
at sun.awt.shell.Win32ShellFolder2.getIShellFolder(Unknown Source)
at sun.awt.shell.Win32ShellFolder2$18.call(Unknown Source)
at sun.awt.shell.Win32ShellFolder2$18.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
対処方法は無いでしょうか

330:デフォルトの名無しさん
08/01/23 18:38:57
現在htmlから受け取ったデータをサーブレットで処理し、JSPで表示させるということをしています。
受け取ったデータをサーブレット内でDBの中にあるデータと照合し、
照合結果を出すということをしたいのですが、
サーブレット内の処理がうまくいきません。

ソースは

public class Servlet extends HttpServlet{
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
req.setCharacterEncoding("Shift_JIS");
res.setContentType("text/html;carset = Shift_JIS");

//パラメータを取得
String id = req.getParameter("id");
String pas = req.getParameter("pas");
String result = "";

try{
// ドライバクラスをロード
Class.forName("org.gjt.mm.mysql.Driver");

// DBへ接続
String url = "jdbc:mysql:///testdb?user=root&password=admin&useUnicode=true&characterEncoding=sjis";
Connection con = DriverManager.getConnection(url);

// プレペアードステートメントオブジェクトを生成
PreparedStatement stmt = con.prepareStatement("SELECT * FROM Login WHERE ID = ? AND PASS = ? ");


331:330
08/01/23 18:40:21
>>330の続き

//IN パラメータ値を設定する
stmt.setString(1,id);
stmt.setString(2,pas);

// クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery();

//指定した条件と一致しているかどうか。
if(rs.next() == true){
result = "ログインに成功しました。";

}else{
result = "ログインに失敗しました。";
}



332:330
08/01/23 18:40:52
>>331の続き
// データベースから切断
stmt.close();
con.close();

}catch(Exception e){
e.printStackTrace();
}

//セッションスコープで値を渡す
HttpSession session = req.getSession();
session.setAttribute("result", result);
RequestDispatcher rd = req.getRequestDispatcher("./loginResult.jsp");
rd.forward(req, res);
}
}

です。
コンパイルはできるのですが、処理を行っているときにtry{}の中を通らないみたいです。
resultの値をJSPで表示させたときnullと出てしまいます。
どのような処理をしたらresultに値を渡せるのかが分かりません。
よろしければ、ご教授お願いします。

333:デフォルトの名無しさん
08/01/23 19:46:18
例外は?
HTMLの方のソースは?
そもそもdoPostにたどり着いてんの?
System.outなりデバッカなりで処理をおった?

334:RoundTrip
08/01/23 20:49:01
質問:
同じinterfaceを持つクラスのインスタンスが、配列になっています。
これらのインスタンスにおいて、変数やインスタンスを共有したい場合
どのような方法があるでしょうか。

よろしくお願いします。

335:デフォルトの名無しさん
08/01/23 20:58:30
>>334
クラス変数

336:デフォルトの名無しさん
08/01/23 20:59:13
配列を所有している側のオブジェクトに所有させて、
そこに問い合わせたら?

337:デフォルトの名無しさん
08/01/23 21:42:31
前回はご回答ありがとうございました。
無事RS232Cのプログラムを作る事ができましたが
エラーが起こって困っています。
どうか、知恵を貸してください。
:作りたいもの:
Rs232Cを用いたシリアル通信を行なうプログラム
:参考サイト:
URLリンク(www.ais-com.co.jp)
URLリンク(www.02.246.ne.jp)


338:デフォルトの名無しさん
08/01/23 21:43:13
:プログラム:
//rs232c.java

import java.io.*;
import java.util.*;
import java.text.*;
import javax.comm.*;
import gnu.io.UnsupportedCommOperationException;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;

class rs232c1{
public static void main(String args[]){
byte rs232c[];
rs232c = new byte[10];
try{
CommPortIdentifier ports = CommPortIdentifier.getPortIdentifier( "COM1" );
SerialPort port = ( SerialPort )ports.open( "RS232C", 1000 );
port.setSerialPortParams( 9600,SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE );
port.setFlowControlMode( SerialPort.FLOWCONTROL_NONE );
InputStream in232c = port.getInputStream();
//読み込み
in232c.read(rs232c);
System.out.println("read="+rs232c);
in232c.close();
port.close();
}
catch( Exception e ) {
System.out.println( "Error:" + e.getMessage() );
}
}
}

339:デフォルトの名無しさん
08/01/23 21:47:43
:実行後のエラーログ:
{\rtf1\ansi\ansicpg932\deff0\deflang1033\deflangfe1041{\fonttbl{\f0\froman\fprq1\fcharset128 \'82\'6c\'82\'72 \'82\'6f\'83\'53\'83\'56\'83\'62\'83\'4e;}}
{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\lang1041\f0\fs20 #\par
# An unexpected error has been detected by HotSpot Virtual Machine:\par
#\par
# SIGSEGV (0xb) at pc=0xb7f6bedf, pid=2701, tid=16384\par
#\par
# Java VM: Java HotSpot(TM) Client VM (1.4.2_16-b05 mixed mode)\par
# Problematic frame:\par
# C [ld-linux.so.2+0x8edf]\par
::: 中略 :::
PATH=/usr/java/j2sdk1.4.2_16/bin:/usr/java/j2sdk1.4.2_16/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/mysql/bin:/usr/local/jdk1.2.2/bin:/usr/local/mysql/bin:/usr/local/jdk1.2.2/bin\par
USERNAME=root\par
LD_LIBRARY_PATH=/usr/java/j2sdk1.4.2_16/jre/lib/i386/client:/usr/java/j2sdk1.4.2_16/jre/lib/i386:/usr/java/j2sdk1.4.2_16/jre/../lib/i386\par
SHELL=/bin/bash\par
--------------- S Y S T E M ---------------\par
\par
OS:Linux\par
rlimit: STACK 8192k, CORE 0k, NPROC 4031, NOFILE 1024, AS infinity\par
load average:-0.01 0.00 -0.01\par
\par
CPU:total 1 family 15, cmov, cx8, fxsr, mmx, sse, sse2\par


340:デフォルトの名無しさん
08/01/23 21:48:38
>>337
>>338
>>339
長文失礼しました。

341:デフォルトの名無しさん
08/01/23 21:58:34
分割して書きこむ暇があったら適当なうpろだに上げろ。

342:デフォルトの名無しさん
08/01/23 22:06:26
>>341
別に分割はしてないんじゃね?

343:デフォルトの名無しさん
08/01/23 22:15:08
ネイティブライブラリがクラッシュしてる。それ以上は知らん。

344:デフォルトの名無しさん
08/01/23 22:41:12
>>341
データをアップしました。
URLリンク(age3.tubo.80.kg)


345:RoundTrip
08/01/24 00:40:07
>>335
クラス変数って、どのクラスのでしょうか。
良ければご指導お願いします。

>>336
配列を所有している側のインスタンスに問い合わせる方法って
どんなものがありますか?
被せたinterfaceの関係で、あんまり引数使いたくないのです。
やっぱり、引数で渡すしか無いでしょうか…。

346:デフォルトの名無しさん
08/01/24 11:13:10
誤爆してしまいましたので、何卒、こちらでご指導お願い申し上げます。

次の選択肢より正しい記述をすべて選びなさい。

1:java.io.FileReaderはテキストファイルから文字を行単位で読み込むクラスである。
2:new File("bbs.txt")と記述すると、新しいファイルが作成される。
3:ファイルの操作を行う前には、Fileクラスのopenメソッドを必ず使用する。
4:BufferedReaderクラスのreadLineメソッドは、ファイルの終端までを読み込む。
5:FileクラスのisFileメソッドの戻り値がfalseだった場合は、そのファイルが無いか、またはその名がディレクトリである事を示している。


347:デフォルトの名無しさん
08/01/24 11:16:48
>>346
javadocみれば一発!正解が全部書いてあるよ!

はい、次の人どうぞ

348:デフォルトの名無しさん
08/01/24 11:18:28
>>346
全部間違い。

349:デフォルトの名無しさん
08/01/24 11:27:14
>>347さん、>>348さん、
激しくありがとうございました。


350:デフォルトの名無しさん
08/01/24 11:31:23
5.は正解じゃないかと思ってjavadocを読み返したが、
確かにファイルでもディレクトリでもない場合がありうるみたいだね。

しかし、ファイルでもディレクトリでもないものってなんだろう?

351:デフォルトの名無しさん
08/01/24 11:39:27
conとかnulかなと思って試してみたら、isFileがtrue返した。
調べてみたら、java6からfalse返すように変ったみたい。

352:デフォルトの名無しさん
08/01/24 11:42:40
>>350
NamedPipe とか デバイスファイル とか。
Javaが動作するプラットフォームはWindowsだけじゃないし。

353:デフォルトの名無しさん
08/01/24 11:47:37
>>351

次のメソッドの動作が変更されました。

  * CON、NUL、AUX、LPT などの予約されたデバイス名には必ず false を返すように、
     File.isFile() Windows 実装が変更されました。以前の戻り値は true で、それが
     Unix で使用するデバイスの動作と整合していないことから、対象ユーザーはこれを
     バグとみなしていました。
URLリンク(java.sun.com)

354:デフォルトの名無しさん
08/01/24 11:58:36
HIDDEN ファイル (存在するが見えない)
シンボリックリンク (リンク先がないのとシンボリックリンク自体が存在しないのとは違う)
デバイスファイル (扱いはファイルシステムに依存)

だいたいファイルとかディレクトリとか、問題が階層型ファイルシステムに限定だし。
AS/400 なんかメモリと二次記憶の区別がなくてファイルっつーか全部テーブルだし。

355:デフォルトの名無しさん
08/01/24 14:02:38
大学の研究でJava3Dを勉強していて、彩画3Dというフリーのクラスライブラリを使って
参考文献を頼りにプログラムを試作しているのですが
URLリンク(www11.axfc.net) PASS:java

回転する球体をストップさせた時、2つの球体が初期位置に戻らないようにして停止させた位置で
止まるようにするにはどうしたらいいのでしょうか


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch