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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
☆★☆こんなメッセージが出たら >>2 へ☆★☆
『'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。』
『Exception in thread "main" java.lang.NoClassDefFoundError: Hello』

>>2-3 初心者によくある質問と回答・他のFAQサイトへのリンク
>>4  JDKの配布元とAPIドキュメントへのリンク
>>5-6 過去スレの一覧
>>7-10 関連スレ
>>11 2ちゃんねる外のJavaサイト・無料の開発環境の配布場所
(諸般の事情でずれた場合は >>2-20 )

Google で検索 ⇒ http://www.google.co.jp/
JavaFAQ で探す ⇒ http://www.gimlay.org/~javafaq/javafaq.html
ご要望によりじゃばこサイト ⇒ http://www.javaco.org/
JavaScriptの質問はWeb製作板へどうぞ ⇒ http://pc3.2ch.net/hp/
パソコンの基本操作に関しては、PC初心者板へどうぞ ⇒ http://pc.2ch.net/pcqa/

これからJavaのプログラムを始めたいかたは >>2-4
必要な情報やコンパイラのダウンロード先へのリンクがあります。

基本的に sage 進行でおねがいします。また煽り厨は放置でお願いします。
2デフォルトの名無しさん:03/04/26 00:27
Q. javac コマンドを実行したときに、
『コマンドまたはファイル名が違います』や
『'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。』
と表示されてコンパイルできません。
A. javac.exeへのPATHが通っていません。
http://java.sun.com/j2se/1.4.1/ja/install-windows.html
を良く読んで、javac.exe のあるディレクトリ(例: C:\j2sdk1.4.1_01\bin )のパスを
環境変数PATHに追加してください。 その後、
Windows98/MEの場合はOSを再起動、
Windows2000/XPの場合はコマンドプロンプトを立ち上げなおしてください。
設定したパスが正しければ、javacが使えるようになります。
それでも同じエラーが出る場合は、設定した値が間違っています。
よく見直してください。

Q. javac Hello.java でコンパイルはできるのですが、
java Hello を実行しようとすると
『Exception in thread "main" java.lang.NoClassDefFoundError: Hello』
と表示されて実行できません。
A. カレントディレクトリ(.)がクラスパス(classpath)に含まれていません。
コマンドプロンプトで、
set CLASSPATH=%CLASSPATH%;.
と設定する。最後の「;」と「.」を見落とさないように!
または、
http://www.gimlay.org/~javafaq/S004.html#S004-02
を読んでカレントディレクトリ「.」を環境変数CLASSPATHに追加してください。

クラスパスとはなにか(JavaFAQ 基礎知識)
http://www.gimlay.org/~javafaq/S004.html


3デフォルトの名無しさん:03/04/26 00:27
Q. Javaのインストール方法、パスや環境変数の設定方法が分かりません。
A: Java(TM) 2 SDK インストールガイド
http://java.sun.com/j2se/1.4.1/ja/install.html
http://java.sun.com/j2se/1.4.1/ja/install-windows.html

Q: クラスの使い方が分かりません。
A: Java 2 プラットフォーム API 仕様
http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html

Q: SDKの仕様や、Javaの使い方、コマンドの使い方を教えて下さい。
A: Java(TM) 2 SDK ドキュメント
http://java.sun.com/j2se/1.4/ja/docs/ja/index.html

Q: Javaの言語仕様が知りたいです。
A: Java言語規定
http://www.y-adagio.com/public/standards/tr_javalang/index.htm
http://java.sun.com/docs/books/jls/second_edition/html/j.title.doc.html

Q: 「僕以外の人も、同じ疑問を持ったはず」と思えるような質問があります。
A: Java House ML Topics / Java FAQ / Java Tips
http://java-house.jp/ml/topics/
http://www.gimlay.org/~javafaq/
http://www.javaworld.com/columns/jw-tips-index.shtml

このほかのFAQ(良くある質問とその回答)はこちら↓をご覧ください。
http://www.gimlay.org/~javafaq/javafaq.html


4デフォルトの名無しさん:03/04/26 00:28
5デフォルトの名無しさん:03/04/26 00:28
6デフォルトの名無しさん:03/04/26 00:28
7デフォルトの名無しさん:03/04/26 00:39
■■■ Java関連スレいろいろ ■■■
【IDE 統合開発環境】
【Java/C/他】統合開発環境Eclipse GM4
http://pc2.2ch.net/tech/kako/1039/10394/1039405354.html
えっ?JBuilder8が発売?
http://pc2.2ch.net/test/read.cgi/tech/1038042372/l50
【Meadow】Java開発環境(・∀・)イイ【JDEE】
http://pc2.2ch.net/test/read.cgi/tech/1017214967/l50
【統合】Java開発環境スレ
http://pc2.2ch.net/test/read.cgi/tech/1038118138/l50
【Java】NetBeans vs Eclipse【IDE】
http://pc2.2ch.net/test/read.cgi/tech/1029407008/l50

【携帯・モバイル】
携帯JAVAのスレッド
http://pc2.2ch.net/test/read.cgi/tech/1011977260/l50
iモード携帯電話用Java(iアプリ) Part 3
http://pc2.2ch.net/test/read.cgi/tech/1040898596/l50
iアプリでゲーム (ゲーム製作技術板)
http://pc2.2ch.net/test/read.cgi/gamedev/1005042631/l50
京セラJAVA搭載PDA「PocketCosmo」 (モバイル板)
http://pc3.2ch.net/test/read.cgi/mobile/1021979970/l50
8デフォルトの名無しさん:03/04/26 00:40
【サーバサイドやエンタープライズ】
EJB(初心者歓迎)
http://pc2.2ch.net/test/read.cgi/tech/1017240849/l50
■■ Servlet/JSP(EJB含む) 質問スレ ■■ (WebProg板)
http://pc2.2ch.net/test/read.cgi/php/1023501812/l50
《The Jakarta Project》
http://pc2.2ch.net/test/read.cgi/tech/1019996589/l50
TOMCAT
http://pc2.2ch.net/test/read.cgi/tech/998525941/l50
Servlet/JSPのフレームワークを語るスレ
http://pc2.2ch.net/test/read.cgi/tech/1001950590/l50
EJBは終わってる
http://pc2.2ch.net/test/read.cgi/tech/1036481443/l50
JavaサーブレットQ&A LV2
http://pc.2ch.net/tech/kako/1012/10127/1012728608.html
サーバーサイドJAVAをまたーり語るスレ
http://pc.2ch.net/tech/kako/1004/10049/1004972840.html


9デフォルトの名無しさん:03/04/26 00:41
【その他】
クライアントサイドJavaどうよ?
http://pc3.2ch.net/tech/kako/1002/10021/1002160815.html
クライアントサイドJavaどうよ? part2
http://pc2.2ch.net/tech/kako/1032/10326/1032665721.html
クライアントサイドJavaどうよ? part3
http://pc2.2ch.net/test/read.cgi/tech/1045891783/l50
ム板のみんなでRobocode (・∀・)ヤロ−ウヨ!1台目
http://pc3.2ch.net/tech/kako/1020/10201/1020161792.html
Java 高速GUI SWT
http://pc2.2ch.net/test/read.cgi/tech/1032448424/l50
【徹底討論】Java3Dの可能性について考える
http://pc2.2ch.net/test/read.cgi/tech/1033703640/l50
★お前らJavaはJNIで組もうぜ★
http://pc2.2ch.net/test/read.cgi/tech/1033795664/l50
Javaアプレットのゲームの限界は! (ゲーム製作技術板)
http://pc2.2ch.net/test/read.cgi/gamedev/1005230153/l50
【Java編】 学校の宿題は俺にやらせろ 【Java編】
http://pc2.2ch.net/test/read.cgi/tech/1040552821/l50
祝 JAVA Developer創刊
http://pc2.2ch.net/test/read.cgi/tech/1024967343/l50
10デフォルトの名無しさん:03/04/26 00:41
■■■ 他板のJavaスレッド ■■■
UNIXでJAVA (Unix板)
http://pc.2ch.net/test/read.cgi/unix/1011292632/l50
LinuxのJAVAチューニングスレ (Linux板)
http://pc.2ch.net/test/read.cgi/linux/1004594459/l50
◆◆◆◆◆◆MacでJava◆◆◆◆◆◆ (新Mac板)
http://pc.2ch.net/test/read.cgi/mac/991194610/l50

■■■ 撲滅させたいかた、死滅を心配してるかた ■■■
CとJavaを比較した場合Cの良いとこと悪いとこ
http://pc.2ch.net/tech/kako/1009/10097/1009707596.html
C#とJava、どっちをおぼえればいいの?
http://pc2.2ch.net/test/read.cgi/tech/1006715468/l50
Java撲滅委員会
http://pc.2ch.net/tech/kako/996/996848309.html
Java撲滅委員会
http://pc3.2ch.net/test/read.cgi/tech/996848309/l50
●●JAVAって死滅しちゃうの????●●
1 http://pc.2ch.net/tech/kako/1005/10051/1005159122.html
2 http://pc.2ch.net/tech/kako/1006/10060/1006053686.html
3 http://pc.2ch.net/tech/kako/1008/10081/1008162230.html
4 http://pc2.2ch.net/tech/kako/1042/10422/1042268758.html
5 http://pc2.2ch.net/tech/kako/1046/10465/1046539052.html
6 http://pc2.2ch.net/test/read.cgi/tech/1047748598/
11デフォルトの名無しさん:03/04/26 00:41
■■■ 民間サイト ■■■
巨大なJavaリンク集
Java的リンク
http://www.geocities.co.jp/SiliconValley/6064/java_link.html
What's New about Java(Java に関する最新ニュース)
http://www.gimlay.org/~andoh/java/javanew.html

■■■ 無料の統合開発環境 ■■■
【Eclipse R2】
http://www.eclipse.org/downloads/index.php
【Sun ONE Studio 4 (Forte 4)】
http://jp.sun.com/products/software/tools/jde/try/index.html
【NetBeans v3】
http://www.netbeans.jp/dowonload.htm
【JBuilder 7 Personal】
http://www.borland.co.jp/jbuilder/jb7/download/

※2chではないので暴れないように。
>>前スレ898
クラスローダを自作して必要なクラスは
ネットワーク越しにダウンロードするようにしては?
>>1 乙
いいから、Thinking in Java読んどけって。
数々のすばらしい評価をうけてる名著だ。
常に最新の内容にアップデートされているし、
フリーでダウンロードもできる。

本当にJavaでOOをちゃんとやりたい人はぜひ読もう。

http://www.mindview.net/Books/TIJ/
15デフォルトの名無しさん:03/04/26 01:24
あ〜あ、また「歓迎」しちゃってるし・・・
うれぴ〜
       _____
      / ヽ 、  \
    / ̄ ̄―     V  ̄  ヽ
  / ̄ ̄――        ̄  ヽ  ヽ
∠_ ―           ̄  ヽ  ヽ ヽ
 /    / /  /        ヽ ヽ  |
 |  /  / /|  /  | | ヽ    ヽ  |  |
 |/|  /| /__」 / /|  | ヽ    |  | |
   | / |/_ |/| / |/|/ゝ    |   |
   |/ |  イ/o|  |/    ̄ ヽ |      |
     |  ー゚'     ー==、 人    /
     |   ノ        / |⌒) /    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      |   ヽ       / /_/ /    |
     八   ` 一    /  /  /    <  1さんお疲れ様(はぁと
      〈  \  ^    〈  / /       |
     ヽ/  \_  <ヽ//        \________
          |     |
          ノ___ノ`ヽ_
     _ ノ(_____ノ    ̄/ ⌒ヽ
   //               // ⌒ ヽ
  / /              //      )
  //             /  (       |
17デフォルトの名無しさん:03/04/26 02:51
あるクラスがあって、その中にインスタンス変数を置きたい場合、
初期化方法は、

  class Word{
   private String aStr = null;
   public Word(){
    aStr = new String("a word");
   }
   public String getStr(){
    return( this.aStr );
   }
  }

とやる場合と、

  class Word{
   private String aStr = new String("a word");;
   public Word(){
   }
   public String getStr(){
    return( this.aStr );
   }
  }

とやる場合と、どちらがいいんでしょう?
>>17
それだけなら、どっちでも変わらんと思う。
そのコンストラクタ以外のコンストラクタがあったりする場合は、
違うけど。
インスタンスフィールド初期化→コンストラクタ起動という順番だ
ということだけは、覚えておいたほうがいいかもね。

あと、String a = new String("リテラル文字列")は、普通
はメモリとインスタンス生成コストの無駄ですよ。
String a = "リテラル文字列" のほうが賢い。
まあ普通の環境なら、これも大して違わないけどねえ。
1917:03/04/26 03:34
>>18
まりがとう。参考になりました。
>>17
下のほうがいい、といわれている。

理由:
デフォルトコンストラクターでの初期化し忘れが無い。
コンストラクター追加の際、デフォルトコンストラクターの呼び忘れが無い。
>>18
> インスタンスフィールド初期化→コンストラクタ起動という順番だ
> ということだけは、覚えておいたほうがいいかもね。

微妙に違う。インスタンスフィールド初期化はコンパイルされると
*すべての* コンストラクタにそのコードを追加したものに *なる*。
コンストラクタにインスタンスフィールド初期化部分が埋め込まれるわけだ。

なので>>17の例だと上のは次のコードと同等。
public class Word {
  private String aStr;
  public Word() {
    aStr = null; // 注目
    aStr = new String("a word");
  }
}

下のは次のコードと同等。
public class Word {
  private String aStr;
  public Word() {
    aStr = new String("a word");
 : :}
}
22デフォルトの名無しさん:03/04/26 06:26
おれは、
public class Word {
 private String aStr;
  public Word() {
   aStr = "a word";
  }
}

っていうやり方が気に入ってる
つまり、初期化はすべてコンストラクタの中
(あるいはコンストラクタの中の初期化メソッドinitXXXなど)
ちなみによ、>>17
前者のプログラムなら
private String aStr = null; って
nullやる必要ないぜ
以前、コンパイラに「初期化されて無い可能性が・・・」などと言われた経験からか?
それを恐れてどこでもnullやってるようじゃ、まだ理解が足りないな
WindowsでアプレットにD&Dしたファイルから
「プロパティ」情報を取り出す事ってできますか?

Wordなどのファイルで「右クリック」 - 「プロパティ」で
見ることができる情報なんですが・・・。
ご存知の方、よろしくお願いします。
24デフォルトの名無しさん:03/04/26 11:59
>>22
初期化が必要なんってどういう時やったっけ?

それから型変換の法則性が未だにまとまらん。
だれか明快に教えて下さい。
>>24
これでも見て勉強すれ。

Java言語規定 第2版 --- 5. 変換及び昇格
http://www.y-adagio.com/public/standards/tr_javalang2/conversions.doc.html
>>22
漏れは初期値はnullなんだよってより強く伝わるかな、との思いから
明示的にnullを設定しています。
>>26
それ、特定のフィールドだけやられると余計な混乱まねきそう。
というかせっかく「設定忘れてねえかゴルァ」とコンパイラが
親切に警告してくれてるのにむやみにnullで初期化して
エラーを潰すのイクナイ
switchやifの分岐を追加したときに値を設定し忘れても
ちゃんとエラーになってくれる
もちろん仕様上初期値が存在するのが正しいなら問題ないけど
>>12
> アプレットの場合
なんでクラスローダは自作できないです。
http://pc2.2ch.net/test/read.cgi/tech/1049715659/907
だとjava.lang.Stringも見つからないと言われたので
うまく動作してないようです(WinXP+IE6SP1+JRE1.4.1_02)。
うーむ。やっぱSystem.getProperty()しかないのか…
>>23
俺も知りたいです。
アプレットというより、コンテントペインでアイコンのドラッグアンドドロップを
処理する方法が知りたい。
いろいろ調べている途中です。
31デフォルトの名無しさん:03/04/26 13:30
Vectorで2次元配列を扱うにはどうしたら良いでしょうか?
Vector自体が1次元配列ですから、Vector[]と定義すれば
2次元として扱えるのかな?
>>31
可変長でなくてもいいならそれでやればいい
じゃなきゃ Vector を Vector にいれる
>>23
サイズとか更新日程度の、大抵のプラットフォームに共通の情報なら、File
オブジェクトの属性から取れるかな。

Windows独自のファイルプロパティは、Windows独自フォーマットでファイルの
一部に格納されているのではないかな?その場合は難しいかも。自力でファイル
を解析する?よくわからんけど、JakartaのPOIが使えるのかも。

>>30
なにはなくともSunのチュートリアル。それでわからない人は頭が足りない。
>>29
Signed Jar使ってAppletに特権与えても、クラスローダ作れない?
35デフォルトの名無しさん:03/04/26 15:50
>>24
>型変換の法則性
意味がなんとなくしかわからんが
class Thinko extends Seiki
class Manko extends Seiki
Seiki s;
Thinko t;
Manko m;
が、あったとして
(Seiki)t;とキャストできるけど
(Thinko)s;とはできない

こういう質問じゃないのか?
>>35
>(Thinko)s;とはできない
できます。
型が合わなければ ClassCastException 食らいますが。

>(Seiki)t;とキャストできるけど
キャスト無しで s = t; とかできますが。
>>33
JLabelのドラッグについてはドキュメントがありますが、
JFrameの外側からOSで使われているアイコンの
ドロップについては、ドキュメントが無いですね。
サポートされていないのでしょうか。
38デフォルトの名無しさん:03/04/26 16:12
マジ質問
(Thinko)s;
この場合Thinkoのメソッドとかにアクセスできるの?
>>38
全角括弧つかってるからできません。
40デフォルトの名無しさん:03/04/26 16:22
>>38
できる。(半角カッコなら)

>>39
意地悪だな。
sがThinkoのインスタンスまたはクラスメソッドならできるだろ。
42デフォルトの名無しさん:03/04/26 17:34
Object型って言うのは、全ての変数方の大元みたいなものでは
ないのですか?
intをObject型にキャストできないみたいなんですけど。
>>37 これかな
www2u.biglobe.ne.jp/~kaduhiko/java_02.html
>>42
int, double, char などはただ値のみであるので、
オブジェクトではない。これらはプリミティブ型という。
Object と同じように、例えば Collection に入れたいようなときは、
Integer や Double を使う。
new Integer(int) でインスタンスを作る。
ちなみに配列 int[] などは Object のサブクラスになる
>>37
イベントを拾うことが出来るし、ナニカのTransferableが飛んできているのは
間違いないさ。ただそれがなんなのかは自分で調べるしかないかと思われ。
DataFlavorのMIMETypeみれば大体分かるんでないのけ?多分リンク先のファ
イルへのパスやファイルオブジェクト自体がはいっていそうだけど…
>>43
しっかり、ありましたね。しかも日本語…
すみません、ありがとうございます。
>>34
どうせユーザーに確認のダイアログ押させるならActiveXにするかも。
そもそも署名のためのコードもMSとSunでぜんぜん違うし
48デフォルトの名無しさん:03/04/26 20:25
Java学習のための実践問題(こういうものを作れとか)とその解答が載ってるサイトを教えてください。
49bloom:03/04/26 20:26
51デフォルトの名無しさん:03/04/26 20:30
>>40
うそつけバカ
サブクラスにキャストしてサブクラスのメソッドにアクセスできるだと?

>>41
おまえは、話の流れが読めてない
>>51
参照がそのサブクラスにキャスト可能なものなら、可能かと。
ナンカ流れが混乱してるね。

53デフォルトの名無しさん:03/04/26 20:39
>50
確かに実践的な課題なんですがちょっと…。
コンソール画面での問題はないでしょうか?
>>51
お前は深読みしすぎ あるいは分かってないかも知れん

>>35 では s に何も参照させてない
s = new Tinko();
した後なら ((Thinko)s).bokki(); できる
した後なら、ってのは変か
まぁ分かってくれ
Mankoにどんなメソッドがあるか教えてくれ
5723:03/04/27 01:42
>>33
情報どうもです。
なるほど・・・HPSFで実装できそうですね。
ありがとうございました。
>>56
int insert(Object obj);
>>58
そのMankoクラスの設計者は変態ですね。
せめて
class UnoffendingObject;
int insert(UnoffendingObject obj);
じゃないと可愛そう。
ところで@returnは何?
>>59
ソースから抜粋
public static final int MAJIRU = 0;
public static final int SHIO = 1;
public static final int BLOOD = 2;

つかこっちでやるネタだな・・・

■いろんな物をプログラミングしてみよう■
http://pc2.2ch.net/test/read.cgi/tech/1040146314/
61デフォルトの名無しさん:03/04/27 02:33
java.util.zipでzipファイルの解凍ツールを作っているのですが、
ディレクトリ構造をjava.io.Fileと同様に
ツリー構造で取得する方法ってないでしょうか?
ZipFile#entriesですと、ツリーではなくリストになってしまいます。。。
62デフォルトの名無しさん:03/04/27 03:14
>java.io.Fileと同様に
>ツリー構造で取得する方法ってないでしょうか?
って、java.io.File自体にツリー構造で取得するメソッドってあった?
俺は再帰ループで自作したような気がするが・・・

まあいいや、俺はやったこと無いが俺ならこうやるだろう

ZipFile#entriesの戻り値はEnumerationだ
これを enuとすると
while(enu.hasMoreElements()){
File f=(File)f.nextElement();//これ通るか心配だが・・・
//ここでf.isDirectory()がtrueなら
//この中もう一回entriesする
}

おれは、ZipFileとFileが同じように扱えるんじゃないかと予想して
こう書いたわけだが、どうなんだろう?
しばらく時間くれちょっとやってみる
他のヤツわかるやついるのならおしえてやってくれ
63デフォルトの名無しさん:03/04/27 03:22
>>62
ZipFile#entriesの戻り値はZipEntry型なんですよ。
ZipEntryって1つのファイルへの参照しか持っていないのです。

ちなみに、ツリー構造っていうのは
親とか子への自己参照を持っているって意味で・・・
自分も再帰で全検索やってます。。。

64デフォルトの名無しさん:03/04/27 03:28
>>38
Seiki s = new Thinko();
これだと、Seikiクラスにあるメソッドしか呼べない。
当然、Seikiクラスにあるメソッドといっても、
Thinkoクラスでオーバーライドされたメソッドが動くが。

Thinko t = new Thinko();
これなら、Thinkoクラスで独自に定義されているメソッドも呼び出せる。

Seiki s = new Thinko();
とやった後で、どうしてもThinkoクラスにあるメソッドを呼ぶには
1・ClassクラスとMethodクラスを使ってinvokeする
2・((Thinko)s).xxx()と書いて使う
などの方法があると思われ
65デフォルトの名無しさん:03/04/27 03:34
Jbuilder7を落とした落としたけどインストールできない。。。
インストール方法を教えてください
66デフォルトの名無しさん:03/04/27 03:37
>>65
買え
6762:03/04/27 03:43
ちょっと違ったが
こんな感じあとはこれをヒントにしてくれ


import java.util.zip.*;
import java.util.*;

public class ZipTest {

public static void main(String[] args) throws Exception{
ZipFile zf = new ZipFile("hoge.zip");
Enumeration enu = zf.entries();
while (enu.hasMoreElements()) {
ZipEntry ze=(ZipEntry)enu.nextElement();
if(ze.isDirectory())
{
System.out.println("Directory");
}
else
{
System.out.println("File");
}
}
}
}
6862:03/04/27 03:50
>>63
今読んだ
戻り値・・・俺の参考書にはEnumerationってかいてある、中身が
ZipEntryってことかだから、俺の上のコードのキャスト通ったわけね
>ZipEntryって1つのファイルへの参照しか持っていないのです
そういうもんなんじゃない?っていうしかない。俺には全検索しか思いつかん
すまない
でも、Javaで再帰全検索って時間かかるんだよな
昔作ったプログラムでCドライブのフォルダファイルをJTreeで表示しようとおもったら
5秒ぐらい固まったまんまだった
質問です。
Javaでは、メソッドの引数に値渡しと参照渡しの区別をつけて渡すことはできないんでしょうか。
基本データ型は値渡し、オブジェクトは参照渡しと自動的に決まってしまうんですか?

基本データ型の参照値がない(扱えない)以上、やはり型によって決まるような気が・・・
オブジェクトは参照としてしか扱えないから、参照値が値渡しされてる。
ナルホモ

結局、たとえばint型の参照渡しなどはできないんですか?
Integer型を使えばいいのかな
>>68
> ZipEntryってことかだから、俺の上のコードのキャスト通ったわけね
62 のコードは
> > File f=(File)f.nextElement();//これ通るか心配だが・・・
で実行時に必ず ClassCastException くらいます。

> でも、Javaで再帰全検索って時間かかるんだよな
> 昔作ったプログラムでCドライブのフォルダファイルをJTreeで表示しようとおもったら
> 5秒ぐらい固まったまんまだった
それは Java のせいじゃないよ。
C/C++ とかで同等の(全検索したあとTreeを表示する)プログラム書いてみればわかる。
ま、Java のが2倍くらい遅いかもしれんが、
C/C++のプログラムでも、そんなことすれば実用的で無いのがわかるだろ。
>>71
>int型の参照渡しなどはできないんですか
出来ません。値渡しになります。
Integerは自分自身の状態の変更を許さないので、Integerを利用しても無理です。
もしそうした要件があれば、int値の属性を持つクラスを定義する必要があります。
>>71
> 結局、たとえばint型の参照渡しなどはできないんですか?
無理。Java は値渡しのみしかない。
( >>70 が言うように参照型は参照値が値渡しされてるだけだし。)

> Integer型を使えばいいのかな
Integer は不変オブジェクトなので無理。

根本的に解決するにはメソッドの再編成するしか。
その場しのぎの解決法としては要素数1の int配列を渡すとか、
もうちょっとマシなのはクラス作ってそれで受け渡すとか。
<血液型A型の一般的な特徴>(見せかけのもっともらしさ(偽善)に騙されるな!!)
●とにかく神経質で気が小さい、了見が狭い(臆病、二言目には「世間」(「世間」と言っても、一部のA型を中心とした一部の人間の動向に過ぎない))
●他人に異常に干渉して自分たちの古いシキタリを押し付け、それから少しでも外れる奴に対しては好戦的でファイト満々な態度をとり、かなりキモイ(自己中心、硬直的でデリカシーがない)
●妙に気位が高く、自分が馬鹿にされるとカッと怒るくせに平気で他人を馬鹿にしようとする(ただし、相手を表面的・形式的にしか判断できず(早合点・誤解の名人)、実際にはたいてい、内面的・実質的に負けていることが多い)
●権力・強者には平身低頭だが、弱者に対しては八つ当たり等していじめる(強い者にはへつらい、弱い者に対してはいじめる(特に人が見ていない場合))
●あら探しだけは名人級でウザく、とにかく否定的(例え10の長所があっても褒めることをせず、たった1つの短所を見つけては貶す)
●基本的に悲観主義でマイナス思考に支配されているため性格が鬱陶しい(根暗)
●何でも「右へ習え」で、単独では何もできない(群れでしか行動できないヘタレ)
●少数派の異質・異文化を理解しようとせず、あるいは理解を示さず、排斥する(差別主義者、狭量、視野が狭い、多数派=正しい と信じて疑わない)
●集団によるいじめのリーダーとなり皆を先導する(陰湿かつ陰険で狡猾)
●他人の悪口・陰口を好むと同時に、自分は他人からどう見られているか、人の目を異常に気にする(自分がそうだから容易に他人を信用できない、ポーズだけで中身を伴っていない、世間体命)
●たとえ友達が多くても、いずれも浅い付き合いでしかなく、心の友達はおらず孤独(心の感度が低く、包容力がなく、冷酷だから)
●頭が硬く融通が利かないためストレスを溜め込みやすく、また短気で、地雷持ちが多い(不合理な馬鹿)
●たとえ後で自分の誤りに気づいても、素直に謝れず強引に筋を通し、こじつけの言い訳ばかりする(もう腹を切るしかない!)
●男は、女々しいあるいは女の腐ったみたいな考えのやつが多い(例:「俺のほうが男前やのに、なんでや!(あの野郎の足を引っ張ってやる!!)」)
>>73
>>74
なるほど、結局

void method(int& a, int& b){}
てのをJavaでやりたければ

class Hoge{
 int a;
 int b;
// setterやgetterも
}

void method(Hoge hoge){}
とかするしかないということか。
サンクスコ
77デフォルトの名無しさん:03/04/27 13:36
これからJavaを始めたい人で、特にiアプリなどの開発をしたい人に
薦められる書籍って何でしょうか?既出だったら申し訳ない。
78デフォルトの名無しさん:03/04/27 13:37
ezplusアプリを作ろうと思って
java2のmicro editionを使っているんですが、ALERT: NoClassDefFoundError : file
というエラーが出て、実行できません。
グーグル検索してみて、CLATH PATHの設定が悪いみたいなんですが、
具体的なやり方がわからず、困っています。
何か、具体的なやり方をご教授願えないでしょうか?
>>78 人に具体的なやり方を聞く前に、自分の具体的な開発環境
を晒すほうが先じゃないかな。コマンドラインからやっているのか
とかKJX作成ツールを使っているのかとか。
http://pc2.2ch.net/test/read.cgi/tech/1011977260/l50
80デフォルトの名無しさん:03/04/27 14:47
>79
 常識はずれでした。すみません
開発環境は、一応KJX作成ツールはインストールしているんですが、
今、使用しているのは J2ME Wireless Toolkit 1.0.4_01 のKToolbarです。
OSはWINDOWS 2000を使っています。
 ちなみに、ソースコードは以下です。
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Sample extends MIDlet implements CommandListener{
  private Command cmd;
  public Sample(){
    cmd = new Command("Exit", Command.SCREEN, 1);

  }
  public void startApp(){
    TextBox textbox = new TextBox("Sample", "Hello World!", 64, TextField.ANY);
    textbox.addCommand(cmd);
    textbox.setCommandListener(this);
    Display.getDisplay(this).setCurrent(textbox);
   }

   public void pauseApp(){
   }
   public void destroyApp(boolean unconditional){
   }
   public void commandAction(Command c, Displayable d){
     if(c == cmd) {
       destroyApp(false);
       notifyDestroyed();
     }}}
どうぞよろしくお願いします
>>74
前すれで配列使う例があったような。
hoge(int[] a){
++a[0];
}
main(){
int[] number = {4];
hoge(number);
}
82デフォルトの名無しさん:03/04/27 19:08
質問です。
class Main{
public static void main(String[] args){
A a = new A();
}
}
class A{
B b = new B();
}
class B{
void method(){};
}
このときmainメソッドからBのmethodにアクセスできますか?
>>82
A,B,Main が同一ファイル内とか、同一パッケージ内なら、
a.b.method() でアクセスできるけど。
84デフォルトの名無しさん:03/04/27 19:26
>83
そんな単純なことだったんですね。すいませんでした。

あともうひとつ、もしMain=人、A=買い物篭、B=商品だとしたら
「商品の値段を見る」というメソッドはどこに記述すべきでしょうか?
Aの中でしょうか?Bの中でしょうか?
>>84
個々の商品の値段だったらB。
買い物の総額を見るんだったらA。
>>84
商品価格が店ごとに違うなら
C=店 に B もしくは A ごとつっこんで返してもらう
定価どおりのときは店C が B のメソッドからそのまま拾う
87デフォルトの名無しさん:03/04/27 20:47
linuxのEmacsで例えば"test.java"というソースプログラムを
コンパイルするには、Esc-xでcompileと入力した後、どういう
コマンドを入力すればいいですか?
M(Esc)-x compile は、Makefileを起動するコマンドmake -kあたりが
出てくると思います。
ソースと同じフォルダにMakefileを書いてみましょう。
#in Makefile
JAVAC=javac
all:
#この下のコマンドは、全角空白じゃなくて、「タブ一個」の次に書く。
 ${JAVAC} test.java
#これで完璧、あさごはん。
まあmake -kを消して javac test.java でもいいわけだが。
9063:03/04/27 21:12
>>67
今10個ぐらいあるクラスパス上のjarファイルのClassのインスタンスを
全取得するものを作ってみたんだけど、
1回目はZipEntryからすべての情報を取得して配列に格納し、
2回目以降は配列を参照するようにしてみた。

すると、
1回目・・・5秒くらい
2回目・・・0.5秒くらい
ってな感じになりました。

カレントにあるディレクトリのみ探すときは
1・属性がディレクトリのものを探す
2・パスからカレントのパスを消す
3・セパレータで分割したときに配列の要素数が1になるものを取得
って感じで検索するようにした。
>>90
コレクションではよくやる手だよね
92デフォルトの名無しさん:03/04/27 21:37
すみません
どっちの書き方が他人にはわかりやすいですか?

//1
for (int i = 0; i < target.length; i++)
  if (target[i].isVisible())
    visible++;

//2
for (int i = 0; i < target.length; i++){
  if (target[i].isVisible()){
    visible++;
  }
}

『{ }』をつけるかつけないかで悩んでいます
Java初心者です。
よくある一般的なHello Worldを出力するプログラムで
日本語を表示させたいのですがうまくいきません。

ソースファイルをsjisやユニコードにしたりcharsetを色々試しましたが
???と出力されてしまします。
apache1.3.27 tomcat1.4.01 windowsXP

厨な質問ですがよろしくお願いします。

ソース
public void doGet (HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{

response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html><head>");
out.println("<title>Sevlet Test</title>");
out.println("<meta http-equiv=\"Content-Type\" content=\"text/html;charset=Shift_JIS\">");
out.println("</head>");
out.println("<body bgcolor=\"#FFFFFF\">");
out.println("Hello Worldあああ");
out.println("</body></html>");
out.flush();
out.close();
}
ソースを読まずにレス。
javac -encoding sjis
>>92
2だと思う。
他人でなくても、後々の事を考えても2だと思う
96デフォルトの名無しさん:03/04/27 21:54
sprintf(str,"%2d",i);
と同じ事をやりたい場合、
str = new DecimalFormat("##").format(i);
str = new DecimalFormat("00").format(i);
などではうまく行かないのですが、どうすればいいのですか?
97デフォルトの名無しさん:03/04/27 21:58

response.setContentType("text/html"); をチョット変えろ
98デフォルトの名無しさん:03/04/27 21:59
>>94
原田洋子読んだのか?
99超初心者:03/04/27 22:01
もしstringがnullだったらempty stringを返すのって

if(string== null) return("");

でいいですか?
>>99
それでいーけど、

必要ないのに return にカッコ付けるなって言われない?
10199:03/04/27 22:06
あ、カッコ要らないんですか?そんなことも知らなかった…
どうもありがとう>>100さん
10293:03/04/27 22:30
>>94
ダメですうまくいきません
うーわからん
103デフォルトの名無しさん:03/04/27 22:31
>>102
response.setContentType("text/html"); をチョット変えろ
>>100
returnの後に("");をつけないとempty stringは返せないような気がするけど・・・
if(string== null) はどうせなら if(!string) の方がカコイイよね
105電源が落ちる!:03/04/27 22:38
JDKをインストールした時におまけについてくるDEMOのJava2Demoを実行,
終了させるといきなり画面が暗転,再起動してしまいます。

以前にも同じような事がありました。Javax.swing.JScrollPaneを利用した
プログラムを作って,実行,終了させると突然再起動。IEを閉じた時にも
同様な事が度々起こり,アプレットが関係していたのでは,と勝手に推測。

で,JDKのバージョンを1.4.1_02にしましたら,JScrollPaneは解決,IEの
方も今の所トラブルは起きておらず,安心してました。

ところが,今日,DEMOのJava2Demoを実行,終了させると突然再起動。
OS(WindowsXP)からは,デバイスドライバに問題があります,っていう
メッセージが・・・。何のデバイス? ぼくの知識では解決できそうにありません。
是非,アドバイスをお願い致します。
ビデオカードは?
>>104
> returnの後に("");をつけないとempty stringは返せないような気がするけど・・・
return "";

> if(string== null) はどうせなら if(!string) の方がカコイイよね
Java の話だよね? 参照型に!演算子は使えないような。
108デフォルトの名無しさん:03/04/27 22:52
>>104
あほか?あんた
特に、「if(string== null) はどうせなら if(!string) の方がカコイイよね 」の部分
わけわかんねーよ
10993:03/04/27 22:53
>>103
できました。ありがとうございます。ううう。

response.setContentType("text/html;charset=Shift_JIS");
110デフォルトの名無しさん:03/04/27 22:53
新参者です。質問させてください。
当方、JDK1.4.1_02を使用してアプレットを作ったのですが、
どうも自分のマシン以外で動作しないので「はて?」と思い
別のマシンで同じコードをコンパイルして実行してみると、
ブラウザでは同じように「load: class (class名) class not found」と表示されているにもかかわらず、
appletviewerでは正常に表示されてたりします。
この場合、どこを疑ったらいいですかね…?
>>110
javac -target 1.1 *.java
すんません、96の質問お願いします。
それともそういうAPIは無いのですか?
113電源が落ちる!:03/04/27 22:58
>106
レス,ありがとう!
ぼくも最初に疑ったのがビデオカードでして,早速ドライバを最新のものに
更新してみました。(ビデオカードはATIのRADEON8500)
う,しかし,状況は・・・。変わらずです。
>>111
素早いレスありがとうございます!
ですが、parseDouble()みたいに、1.2で導入されたものなんかをコンパイルする時は
-target 1.2でしますよね?
すると、また同じように「load: 〜〜not found」になってしまうのですが…
115デフォルトの名無しさん:03/04/27 23:06
javadoc をローカルに持っておきたいのですが, どこでDL可能なのでしょうか?
>>112
DecimalFormatって空白での右詰できないんだよね。
str= (i < 10 ? " " : "") + Integer.toString(i);
とか自力でやらんとダメ。
>>114
-target ってのは、クラスファイルのフォーマットを指定するだけだから、
1.2以降で指定されたメソッド使っても問題ない。
>>115
http://java.sun.com/j2se/1.4.1/ja/download.html
の下のほうとか探してくれ。
>>118
なるほど。勉強になりました。
で、-target 1.1でコンパイルし直しましたが、ブラウザ起動の時、以下のようなメッセージが出ました。
error: java.lang.NoSuchMethodError: java/lang/Double: method parseDouble(Ljava/lang/String;)D not found
これは、どういうことでしょうか…?
>85,86
ありがとうございます。オブジェクト指向で、モノが決まっても
メソッドをどこに置くか、どう呼び出すかという所でいつも戸惑ってしまいます。
階層を深くするとややこしくなるし、例外を含めると難しいです。
GW中は暇なのでJavaに精進することにします。
>> 119
感謝!
自分の調べ方が足りなさ過ぎました.よって
反省...
>>120
Double.parseDouble
導入されたバージョン: 1.2

ちゅうことです。
>>120
実行時のVMが 1.1 のクラスライブラリしか持ってない場合は
since 1.2 とか 1.3 とか 1.4 のメソッド使ったら動きません。

parseDouble でなくて valueOf 使うとかしませう。
>>123>>124
なるほど、ありがとうございました!
早速コード書き直します。
126125:03/04/27 23:28
連続レスすいません。
同じアプレットなのに、自分のマシンではちゃんと動くのに
他のマシンでまったく動かないのは何故なんでしょうか?
勿論、ローカル実行ではなくて、どっかのISP鯖にうpしてそっから実行してます
127デフォルトの名無しさん:03/04/27 23:29
質問です。

j2sdk1.4でThrowableを使って、スタックを取得し、
ログにログメソッドの呼び出し元を記録するというのやってみたのですが、
StackTraceElementというのを使ってみました。

本題ですが、上記と同様なことをj2sdk1.3でできるのでしょうか?
StackTraceElementは1.4にしかないので・・・
1.3はネイティブになってるのかな。。。
java.awt.Imageオブジェクトをファイルに書き出して
保存する方法はありますか?
129環境: OS : WindowsXP Professional SP1 、JDK : j2sdk1.4.1_01:03/04/27 23:55
javadoc の -sourcepath の機能がいまひとつわかりません。
---
C:\usr\mona\Hello>javadoc Hello.java
---

がうまくいくときに、

---
C:\usr\mona\Hello>cd ..
C:\usr\mona\>javadoc -sourcepath Hello Hello.java
---
とすると、

---
パッケージ Hello.java のソースファイルを読み込んでいます...
javadoc: warning - パッケージ Hello.java のソースがありません。
Javadoc 情報を構築しています...
javadoc: warning - パッケージ Hello.java のソースがありません。
標準 Doclet バージョン 1.4.1

constant-values.html の生成
javadoc: ドキュメント化する public または protected クラスが見つかりません。
エラー 1 個
警告 2 個
---
となってしまいます。
私の理解では、 -soucepath Hello の指定によって、 Hello\ へ Hello.java を見に行ってくれるもんだと思っていたのですが。
何が間違っているのでしょう。そもそも -soucepath はこういった目的で使うものではないのでしょうか?
130初心者:03/04/28 00:04
linuxでjavaのプログラミングをしようと思って
java2RuntimeEnviromentを落したんですけど、emacs
でコンパイルしようとするとjavac: command not found
とか出てコンパイルできません。どう設定すればいいのか
詳しく教えてください。お願いします。
× java2RuntimeEnviroment
○ java2SoftwareDevelopmentKit
13279:03/04/28 00:07
>>80
んー、うちKToolBar使ってないからわかんない。
IBMのWSDDっていうJ2ME用統合開発環境だと
80のソースはコピペだけで実行できたけど。
Java始めたばかりの初心者です。

Javaで"や\をエスケープするのめんどくさいですけど。
Javaではperlのqq||やシングルコートでの文字列定義みたいなことはできないんですか?
>>133
あんたは、コード組むのも面倒なんじゃねえの。
>>134
じゃあ言い方を変えよう

エスケープが多数発生すると可読性が著しく損なわれるのですが
Javaに回避する方法はありますか?ないんですか?
>>135
無いよ。C/C++ にも無いしね。
>>135
こんなんどう?
ソース中に文字列を埋め込まない。
>>130
J2RE はJavaのバイトコードを実行するためのソフトだよ。
コンパイラとかは JDK に入ってるのでそっちを落としてくらさい。
139133=135:03/04/28 00:34
>>136
ありがとう
>>129
http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/win32/javadoc.html#sourcepath
> -sourcepath オプションは、javadoc コマンドにパッケージ名を渡すときにだけ使用できます。
141初心者:03/04/28 00:44
>>138
SDKを落したんですけど、使えるようにするための
設定とかが分かりません。初心者なので詳しく教えて
もらえたら嬉しいです。
>>128
ImageIO とか使うとか…
>>127
1.3 じゃ無理。

アレな方法としては printStackTrace() で
エラー出力に書き出してから、それを解析するとか。
145129:03/04/28 01:03
>>140
ありがとうございます。
この場合は、 Hello ディレクトリに降りて実行するしかないわけですね。
スレタイだめだろ。【Javaの初心者】【大歓迎】じゃないと。

で、>>1

質問する時は「どこで(なにで)つまづいているか」を必ず書くこと

を追加して欲しい。

あと質問初心者(≠Java初心者)は>>2以降なんて普通読まないんだから
>これからJavaのプログラムを始めたいかたは >>2-4
なんて書いても意味が無いと思う。
>>1にQ&AのQと対応する>>を書いておくのが望ましいと思う(行数オーバーするかもしれんが
>>113
ATIのビデオカードのバグ。さんざんがいしゅつじゃ。
1.4.1_02にageれ
ツールバーのボタンのサンプルイメージを探してるのですが、検索するとホームページの
サンプルばかりが出てきて、肝心のファイル開く とか、検索ボタンのイメージ等がなかなか
出てきません。
どこか、いい素材を集めたサイトってないですか?
自分でつくってもいいのですが、ありきたりすぎて。。
>>146
900 超えてからもう一回頼むわ。たぶん忘れてるから。
>>148 ツールバーのボタンは, ありきたりのほうが
わかりやすくていいと思うが...
151148:03/04/28 02:13
ありきたりの物で、ちょっとお洒落なやつを探してるのです。
なかなか見つかりませんね。
ホームページばっかりです。
>>148 >>150-151
Java の話題じゃないから他所でやってくれ。
>>148
それのどこがJavaの質問なのかと小一時(ry
154153:03/04/28 02:22
>>152
ケコーン
155148:03/04/28 02:22
java 使ってるのですが。。。

どこのスレがいいですかね?
>>155
板違いじゃねぇの?
>>155
WEB制作板が適当かな。
スレ違いだけど一言だけ。
俺はMozilla(Netscape,Phonix等)のスキンjarファイルをそのまま使ってる。
cssを解釈して画像のリソース取得すればスキン機能のおまけもついてくる。
ファイルを開くとかのイメージは残念ながらないから>>148の期待にはこたえられないだろうけど。

>>149
了解
159128:03/04/28 07:26
>>143
ありがとうございます
試してみます
160質問です。:03/04/28 10:36
画像を256色に変換をしたいのですが、
どなたかやり方を教えてください。
>>160
減色処理のアルゴリズム等に関してはスレ違いなので、以下のスレとかで聞いてください。
http://pc2.2ch.net/test/read.cgi/tech/992671330/l50

もっと具体的な質問でないと答えられん。
162質問です。:03/04/28 11:26
了解しました。
では画像ファイルのフォーマット形式を取得するにはどうすればいいでしょう?
>>162
Jimi でも使っとけばエエんちゃう?ColorReducer も付いとるでよ。
164質問です。:03/04/28 12:08
jimiですか。

出来れば
1.4系でのやり方を知りたいのですが。

この辺の文献を参考にしたのですが
ttp://www5.airnet.ne.jp/sakuraba/java/laboratory/JDK1.4/Graphics/ImageIO/ImageIO.html
どうやら拡張子を見ているようで・・・

出来れば拡張子は見たくないんです。
>>164
javax.imageio.metadata.IIOMetaData 使えば、
jpeg, png, gif ぐらいだったらフォーマット形式得られるんじゃないでしょーか。
>>164
>>165 ぐらいなら頭数バイト読めば事足りるぞ
JFIF GIF89a BM PNG
JFIFは先頭についてるわけじゃないぞ
>>167
分かってるよ PNG もそうだし
16917:03/04/28 17:43
レスが超遅れマスタ(;´Д`)

>>20, 22
クスコ(・∀・)
とりあえず、明示的にnull入れるのが習慣になってて、
入れないと精神的に不安定になりそうなので(w
入れることにしまつ。
17017:03/04/28 17:54
似たような質問なんですが、
Listオブジェクトを生成するとき、

  class MakeList{
   public MakeList(){
    List aList = new ArrayList( this.getList() );
   }
   public List getList(){
    List someList = new ArrayList();
    someList.add( (String)"String for adding to List" );
    return( someList );
   }
  }

こうする場合と、

  class MakeList{
   public MakeList(){
    List aList = new ArrayList();
    aList = this.getList();
   }
   public List getList(){
    List someList = new ArrayList();
    someList.add( (String)"String for adding to List" );
    return( someList );
   }
  }

こうする場合は、だいたい同じ処理なんでしょうか?
>>170
必要ないのに、return に括弧つけ無いほうが良い。
ちなみに、前者と後者は無駄なことやってることにかけては大体同じ。

無駄を省くとこんな感じ?
 class MakeList{
  public MakeList(){
   List aList = this.getList();
   //aList を使って何かする
  }
  public List getList(){
   List someList = new ArrayList();
   someList.add( (String)"String for adding to List" );
   return someList;
  }
 }
> someList.add( (String)"String for adding to List" );
someList.add( "String for adding to List" );
173170:03/04/28 18:54
>>171
サンクスコ(・∀・)
なるほどね。。。参考になります。
冗長すぎるのも考え物ってことですね。
174170:03/04/28 18:58
>>171
あ、1つ確認させてくだちい。

getList()メソッド内で生成された
ArrayListのインスタンス someList が格納されている部分は、
コンストラクタMakeList()内の aList の参照先として、
使われなくなるまで保持されると考えてよろしいですか?
175デフォルトの名無しさん:03/04/28 20:36
>>174
大丈夫だ
なんか心配性だなあんた
コードの書き方みて性格がわかる
176148:03/04/28 20:59
スレ違いかどうかは知らんが、探してきたので貼っとく。
次スレ立てるとき10ぐらいに貼っといてくれ。(貼らんと思うが)

サンプルアイコン集
http://developer.java.sun.com/developer/techDocs/hi/repository

自分はすれ違いでないと思うのだが。
プログラムのロジックを答えるだけが、このスレの目的?
事実、java のdeveloperのページにあったし。。。

PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("msgfile")));
yourname = new String(yourname.getBytes("8859_1"), "Shift_JIS");
pw.println(yourname+"\n");
こんな感じでmsgfileに書き込もうとしていたんですが、
パス指定しないと"C:\WINDOWS\system32"に作成されちゃいました。
これってどこを見てこうなっているのか、デフォルト変更の方法とか教えてください
しかしWINDOWS\system32に作られると激しく鬱だったんですが、Java的には普通なんでしょか。

j2sdk1.4.1_02 tomcat1.4 windows
>>175
レビュアやペアプロのパートナーに向いてそうだね。
179170:03/04/28 22:00
>>175
アドバイス、ありがとうございました。m(__)m
スキーリしますた(・∀・)

>>178
えぇ、意外にこんな性格でも重宝されてます(w
180デフォルトの名無しさん:03/04/28 22:03
JAVAを始めようと思ってCMAGAZINEの
Java2StandardEditionVer.1.4.1っていうのをインストールしたんですけど
使い方がさっぱり分かりません
どうすればいいんですか?
>>180
スタートメニュー→JAVA WEB START→JAVA WEB START起動
→MilitaryGame App 起動→ActionsのNew Gameでこころゆくまで遊ぶ
182デフォルトの名無しさん:03/04/28 22:44
いや遊ぶとかじゃなくてプログラミングしたいんですけど
J2SE付属ってことは4月号か。
手元のCマガジンをもう一度読め。さわり程度の話は載ってるはず。
それで物足りないと思ったら(普通は物足りないと思うが)本屋で本を1冊買ってきて、
今度はそれを読んでみよう。
185デフォルトの名無しさん:03/04/28 22:58
なんか>>2-3みてもわからないんですけど
ただ、プログラミングが分からないとかじゃなくて
Javaの開発環境の起動の方法がわからないんです
>>185
スタートメニュー>アクセサリ>メモ帳
187デフォルトの名無しさん:03/04/28 23:02
>>186
メモ帳なんですか?
188デフォルトの名無しさん:03/04/28 23:02
なんかVC++みたいなあーいうのじゃなくてメモ帳でやるんですか?
>>185
開発環境の起動なんてものはない。
あるのは<J2SEインストールディレクトリ>/bin にある
コマンドラインツールのみ。
ちなみに、javac がコンパイラ。javaが実行コマンド。
>>185
JDK には IDE ついてないので。
必要なら Eclipse とか NetBeans とか使ってください。
「javac HelloWorld.java」 で検索すれば、手取り足取り教えてるサイトが見つかるぞ。
「javac HellowWorld.java」て書いてるやつは間違ってる可能性が高いので避けろ
hallo world の流行は終わったのか…
193デフォルトの名無しさん:03/04/28 23:12
なるほど
皆さんありがとうございました
無料では上手くいかないものですね
Eclipse スレに行ってみ。
>>193
ちょっと待て!
なぜそれが「うまくいかない」になる?
JDKとメモ帳で充分のはずだが????

俺はずっと秀丸とコマンドラインでやってたぞ!
最近Eclipseを使うようになったが、Eclipseだって無料だ!
まじですか?
色々調べてみます。
メモ帳で言いじゃん。万能だぞあれは。軽いし、ゲイツ印だし。
>>197
例え初心者でもメモ帳はお薦めできない。
仮に日曜大工レベルでも、すべての作業をカッターナイフでやる奴はいないだろ?
せめて秀丸やemacsみたいなプログラミングに向いたエディタを使えといいたい。
emacsのキーバインドをWindowsの標準にする方法教えろ
C^p でプリンタを使いたいのか?
つか板違いだな。ウニか犬スレへGo
最近 Eclipse に変えたけど、TeraPad よかったよ。
よく使うクラス色分けしたり javah だの rmic だの起動したり
エクリプス最強!!エクリプス最強!!
これで俺もやっとCVSなオープンソースの仲間入りだYO!!
うわぁ・・・CVS使ったことないくせに・・・

それはともかくそろそろSubversionに移行しようかと思う今日この頃。
eclipseダウンするのが面倒なので雑誌のcdromとかに収録してないですか?
>>204
JavaWorld6月号。国際化パッチもついているので便利
おお、ありがたい>205
207デフォルトの名無しさん:03/04/29 01:39
プログラムの中で、ある時からの経過時刻を利用したいのですが
System#currentTimeMillis では、ある時と経過時刻の間で、OSの時刻を変更されたとき
ちょっと困ったことになりそうです。

解決するには、プログラムの起動時間などで調べれば解決しそうなのですが
こういう処理の場合はどうするのが適切なのでしょうか?
>>207
経過時刻が知りたいだけなら、プログラムの起動中に時間の累計を
何処かにとっていけば良いのではないだろうか。
1分ごとに1インクリメントして、60になったら1時間経過って事で。
すいません。わかる方いましたら教えてください。

PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("msgfile")));
yourname = new String(yourname.getBytes("8859_1"), "Shift_JIS");
pw.println(yourname+"\n");
こんな感じでmsgfileに書き込もうとしていたんですが、
パス指定しないと"C:\WINDOWS\system32"に作成されちゃいました。
これってどこを見てこうなっているのか、デフォルト変更の方法とか教えてください
しかしWINDOWS\system32に作られると激しく鬱だったんですが、Java的には普通なんでしょか。

j2sdk1.4.1_02 tomcat1.4 windows
>>209
カレントワークディレクトリにファイルが出来るだけだと思うのだが。
System.getProperty("user.dir")の戻り値が、カレントワークディレクトリだとおもう。
Tomcat起動時に、TmocatがそれをSyste32に向けちゃってるのかも。

>>210
ありがとう
212デフォルトの名無しさん:03/04/29 06:13
>>208
それじゃ1分ごとの1インクリメントの間際に時計いじられたらインクリメントされないだろw
>>212
1分ぐらいの誤差は許せ。
>>213
カップラーメンのタイマーだったら伸びちまうぞ
>>214
それじゃあどうすりゃイインダYO!
おしえてYU!
>>207
公開NTPサーバにアクセスして標準時をもらうとか。
そこまでする必要があるのかわからんが
>>207
プロセスの実行時間を取得する。
218デフォルトの名無しさん:03/04/29 08:02
>>207
昔、ある有名な会社のJavaで作ったソフト使ったことあったんだが
それは、使用期限付きのソフトで
起動している最中に「カタカタ」とHDDが鳴り止まない
なにやってんのかな〜?と、思っていたが
どうやら、1秒ごとに使用時間をインクリして記録してるみたいだった
あれは、マジでうざい
219bloom:03/04/29 08:26
>>209
>>210
Tomcatなんて書いてある?
実行したjava.exeがある場所がカレントディレクトリになるからだよ。
WindowsにJDKをインストールするとSystem32にjava.exeがコピーされて、
環境変数を何もいじらないでコマンドラインからjavaコマンドを打つと
System32にあるjava.exeが実行されるからだよ。
eclipse使ってるんですけど、
ソースいじっててコードをそろえようと、タブキーおしたら、すげーずれるんですけど
これってどうやって直すんですか?
くだらなくてスマソ
222221:03/04/29 10:26
ttp://muimi.com/j/eclipse/useful.html
すいません、自己解決できました。
放置ありがd
223209:03/04/29 12:05
>220
なるほど。てっきり実行したclassファイルがあるディレクトリが
カレントなのかと勘違いしてました。
コマンドラインじゃなくてformからのservletなんですけど
同じなんですねたぶん。

ありがとうございました。もう少し調べてみます。
>>208関連で質問
Javaでsleepは使えないの?
Thread.sleep ってのがあるけど。
GWを利用して勉強がてらブロック崩しもどきでも作ろうとしたのですが
どうしても判らない部分があります。

透過GIFで作った画像を分割し、ブロックにしたいのですが

 切り取った32*32のImageが全部透過色ならブロック無し
 色有りの部分があればブロック有り

としたいのですが、このような判定はどうしたらできるでしょうか?
ソースコードの日本語が化けます。
バージョン2.1でソースコードに書いた日本語が読めません。
Shift-Jisじゃ日本語化できないんですか?
もしよろしければお願いします;;
229228:03/04/29 14:51
あ、eclipseの話です
>>228
フォント設定した?
231228:03/04/29 15:01
>>230
フォントShift-Jis じゃだめなんですか?
>>231
それは文字コード。
ウィンドウ→設定→ワークベンチ→フォント
でJava Editer Font をMS Gothicあたりにすればいい。
233228:03/04/29 15:09
Emigrant32っていうソフトをいれてみたのですが、
それを使ってるときは日本語を使うことができます。
しかし、行をクリックするたびに、フォントが変わりうざいです。
234228:03/04/29 15:17
>>232
できました。
ありがとうございました。
男ならforteだろ
>227

お答えどうもです。あれからもう1時間ググってみたところ
PixelGrabberというのを見つけました。

int pixel[]=new int[16*16];
pg = new PixelGrabber(blockgif,0,0,16,16,pixel,0,16);//PixelGrabberクラスを生成
try{
pg.grabPixels();
}catch(InterruptedException ie){}

でpixel配列に読み込んで値が12632256の部分が透過のようです。
ご迷惑をおかけしました。
237デフォルトの名無しさん:03/04/29 16:21
すいません、教えてください。
ボタンを押して(次へ進むとか・・・)次の項目の画面に飛ぶようにするには
どうしたらいいんですか?
>>237の文章に足りないところを俺なりに埋めてみた。[]が追加したところね。
すいません、教えてください。
[AWTやSwingなどを用いたGUIアプリケーションで]ボタンを押して
(次へ進むとか・・・)次の項目の画面に飛ぶようにするには
どうしたらいいんですか?
[インストーラでよくあるような、同じウィンドウで次々と画面が変わる
ようなアプリケーションが作りたいです。]

java.awt.CardLayoutを使うとお望みの結果を得られるよ。
>>237の文章に足りないところを俺なりに埋めてみた。[]が追加したところね。
すいません、教えてください。
[submit]ボタンを押して(次へ進むとか・・・)次の項目の画面に飛ぶようにするには
どうしたらいいんですか?
[CGIを使えないサーバなのです]
240デフォルトの名無しさん:03/04/29 17:11
>>238
すいません、言葉が足りて無かったですね、そのとおりです。
親切にありがとう
241デフォルトの名無しさん:03/04/29 20:46
「私書箱」機能付きの掲示板を作成したいんだけど、よかったら誰かつくりかた教えてくれ
「秘書箱」機能付きの掲示板を作成したいんだけど、よかったら誰かつくりかた教えてくれ
243デフォルトの名無しさん:03/04/29 20:53
「死者箱」機能付きの掲示板を作成したいんだけど、よかったら誰かつくりかた教えてくれ
誰も236に突っ込んであげないの
      / ̄ ̄\
      | ・ U  |
      | |ι     \ パンパン
/ ̄ ̄ ̄ 匚      ヽ
| ・ U    \      ) ))
| |ι         \  ノ
U||  ̄ ̄ ||||
↑236
>>241
まずは普通の掲示板を作れ。
教えてください。
PATHの設定はうまくいったのですが、CLASSPATHの設定がうまくいきません。
OSはwin98です。
autoexec.batには、PATH、CLASSPATHともに何も書いてなかったので、
SET PATH=%PATH%;C:\WINDOWS\COMMAND;C:\J2SDK1.4.1_02\BIN;
set CLASSPATH=.;C:\J2SDK1.4.1_02\BIN;%CLASSPATH%
こんな2行を追加してみました。
これでもうまくいきません。
どうすればいいのでしょうか?
javaしたいよう・・・。
>>247
何がうまくいかないのかそれではサパーリわからん。
ちなみに、C:\J2SDK1.4.1_02\BIN なんかにCLASSPATH通す必要はない。
>>1-4 は読んだのか?
249電源が落ちる!:03/04/30 01:12
Frameクラスを継承,MouseMotionListenerをインプリメンツしたクラス内で,
マウスで曲線を描くイベントメソッドの部分だけ書き出します。
public void mouseDragged(MouseEvent e){
grp = getGraphics();
grp.drawLine(x, y, e.getX(), e.getY());
x = e.getX();
y = e.getY();
}
これだと,確かに曲線を描けるんですけど,細いんですよね。
もう少し太いのが描きたくて,fillOvalの利用を考えました。
public void mouseDragged(MouseEvent e){
grp = getGraphics();
grp.fillOval(x-5, y-5, 5, 5);
x = e.getX();
y = e.getY();
}
ところが,これだと連続した曲線が描けません。途切れ途切れになってしまいます。
マウスで連続した曲線を描くにはこのやり方ではダメみたいです。
いい方法をどなたか教えて下さい!
250デフォルトの名無しさん:03/04/30 01:15
>249
名前が変。すみません。
251デフォルトの名無しさん:03/04/30 01:32
JavaBeansのルールとして「Serializableインターフェースの実装」があります。
ネットや本などで調べてもいろいろ書いてはいるのですが、
なかなかイメージがつかみにくく、人に説明しずらい状況です。

みなさんなら、どうやって説明しますか?
>>251
ServletコンテナやEJBコンテナがPassivation/Activationを行う際に
シリアライズできないとディスク書き込みが出来ないから。
>>249
Graphics2D使うとペンの太さを設定できる。

たとえばこんなかんじ。
import java.awt.*;
import java.awt.event.*;
public class MouseDraw extends Frame {
private int x;
private int y;
private Graphics2D grp;
public MouseDraw() {
addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
grp.drawLine(x, y, e.getX(), e.getY());
x = e.getX();
y = e.getY();
}
});
setSize(400,400);
show();
grp = (Graphics2D)getGraphics();
grp.setStroke(new BasicStroke(5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
}
public static void main(String[] args) {
MouseDraw test = new MouseDraw();
}
}
254デフォルトの名無しさん:03/04/30 02:47
>>253
やってみました。
な,何と!描ける!描けるではないか!素直に感動!
このような道具があったなんて。まだまだ勉強不足ですね。
ありがとうです!
JMenu と JPopupMenu が Menu と PopupMenu との関係と違い
JMenuItem を追加していく処理を一般化できなくて激しく面倒なんですが
なんとかなりませんか
>>255
もうちょいと具体的に。
257デフォルトの名無しさん:03/04/30 08:08
abstractとinterfaceってどうやって区別して使うべきなんでしょうか?
すべてinterfaceですむと思うのですが…
複数回数のポップアップメニューを入れ子で作っていくとき、
JPopupMenu は JMenu のサブクラスだから、
メソッドをこんなんできたわけです。
addMenu(pm = new PopupMenu(), c);

public void addMenu(Menu menu, Object obj) {
 if (obj instanceof Collection) {
  Iterator it = ((Collection)obj).iterator();
  Menu m = new Menu(it.next().toString());
  menu.add(m);
  while (it.hasNext()) {
   addMenu(m, it.next());
  }
 } else {
  menu.add(new MenuItem(obj.toString()));
 }
}

でも JPopupMenu と JMenu は、
メソッド add が同一のインタフェースやクラスから継承されているものじゃないから、
それぞれの処理を個別に書かなきゃならないわけで。
getClass() から getMethod() して invoke するしかないのかなぁ・・・
>>257
何かを継承して、一部の処理だけは書き換えたいときどうするつもりだ?
>>257
じゃなかった、何? abstract と interface ?
対照するものじゃないぞ
抽象クラスはあくまで継承関係としての設計。
インターフェイスは見た目と実装の分離や
異なる継承関係のクラス同士に共通の見た目や振る舞いを実装する場合に使う。
262bloom:03/04/30 08:26
263デフォルトの名無しさん:03/04/30 08:40
JavaでJavaScriptを動かせますか?
264デフォルトの名無しさん:03/04/30 08:45
エスケープ文字列を評価する方法を教えてください。
String c = "\\u" + "0041";
System.out.println(c);
の出力を「A」になるように改造したいので。
>>263
Mozilla の JavaScript ライブラリを落とせ

>>264
System.out.println((char)Integer.parseInt("0041", 16));
266デフォルトの名無しさん:03/04/30 14:36
パッケージjava.awt.dnd
はマウスのドラッグ中のクラスやインターフェイスがありますが、
どのように使用するのでしょうか?イベントリスナにextendsやimplements
で使用しましたができませんでした。java.awt.eventとは使い方が
違うのでしょうか?
268デフォルトの名無しさん:03/04/30 15:13
addメソッドでくっつけるやり方ではないのですか?
269デフォルトの名無しさん:03/04/30 22:29
JDBCのコネクションプーリングについて質問です
プーリング使う場合と、
以下のように使いまわすのでは
どのように違うのでしょうか?
Stringオブジェクトみたいに同じに見えても
内部的には新しいコネクションオブジェクトが生成されているんでしょうか?
Connection conn = null;
Statement stmt = null;
ResultSet rset = null;

try {

conn = dataSource.getConnection();
stmt = conn.createStatement();
rset = stmt.executeQuery(sql1);
//処理1
      rset = stmt.executeQuery(sql2);
//処理2
rset = stmt.executeQuery(sql3);
//処理3
   :
   :
   :
} catch(SQLException e) {
} finally {
try { rset.close(); } catch(Exception e) { }
try { stmt.close(); } catch(Exception e) { }
try { conn.close(); } catch(Exception e) { }
}
}
一つのコネクションでいくつステートメントを実行してもかまわんよ。
つうか、それが普通の使い方。





(この意味の無い改行はなんだろう・・・)
272180:03/05/01 00:01
いつぞやの180ですがイクリプスにしました
273デフォルトの名無しさん:03/05/01 00:08
>>270
レスありがとうございます

あ、あのじゃあプーリングってどういうときに使えばいいんですか?
プーリングは
Connection.close()をしても実際には切断されないで、
アプリケーションサーバがプールしておく機能。
次回にgetConnection()が呼び出されたときに実際に
認証・接続するのではなく、プールから割り当てられる。
アプリケーションからは接続・切断に見えるが
実際にはプールから割り当て・プールへ返却という動作になる。
275デフォルトの名無しさん:03/05/01 00:24
>>274
ありがとうございます
しかし、それをやるやり方と
使いまわすやり方と
どうしてパフォーマンスが変わるかわかりません
たとえば、共有のコネクション持ってるBeanがあって
別のアプリからそれぞれコネクションを引っ張ってくる場合
ぐらいしか、有用性は無いと思うんですが・・・
単一のアプリだったら必要ないですかね?
JNDIがわかりません
いや、そもそもディレクトリサービスについてわかりません
解説している本があれば教えてください
>>269 に書いたクラスを複数回呼び出した場合、
コネクションプーリングを使わないと
呼び出した回数分だけ接続・切断が繰り返されるでしょ?
>>277
はい、納得しました
ありがとうございました
>>276

例えば君が普段使っているエクスプローラが、いわば"ローカルディス
ク上のファイルについてのディレクトリサービス"のビューワ、のよう
なもの。

ファイルだけでなくて、例えば、今動いているEJBとかServletとかJDBC
接続先のDBとか、ありとあらゆるものを登録しておくのがJNDI。JNDI
サーバに問い合わせて、いろんな物の場所を検索して、見つかったらそ
れに接続するなり何なり出来るという寸法。

分散システムで、サーバーごとのいろんな設定情報なんかを、たった一
箇所のJNDI上においとけば、管理が楽でしょ。
現在 JEditorPane を使って、html ファイルをローカルから読み込み、表示するというアプリケーションを
作ってるのですが、mouseを動かした時にnull pointer がでてしまいます。
どうやら、editorkit が動いてるようなのですが、よくわかりません。
誰かお助けを。

エラーメッセージです。

java.lang.NullPointerException
at javax.swing.text.html.HTMLEditorKit$LinkController.doesElementContainLocation(HTMLEditorKit.java:733)
at javax.swing.text.html.HTMLEditorKit$LinkController.mouseMoved(HTMLEditorKit.java:631)
at java.awt.AWTEventMulticaster.mouseMoved(AWTEventMulticaster.java:268)
at java.awt.Component.processMouseMotionEvent(Component.java:5066)
at javax.swing.JComponent.processMouseMotionEvent(JComponent.java:2763)
at java.awt.Component.processEvent(Component.java:4822)
at java.awt.Container.processEvent(Container.java:1525)
at java.awt.Component.dispatchEventImpl(Component.java:3526)
at java.awt.Container.dispatchEventImpl(Container.java:1582)
at java.awt.Component.dispatchEvent(Component.java:3367)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3359)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3087)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3004)
at java.awt.Container.dispatchEventImpl(Container.java:1568)
at java.awt.Window.dispatchEventImpl(Window.java:1581)
at java.awt.Component.dispatchEvent(Component.java:3367)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:445)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:191)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:144)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:130)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:98)
281280:03/05/01 02:27
アプリケーションは、表示のみで、まったく編集等はいらないです。
282280:03/05/01 02:31
ePane.getEditorKit().deinstall(ePane);

エラーはなくなりました。すみません連続一人スレでw

これによる悪影響は、編集したいとき以外ないですよね?
283デフォルトの名無しさん:03/05/01 07:43
>>279
それはちょっと違う。
JNDIはディレクトリ階層を持つデータベースへのアクセス手段を抽象化したもの。
たとえばLDAPとかDNSとかその他もろもろ。
279がJNDIサーバーとか読んでるのはJ2EEアプリケーションサーバが提供しているディレクトリ。
J2EEコンポーネントとか設定情報を取得できる。
いやぁ〜まいったわホンマ
わし、いままで「Arrays」っちゅうクラス知らんかったんですわ
なもんやさかい、自分で配列ソートしよるクラス自作しよったんですわ
なにを考えていままでやってきたんやろ思うと涙出てきますわ
こないだも、Preferences知ったときにはびっくりしましたわ
もうわしの数々の自慢のユーティリティークラスが、わやになってしもたわ
あかん自信なくしてもうた
>>284
2行目から読んでないけど、たぶんそうなんじゃないか?
286デフォルトの名無しさん:03/05/01 10:21
>>284
その程度ならまだマシ。
前にWebObjectsのWOF/EOFっていうフレームワークを知ったんだが、
Servlet+JSP+JDBC+EJBでやってた作業が、アホらしくなった。
3ヶ月くらいかけてやってた作業の成果物が、ぜんぶ用意されてた。。。
逝ってくる。。。
287動画直リン:03/05/01 10:26
>>286
逆に WACs っていうフレームワークで用意されている「すげー」機能
(当時初学者) のほとんどが J2SE/J2EE 標準機能をラップしただけと
いうことに気づいた時もショックが大きかった...
289デフォルトの名無しさん:03/05/01 16:45
Javaって何語でどういう意味ですか?
>>289
和製英語で風呂釜洗い機のことです。
291デフォルトの名無しさん:03/05/01 16:56
>>290
ありがとうございます
292美人OL:03/05/01 16:58
さやかだけどさっきの話の続きなんだけど

http://www.net-de-dvd.com/
>>290
それはJaba
294289:03/05/01 17:04
>>293
まじで?
>>29
まじ
296289:03/05/01 17:06
>>290にだまされたーーー
298動画直リン:03/05/01 17:13
299デフォルトの名無しさん:03/05/01 20:06
Win9x,NT4.0クライアントのTCP/IPプロパティ内で指定したDNSサーバの
アドレスを取得して標準出力するサンプルプログラムをつくりたいのです
が、DNSサーバのIPアドレスを取得するためのAPIは在りますか?
Java 1.xで。

300デフォルトの名無しさん:03/05/01 20:41
Java初心者です.
2つ質問があります.
クラスメソッドとインスタンスメソッドは
クラスメソッドの方が速く動作するようですが,なぜでしょうか?

また,クラスメソッドが早いとしたら,
値を返すだけ(数値計算のたぐい)のメソッドはクラスメソッドとして
作ったほうがよいのでしょうか?
>>300
オーバーライドされてないかとか色々チェックが入るんじゃないのかね?
303デフォルトの名無しさん:03/05/01 20:47
Javaってランタイムのバージョン上がって以前のソフトが
動かなくなったりしないんですか?
ようするにDLL Hellは起こるのでしょうか?
>>303
怒るよ。
305300:03/05/01 20:55
>>301

レスありがとうございます.
確かにクラスメソッドをオーバライドするのは不可能ですよね?
オーバロードは可能かもしれないけど.
> オーバーライドされてないかとか色々チェックが入るんじゃないのかね?
はいんねーよ。
307デフォルトの名無しさん:03/05/01 20:58
率直にお聞きします。こういうページはローカルに保存できませんか?
ttp://www.imm.ne.jp/users/takarajima_zooming/photo02/
静的メソッドなのに動的バインドするわけないだろ。
クラスメソッドのオーバーライドって何打YO!!
>>307
できたよ。

<html>

<head></head>

<body>

<center><applet code=com.imagepump.applets.IPViewer archive=cook.jar width=800 height=600>
<param name="view.maxzoom", value="200">
<param name="app.protocol", value="Cooker"><param name="image.name", value="."></applet></center>
</body>

</html>
何か勘違いして一人大暴れしている>>302=>>306=>>308がいるスレはここですね。
>>308
Del厨死ね
>>310
勘違いしているのはあんた>>301=>>310な。
それからあんたのリダイレクト間違ってるから。
>>312
VB厨はJavaなんて使わないでくださいです。。。
>>313
いい加減に、無知なのは自分って気づけよ。恥ずかしいなぁ。
>>314
取りあえずお前の敵は2人以上いるぞ。俺の他に1人以上な。
まぁ、がんばれ。
>>315
そのひとりはJavaなんかしらねー無能野郎だがな。
>>316
それが問題なんだよな・・・ハァ。
VB厨はオーバーライドって言葉を知らんのでしょうなぁ。
オーバーライドされていると実行時にどっちのメソッドを
呼ぶか分からんのです。だから実行するたびに、
チェックをおこなうのです。だから遅くなるのです。
分かりましたか?

>>318
だから実行するたびにチェックなんておこなわないって。
ポインタって知っていますか?
あぁ、Java厨には分からないかもしれませんねぇ(藁
>>319
あなたこそ仮想関数テーブルって知ってますか?
>>320
知っているよ! 名前くらいはな! 馬鹿にするな!
>>315-317
自演ご苦労さんです。
>>320
知っているなら、>>301>>318が間違っているの分かりますよね。
いっしょに笑ってやりましょう。


>>323
そうだな。実行時にチェックしているわけ無いな。
わらわら。
最近はJava厨とDel厨とVB厨の三大勢力が台頭しているせいか、Ruby厨の活動を見ないな。
で結局
> クラスメソッドとインスタンスメソッドは
> クラスメソッドの方が速く動作するようですが,なぜでしょうか?
これは何故なの?
>>326
オーバーライドされてないかとか色々チェックが入るから(藁
>>326
ポインタを参照する分時間かかるんですよ。
>>326
取りあえず明日おいで。アホな知識厨に目付けられちゃったね。
>>329
答えでたよ。>>328が正解。
>>330
ということにしたいのですね?('-'*)
VB厨はオーバーライドされてるかチェックすると思ってるのか?(藁
なんでVB厨なんだYO?
>>332
313と318と矛盾してるぞ。
意見を変えるならもっと潔くやれよ。
335デフォルトの名無しさん:03/05/01 21:24
動けばいいじゃない Javaなんだし。

あいだみとぅうぉ
>>331
まさか本気で反論するつもりじゃないよね。ネタだよね。
337デフォルトの名無しさん:03/05/01 21:26
Win9x,NT4.0クライアントのTCP/IPプロパティ内で指定したDNSサーバの
アドレスを取得して標準出力するサンプルプログラムをつくりたいのです
が、DNSサーバのIPアドレスを取得するためのAPIは在りますか?
Java 1.xで。
>>336
本気っつーかネタっつーか、反論できるほど知識ないし。
>>337
空気読め。質問できる雰囲気じゃないだろ。
>>309さん
画像が表示されないんですけど
341300:03/05/01 21:35
お騒がせして申し訳ありません.
原因を作ってしまった張本人の300です.

インスタンスメソッドをクラスメソッドに変更したら,
若干速くなったので,その理由が知りたかったのです.

個人的には,コンパイル時に呼び出されるメソッドが確定するから速くなる
とおもっていたのですが,

いずれにせよ,申し訳ありませんでした.
で結局
> クラスメソッドとインスタンスメソッドは
> クラスメソッドの方が速く動作するようですが,なぜでしょうか?
これはどうなったの?
343300:03/05/01 21:37
>>342

私には,これ以上想像もつきません.
何せ,Javaはじめたばかりの厨房以下なので。。。
フィールド値を諸々纏めたメモリ領域の先頭がそのインスタンスを表すポインタだとして、
そのフィールド値の中には「どのクラスであるか」という情報がいずれもあり、
クラスに宣言されたメソッドはクラスメソッドだろうがインスタンスメソッドだろうが
そのバイトコードがやはりどこかのメモリ領域に纏めて置いてあるとし、
さてクラスメソッドを invoke するにあたってはコンパイル時にほぼ一意、
ランタイムにおいては一度の呼び出しで、そのバイトコードのありかが解決するものであるが、
インスタンスメソッドにおいては、
今メソッドを呼び出そうとしているインスタンスが実質何のクラスのインスタンスであるかは、
その都度調べられ、そののちやはり一意となるメソッドのバイトコード位置からバイトコードを呼び出すのであり、
その上でインスタンスのポインタを与えてメソッドが実行されるので、
because, 一ステップ手間がかかってしまう、というような設計を俺だったらするしそれが自然だと思うがまぁ JIT がからむとよう分からん
>>344
すげぇ!1文が10行以上にわたって!

ドキュメントとか書かせたくないなぁ・・・こいつに。
まだ、馬鹿がいたのか。いい加減に無知なのに気づけよ。
それともやめて釣り死に転職かな。
347344:03/05/01 21:54
>>345
俺の javadoc すごいよ

/**
* 移動
*/

/**
* 消去
*/

/**
* 消去その2
*/
>>346
また君か。毎日毎日ご苦労様。
でもそろそろ煽りの(プじゃなくてプログラミングのプぐらい覚えようよ。
この板にいて恥ずかしくないの?
349デフォルトの名無しさん:03/05/01 21:57
            / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  _∧ ∧ ∧ < ちゃんと日本語勉強しようね
 (_・ | (´∀`)  \_____________
   | Ю⊂)_√ヽ
   (  ̄ ∪ )^)ノ
    || || ̄|| ||
    || ||  || ||
350__:03/05/01 21:58
351 :03/05/01 22:00
352300:03/05/01 22:04
>>344
詳しい説明ありがとうございます.
遅くなるのは,そのポインタ参照分なんですね.
なんとなくですが,分かったような気がします.
こんにちは
awtで
drawStringで文字列を描写するとき、
斜めに描写したいのですがどうすればよいのでしょうか?
よろしくおねがいします。
>>353
drawString("斜");
drawString(" め");
drawString("  の");
drawString("   文");
drawString("    字");
drawString("     列");
>>353
Graphics2D や AffineTransform
質問です。
javax.swing.Actionの、public static final String DEFAULT
オブジェクトのプロパティ (テキストまたはアイコン) を設定または取得するときに、
記憶取得キーとして使うと便利な定数です。

って何に使うんですか?
357デフォルトの名無しさん:03/05/01 22:50
Win9x,NT4.0クライアントのTCP/IPプロパティ内で指定したDNSサーバの
アドレスを取得して標準出力するサンプルプログラムをつくりたいのです
が、DNSサーバのIPアドレスを取得するためのAPIは在りますか?
Java 1.xで。
>>355
ありがとうございます
ためしてみます
359デフォルトの名無しさん:03/05/01 22:52
Javaやってるやつらってなんでこうもダメなやつが多いんかね。
心に余裕がないんでつね。低給でこき使われているから
性格がひん曲がっているですつかあ?
人生の敗北者は無視してください
次の質問
361デフォルトの名無しさん:03/05/01 23:23
java起動するのに1分くらいかかるのですが、
なんでだろう?
友達は30秒くらいだと言っています。スペック的には同じなのに・・・
セレロン1Gでメモリ512Mです。
起動の時間てこんなもんですか?
教えてあげる余裕無いんだろうな
初心者でもちゃんと勉強さえすれば
すぐに追い越されるからな
まあ、余裕無いやつってーのはJavaしか知らないやつだな大抵・・・
それ、遅いな
いったい何を起動してるんだ?
Forteとかだったらまあ、1分かかるけど・・・Pen3-500
あぁ仕切り直されてしまった。
全然急いでないのですぐじゃなくてもいいのですが、
>>356をご存知の方がいらっしゃったらお願い致します。
365361:03/05/01 23:43
javacでコンパイルするのに1分くらいかかるんですよ。最初だけですけど
ウイルスバスターがツールバーにあるんだが、関係あったりするのですか?
>>365
俺はjavaの起動は1秒ぐらいだなあ。
j2se1.4.2beta Windows2000 Celeron800MHz 192MB
>>365
> ウイルスバスターがツールバーにあるんだが、関係あったりするのですか?
思いっきり関係ある。
リアルタイム検索の対象から.jarを除外しる
>>365
ウィルスバスターのユーザではないのではっきりとは覚えていないが、
古いバージョン (?) のウィルスバスターは java.exe, javac.exe などの
起動時に、そいつらがアクセスしようとしたコアライブラリの jar (rt.jar)
をすべてウィルススキャンするため起動がめちゃくちゃ遅くなると聞いた
ことがある。rt.jar は JDK 1.4 で 22MB の ZIP 圧縮ファイルな。
ウイルス対策意味無いじゃん
370361:03/05/02 00:10
リアルタイム検索切ったらめちゃくちゃ早く起動しました!
ありがとうございます。
javaってこんなにはやかったんですね?
javaって時間かかるからやりにくいって思ってたんですよ。
よかった。
けど、リアルタイム検索切るのはまずい。
.jarだけ除外するってのがよくわかんな。
セキュリティ板にでもいって聞いてきます。
JAVAってすごいですね
キャストで嘘ついたら怒るなんて
すごいよ。ぬるぽするとガッするし。
>371
いったん Object にキャストすると怒られなくなる。
まぁ、その後の挙動に保証など無いんだが。。
しっかしネタだなぁ。。 漏れの発言までネタっぽい。。
ファイナライザはなんのためにありまっしょい
>>374
おれも、そう思った
実行されるタイミングが確定できないのはつらい
>>375
それどころか、ファイナライザは実行されることが保証されていない。
>>299 未処理
>>374
GCのタイミングでしなきゃいけないことは、実は殆どないので、
現在ほとんど使われません。趣味か知識オナニーを除いて。

ヒープメモリ→どうせGCが整理してくれます。
外部リソース(JDBCコネクションなど)
→どうせライフサイクルに応じて明示的に解放しなきゃダメです。

多分、多くの人が必要としている(のに、APIドキュメントの記述は
意味不明ですが)のは、ファイナライザではなくてjava.lang.ref
のほうだと思う。
>>343
InvokeVirtualよりInvokeStaticのほうが速いのは理にかなってると思うが。
前者:オーバーライドその他の解決をおこなう処理が必要
後者:単に該当するクラスのメソッド領域にジャンプ
C++でもvirtual関数のvtbl解決しないですむ分、staticのほうがはやいでそ。

実際君がどうやってはかったのかしらんし、ほんとはどうなのかもしらんけど。
推測です。
380379:03/05/02 04:01
上のほうみたら、もう回答かいてあったのね。
>>364
putValue()やgetValue()のキー。
>>381
それは知ってます。ですから、
「public static final String DEFAULT は何に使うのか」
と質問したんです。

Action.SMALL_ICONとかはJButton等が自動的に使うようですが、
DEFAULTとは何なのかということです。
Frame.setSize()するとタイトルバーを含めたウインドウサイズが設定されるようですが
この結果設定された描画領域(Windowの中身)のサイズを知るにはどうすれば良いですか?
Container取得して
Container.getSize()でいいんでないの?javax.swing.JFrameしかつかえんが・・・
java.awt.Frameなら知らん
385デフォルトの名無しさん:03/05/02 12:16
>>279
それをみると、JNDIってのはxinetdなどのスーパーサーバーみたいなものに
見えるんですが、たとえ悪いでしょうか?
386 ◆IzdKJ.WAZA :03/05/02 14:01
ちょと質問させてくださひ
サーバにパケット送信しようとして

char packet[] = {0x00,0x1d,0xda,0x03};
      /* 中略 */
out.print(packet);    /* out はソケット出力ストリーム */

とやってみたんですが,正しい応答が帰ってこなかったのでパケットモニタしてみたら

00 1d 3f 03

というようなデータが送信されていました。
試しに 00 1d da ff に変えて送信したところ今度は

00 1d 3f 3f

となりました。いまいち原因&対処法がよく分からないので
ご存知の方教えてもらえますか?
>>386
えっと、なめてんのか?と。
>>386
>out.print(packet);    /* out はソケット出力ストリーム */
out#write(byte[] b); を使ってくらさい。
char は unicodeで一文字を示すための型で、符号なし 2byte値です。
(サロゲートペアとかあるとそうでもないけど)

print() は Unicode から encoding の変換を伴うので、
その際に変換不能な文字は 0x3F('?') とか \uFFFD(定義領域外を示す) とかに
置き換えられます。
389 ◆IzdKJ.WAZA :03/05/02 17:09
>>388
なるほど。。裏でそんな変換が行われてたとは知らなかった
勉強になりました。ありがとうございました(´ー`)
390デフォルトの名無しさん:03/05/02 17:23
アプレット+DBでConnectionとPreparedStatementとResultSetを使って
アプレットからDBへアクセスしようとしています。
SunのVMではうまく繋がるのですが、MicrosoftのVMだと繋がりません。
繋がっているのかもしれないけれどデータが取り出せません。
(というのもMSのVMだとコンソールが表示できないのでエラー内容がわからない)
MSのVMを使ってアプレットからDBにアクセスするにはどうすればよいでしょうか。
また、SunとMSのVMの互換性というのはどこで調べればよいでしょうか。
ちなみに環境はTomcat4.0+Mysql3.23+mm.mysql-2.0.4-bin.jarです。
>>390
>(というのもMSのVMだとコンソールが表示できないのでエラー内容がわからない)
InternetExplorer で
ツール->インターネットオプション->詳細設定->Microsoft VM->Javaコンソールの使用(再起動が必要)をチェック。
その後、表示->Javaコンソール でコンソールが出ます。
392390:03/05/02 17:45
>>391
そんなところにありましたか!
早速表示させてみたところconnect : java.sql.SQLException: No suitable driver
なるエラーが出ました。ドライバがしょぼいってことですかね。
>>392
しょぼいのではなくロードされていないのだろう。
ってか MySQL の JDBC ドライバって JDK 1.1 対応してんの?
イクリプスから実行の右矢印が消えました
395デフォルトの名無しさん:03/05/02 21:00
こんにちは。
コマンドプロンプトで自作javaアプリケーションを実行しましたら、
メモリ不足エラーとでましたので
コマンドプロンプトでjava -Xmx128m 〜
としましたら、うまくいきました。
デェフォルト値が64Mだそうですが、この値をコマンドプロンプト
上で打たずにあげる方法ってありますでしょうか?
396デフォルトの名無しさん:03/05/02 21:01
任意のオブジェクトをシリアライズして、Stringオブジェクトにする方法で、
良いものはありませんか?
ObjectOutputStreamに、StringWriterを接続しようと思ったらうまくいかず。。。
ObjectOutputStream( ByteArrayOutputStream )
みたいな感じで、byte配列に格納してみたのですが、
一見うまくいってるように見えても、デシリアライズするときに例外吐いたりしてます。

ググってみても、シリアライズしたデータをfileに落とすものばっかりで。
>>396
あー、Base64 で変換しつつ入出力する OutputStream 持ってんだけど
あげない。
JDK 1.4 なら XML 型式で入出力する奴があるだろう。
398デフォルトの名無しさん:03/05/02 21:15
うぉおおおおおおおおおおおおおおおおおおお!
今日「JAVAワールド」
見たらめっちゃ (;´Д`) ハァハァ な幼女が表紙やんけ!
JAVAができたらあんな子とあんな事やこんなことできるのか!?
俺、今日からJAVA使いになるよ!
> JAVAができたらあんな子とあんな事やこんなことできるのか!?
できません。Javaは諦めてください。



つーかキチガイくんな。高尚なJava使いの血が汚れる。
javaでTCPレベルのフィルタリングを行いたいのですが、
JNIを使用しないでも実現できまるのでしょうか?

具体的にはローカルマシンが送受信しているTCPデータを
プログラムとOSの間に入って読み取れればと思っています。
401デフォルトの名無しさん:03/05/02 21:47
>>397
いやーそれがJDK1.3なのよ。。。
モノをくれないなら、なんかヒントか、情報へのポインタなんか
もらえると、禿しくカンシャなんだが。。。
>>400
プロキシタイプのプログラムを作らなきゃ無理だろうな。もちろん
マシンが通信している全データを取ろうというのは無理な話。
403デフォルトの名無しさん:03/05/02 21:53
jarファイルの作成・展開をjavaの中でRuntime.getRuntime().execを
使用して行ってます。

単純な解凍は「jar xf F:\TEST.jar」で出来たのですが、
解凍先ディレクトリを指定した解凍の仕方が分かりません。

jarコマンドはtarコマンドとほぼ同じ、との事なので、
tarコマンドのディレクトリ指定方法を以下のように行ったのですが、
実行できません(使い方一覧が表示されてしまう)
「jar xf F:\TEST.jar -C D:\Melt\」

+Lhaca等で解凍した場合、きちんと指定ディレクトリに解凍できるので
方法はあると思うのですが、いろいろ試したものの出来ません。
どうやったらディレクトリを指定して解凍できるでしょうか?
>>402
やはりそうなのですか。
一つのプログラムを指定してその送受信データを
取得するのはできるでしょうか?

プロキシタイプのプログラムというのは
どういうのでしょうか?
参考になるサイトか何かヒントになるクラスだけでもいいので
教えてください。
4051/2: 改行多すぎ:03/05/02 22:07
>>401
Base64 版は見せれんが、こんなのどうだ? ASCII 16 進数で入出力する
フィルタストリーム。

public class HexOutputStream extends FilterOutputStream{
  public HexOutputStream(OutputStream out){ super(out); }
  public void write(int ch) throws IOException{
    out.write(Character.forDigit((ch >> 4) & 0x0F, 16));
    out.write(Character.forDigit((ch >> 0) & 0x0F, 16));
  }
}
public class HexInputStream extends FilterInputStream{
  public HexInputStream(InputStream in){ super(in); }
  public int read() throws IOException{
    int ch1 = in.read();  if(ch1 < 0)  return ch1;
    int ch2 = in.read();  if(ch2 < 0)  return ch2;
    return ((Character.digit((char)ch1, 16) & 0x0F) << 4)
      || ((Character.digit((char)ch2, 16) & 0x0F) << 0);
  }
}
4062/2: 改行多すぎ:03/05/02 22:08
即興で書いたので細かいミスは勘弁。これを ObjectOutputStream と
ByteArrayOutputStream の間に置いてやって、最後に String を構築
してやれば良い。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(new HexOutputStream(baos));
out.writeObject(...);
out.close();
Strin hexText = new String(baos.toByteArray());

ByteArrayInputStream bais = new ByteArrayInputStream(hexText.getBytes());
ObjectInputStream in = new ObjectInputStream(new HexInputStream(bais));
Object hoge = in.readObject();
in.close();
407386 ◆IzdKJ.WAZA :03/05/02 22:18
あーやっぱりダメですね。。
byte [] にすると宣言する時点で 0xda の精度が落ちている(整数で218だから範囲外)
と怒られますし,char型にキャストして out.write((char)packet[i]) とやっても
やっぱり'?'に化けます。。

Javaで作るTCPクライアントとか見ても
out.println("Hello World!") とかで
パケット作成まではやってないし。。

とりあえずもう少し弄ってみます
直接は関係ない話だけど
最近のjarコマンドってjavacと同じくjavaで書かれたはずだから
Runtime.getRuntime().execよりもこっちの方がいいと思うよ
>>407
えーと、まず最初にバイナリデータの入出力に Writer 系を使うのを止めなさい。
410 ◆IzdKJ.WAZA :03/05/02 22:31
>>409
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
↑まさにご指摘の通りでした。。これ削ってやってみます
byte packet[] = {(byte)0x00, (byte)0x1d, (byte)0xda, (byte)0x03};
OutputStream out = new BufferedOutputStream(socket.getOutputStream());
out.write(packet);
out.flush();
...
>>395
どこかで読んだことがあるが
「パソコンの実メモリが128MB以下の時は32MB
512MB以上のときは50%がデフォルト」
みたいなこと書いてあった。
ちなみに実際の数値は今俺が適当に考えたので違います。

まあそういうことなので、メモリ増やせば一番楽、あとはバッチファイルから起動するとか
413 ◆IzdKJ.WAZA :03/05/02 23:31
>>411
どうもです 今電車の中なんで帰ったらやってみます
414デフォルトの名無しさん:03/05/02 23:57
ArrayListオブジェクトarrayがあるとして

こうやるのと
for (int i = 0; i < array.size(); i++) {
//処理
}
}
こうやるのでは
int length=array.size();
for (int i = 0; i < length; i++) {
//処理
}
}
後者のほうがパフォーマンス上がりますか?
それとも変わりませんか?
>>414
大して変わらんと思われ。

もし、その程度のパフォーマンスの差が気になるなら
ArrayList の使用を止めるとか(これも大した改善は期待できない)、
その部分を native 化する(これも大した改善は期待できない)とか
考えたほうが良いと思う。
>>414
理論上後者のほうがパフォーマンスが良いだろうが、よっっっぽどの
事がなければ現実的に変わらない。計測誤差に隠れるだろう。
>>414
その程度の最適化は最近のJITコンパイラなら朝飯前だろうから、
人間様がわざわざやる必要はないと思われ。

つーか、HotSpot Server VM とか IBM JDK とかの最適化は
マジで凄い。
>>417
何が、どう?
419414:03/05/03 00:23
みなさんありがとうございます
配列とかでは、気にしないで
lengthはよく使いますけど
コレクションの場合だと負荷がかかるんじゃないか?
パフォーマンス的にどうなのかな?
と思って質問させてもらいました
>>415ArrayList の使用を止めるとか
確かにそのとおりかもしれません
実際、余裕があればコレクションを使わずに配列を
使用するように心がけていますが
そうすると、ソースの見通しが悪くなるので
そういうことを天秤にかけてやってます
420417:03/05/03 00:35
>>418
実際、俺も昔、>>414のように不変値をローカル変数へキャッシュしたり、
メソッド呼び出しを減らすような変更をちまちまやってみたことがあったのよ。
しかも画像処理系のプログラムだったから、少しは効果あったかなと思って
ベンチマークとってみたんだが、全然効果なし。(w

そのとき使ってたのは HotSpot Server VM だったんだが、
ループを繰り返すたびに最適化が進んで実行速度が上がっていくのは
本当小気味よかったな。
>>414 は可変値なわけだが。
422デフォルトの名無しさん:03/05/03 01:37
>>421はいいトコついたッ!

でも、処理中にサイズ変更がないことが前提じゃないのかな?
そうでなけりゃ質問者の2つ目の例はありえないよ。
通常、ランダムアクセスのList実装に対する
コレクションイテレートの好ましいイディオムは...
for (Iterator i=list.iterator(); i.hasNext();) {
// 処理
}
なんだから。

>>414
ちなみに僕は、array.size()がループ内での処理中に
サイズ変更が絶対に起こりえないと保障でき、かつ、
array.size()をこのループの繰り返し回数を導出する
ためだけに利用するのであれば、次のような方法が最善である
と信じています。Javaは「Write Once, Run Anywhere」
(1回書けば、いろんな環境で動く)なんていっちゃってるしw
結局、最適化は実装依存なわけだし。

for (int i=0, n=array.size(); i<n; i++) {
//処理
}

僕は別にベンチマークしたわけじゃないから効果の程はわからないけど。
質問者さんの記述した2つのループとの違いは、
forループのステートメントにカウンタ変数とループの
上限値変数の2つの変数を宣言し、初期化しています。
これによって、パフォーマンスだけではなく、変数スコープ
についても最適なものになります。
toArrayしてから回してみたらどうかなw。
424401:03/05/03 01:55
>>405
禿しくクスコ!(・∀・)
とっても参考になる。
多謝。
>>421
可変値であることを考慮しても大して変わらんと思われ。
小数点ついている数値を
小数点以下を切り捨ててintに変換するものは無いでしょうか?
Mathクラス見ましたけどありませんでした
double d = 0.123;
int i = (int) d; // 0.123の小数点以下を切り捨ててintに代入(0)
キャストじゃだめなの?
眠くて頭回んないけど、+に関しては満たしてそう。
>>422
forの初期化式で宣言する変数がすべて同じ型ならいいけど
違う型が混ざってる場合はうまく書けないよねえ。
そういう場合はどうしてますか?
430デフォルトの名無しさん:03/05/03 03:10
ArrayListは、入れた順番どうりに入ってることが
保証されてるんでしょうか?
431401:03/05/03 03:11
>>405
とりあえず今、テストさせてもらってます。
HexInputStreamクラスの、read()メソッドは、returnの部分が

return (
  (( Character.digit((char)ch1, 16) & 0x0F) << 4) |
  (( Character.digit((char)ch2, 16) & 0x0F) << 0)
);

こうなるかと思うのだが、いかがだろうか?
ch1を16進化した際に、4bitシフトさせて上位に移動し、
ch2をORで加算(論理和)ってことでしょ?

んで、これを実装して、テストコード部分も使わせていただいているのだけれど、
HexOutputStreamは、うまく動いてる。
この結果をHexInputStreamを使う側に食わせたときに、

ObjectInputStream in = new ObjectInputStream(new HexInputStream(bais));

の部分で、「InputStreamは、シリアライズされたオブジェクトを含んでないぞ(゚д゚)ゴルァ」
と、java.io.StreamCorruptedExceptionで怒られてしもうた。
今、ここを追っかけてるところ。


432bloom:03/05/03 03:13
すんません質問です。

Javaアプレットを作ってHPにあげました。
俺はプレイできて、友人も一人だけプレイできたのですが、
ほとんどの人はプレイできないといいます。
Javaアプレットのあるページに飛ぶと、灰色の画面が映るだけだと。

なぜなんでしょうか・・・。
>>430
はい

>>431
> ch2をORで加算(論理和)ってことでしょ?
そうだな、失礼。

> の部分で、「InputStreamは、シリアライズされたオブジェクトを含んでないぞ(゚д゚)ゴルァ」
そういえば read(byte[], int, int) もオーバーライドしてやらないとダメかも。前に一回
ハマって半日悩んだことがある。何でかは FilterInputStream#read(byte[],int,int) の
ソースを参照。ハァ? と思うかも。

public int read(byte[] buffer, int offset, int length) throws IOException{
  int count = 0;
  for(int i=0; i<length; i++){
    int ch = read();
    if(ch < 0)  break;
    buffer[offset + i] = (byte)ch;
    count ++;
  }
  return (count == 0 && length > 0)? -1: count;
}
ちなみに FilterInputStream#read(byte[],int,int) の中身はこう↓

public int read(byte b[], int off, int len) throws IOException {
  return in.read(b, off, len);
}

16進数 ASCII のデコードしないで下層のストリーム直接バッファに読み込んでる。
(FilterOutputStream#write(byte[],int,int) はそんなこと無いのに)

汎用的に作りたかったら skip() とか available() とかも実装できるかな。
2 で割るだけだから。
>>433
うまく行かない友達に「Java コンソール」というものを表示してもらって、
その内容をメールでもらってここに貼り付けろ。Java コンソールの出し方は
このレスのちょっと上にあったはず。

多分おまいと友達一人のマシンには JDK 1.4 が入っており、それ以外は
MS JVM が使われ、さらにおまいのアプレットが JDK 1.2 以上の API を使って
いると予想。
437434:03/05/03 03:40
うまく動いた。再度、禿しくサンクスコ(・∀・)

とはいえ、
return (count == 0 && length > 0)? -1: count;
ここがうまく理解できてない。

とりあえず修行が禿しく足らんことを自覚したので、
回線切らずに、JDKのソースの海に修行しに逝ってきます。
438437:03/05/03 03:40
まちがえた。
名前欄に変なこと書いた。
>>434
ね。重ねてサンクス。
439デフォルトの名無しさん:03/05/03 03:47
>>423
設計次第だねw
そうする場合は
bounds = arrayのtoArray()で任意の型の配列を取得;
for (int i=0; i<bounds.length; i++) {
// 処理
}
で処理するよね。
フィールドの場合はオーバーヘッドは気はしなくていいし。

>>429
ネタかなw
toArrayメソッドを利用するのは通常、同じ型である場合だよね。
わかってて言うのはだめだよ。
純粋に質問しているなら答えはこうだね。
Arrayに入っているものに対して処理を行う際にArrayに入っている
データの型が複数あるなら形によって処理を分岐する。
まあ、この場合の分岐の選択肢はif文やswitch文だけじゃないよね。

>>430
シングルスレッドで動いているなら大丈夫だね。
マルチスレッドならVector使うか自分で同期とった方がいいかな。

たぶん簡単な質問だと思いますけど
String型の文字列をchar配列型にして
文字の順番を入れ替えるってできますよね?
>>421
だから静的には最適化できないけど
JITコンパイラなら最適化できる格好のケース
>>440
toCharArray
>>440
toCharArray とか使えばできるけど、元の String には反映されないよ。
char[] array = text.toCharArray();
// 文字の順番入れ替え...
text = new String(array);
445440:03/05/03 05:19
なるほど、そうすればString型に戻せるわけですか。
ありがとうございました。
>420 wara
447128:03/05/03 09:29
doubleの配列aがあってその各値の大小に応じて
三つのdoubleの配列b,c,dに振り分けたいのですが
b,c,dの長さを決めるいい方法はないでしょうか?
いま私がやっているのはまずaの全ての値を調べて
b,c,dにはいる数をカウントしてb,c,dを作成し
再びaをの値を調べてb,c,dに振り分けているのですが
aを二回調べているので何か非効率的な気がします。
b,c,dの長さは可変なわけだよな。
いったんArrayListとかに振り分けていって最後に配列に変換とか。
449デフォルトの名無しさん:03/05/03 11:05

値の大きさに応じてB、C、Dの条件があったとする
で、最初にb,c,dの配列の大きさを決めておく
ポイントはa.lengthが配列のサイズになると言うこと
double[] b_temp=new double[a.length];
//以下c,d についても同様
int bcount=0;
int ccount=0;
int dcount=0;
for(int i=0;i<a.length;i++){
if(B){
b_temp[bcount]=a[i];
bcount++;
}
else if(C){
c_temp[ccount]=a[i];
ccount++;
}
else if(D){
d_temp[dcount]=a[i];
dcount++;
}
}
//で、あらためてコピーする
System,arraycopy(b_temp,0,b,bcount);
//c,dも以下同様に

450デフォルトの名無しさん:03/05/03 11:54
>>449
最終的にb、c、dのサイズが分かるんだからArraryCopyの直前に
double b=new double[bcount];
double c=new double[ccount];
double d=new double[dcount];
したほうがいいような…?
>>450

×double b=new double[bcount];
○double[] b=new double[bcount];
452デフォルトの名無しさん:03/05/03 12:18
>>450
いや、最初に作ってるのは一時記憶用
もちろん
double b=new double[bcount];
double c=new double[ccount];
double d=new double[dcount];
は、やりますよ。書き忘れだ
453 ◆IzdKJ.WAZA :03/05/03 12:20
>>411
遅レスですが完璧に動作しました!
ありがとうございました〜ヽ(´∀`)ノ
454デフォルトの名無しさん:03/05/03 13:03
Java を EXE から起動させるのはどうしたらいいのでつか?
Createprocess でコマンドラインを指定すれば動きますが、
javaw.exe とかではなくて EXE として動かしたいのです。
455動画直リン:03/05/03 13:13
>>423
> toArrayしてから回してみたらどうかなw。
toArrayメソッドは、新しい(もしくは引数で指定された)配列に
要素の内容を#コピー#するメソッドだから、
その分オーバーヘッドがかかって遅くなってしまうと思われ。

>>439
> >>429
> ネタかなw
> toArrayメソッドを利用するのは通常、同じ型である場合だよね。
>>429が言っているのは
for (int i=0, n=array.size(); i<n; i++) {
ってイディオムの"int i=0, n=array.size()"って部分は
iとnが同じint型だからできることだけど、
そうじゃなかったらどうすんの、ってことだと思うけど。
まあ、この例だとiはListのindex、nはその最大値+1になるから
型が異なることはあり得んのだが。

>>422
> 通常、ランダムアクセスのList実装に対する
> コレクションイテレートの好ましいイディオムは...
> for (Iterator i=list.iterator(); i.hasNext();) {
重箱の隅をつつくようだが、これは
「ランダムアクセスを提供しないList実装」に対するイディオムだろ。
つーか、>>422が言っていることは
http://java.sun.com/j2se/1.4.1/docs/api/java/util/RandomAccess.html
に書いていることそのものなんだが。
>for (int i=0, n=array.size(); i<n; i++)
for (int i=0;i<array.size(); i++) でも、どうせコンパイラ
かHotSpotが最適化してくれると思うんだが…

つうか、こんなことがボトルネックになるようなこと、あんまり
ないと思うんだけど。
>>458 そう、size()みたいなインスタンスの内部状態に変化を起こさず
かつ非常に短いメソッドの場合は最適化を期待するし、実際ベンチマーク
とっても差はでないよね。逆アセンブルしてないから断定はしないけど。
HotSpotより昔の実装だとクラスをまたいだインライン展開はやらなかっ
たんだけどね。

どうせ仮想機械というよりも実行時コンパイラといったほうが
正確なようになっちゃったんだから、C++みたいにinlineキーワード
とconstメソッドみたいなの導入しちゃってコンパイラに最適化のヒント
を与えられるようにならんかな。
460429:03/05/03 16:32
>>439
そうじゃなくて
for (初期化式; 継続判定式; 更新式) の初期化式で
int i = 0, n = array.size() を書くことはできても
たとえば int i = 0, double x = 0.5 みたいなのは書けないって話。

こういう場合は結局 double x = 0.5 を for ループの外に
書かないとダメでしょ?
簡単なEchoプログラム作ったんですけど
一回目はエコーが正常にできるんですけど
二回目以降はサーバ側がCPU100%状態になって
固まってしまうんですけど、なにが原因なんでしょう?
ちゃんとソケットは閉じてるんですが。
462461:03/05/03 17:13
なんとか自力で解決。

で、新たな問題。
PrintWriterとかBufferedReaderでサーバ側作ると
一回ごとに終了してしまうものなんですか?
>>461
while か for 文を使っている部分があるだろう。そこを晒せ
464461:03/05/03 17:20
>>463
while(inputLine!=null){
out.println(inputLine);
}
こうやってたのを
while((inputLine=in.readLine())!=null){
out.println(inputLine);
}
こう直したらうまくいきました。
何故かはわからなかったけど。
>>464
一つ目のはinputLineがnull以外の場合に、無限ループになる
二つ目のはinputLineを1行読んで、null以外なら表示してループする。
nullならループを抜けるというもの。
>>464
ちゃんと考えれ。何で無限ループになるのかわかんないようなら、
アナタは多分プログラマ向いてないぞ。
467461:03/05/03 17:32
>>465
nullほど。


>>462のやつでInputStream型やOutputStream型ので作ってあるのは
終了せずにそのままサーバが動き続けるようです。
でも、それだと文字列操作のやり方がわからないし。
>>464
君、実は何も知らないだろw
初心者向けJava本勝って基礎から勉強しなさい。
いきなりネットワークなんて無茶だよ…
さもないと韓国のように自称「ネット先進国」と
言わざるゐえなくなるぞ
469454:03/05/03 17:41
>>457
JNIを使うのでつね。サンスコ。
http://www.ki.rim.or.jp/~kuro/Java/JNI/
470461:03/05/03 17:45
>>468
マジで初心者なんです。
で、いろんなサイトのソースをコピって改造して
やってるとこ。

なんか>>462の問題も解決しました。
力技万歳。
471461:03/05/03 17:48
どうやらwhile(true)が鍵だったらしい。
サーバの方作って起動したらノートン先生がトロイ警告出したり
したこともあったし。
まぁ本読んで基礎もやりますよ
472447:03/05/03 21:10
>>448-452
レスありがとうございました。
配列を部分的にコピーできるのは知りませんでした。
その方法でやってみます。
473デフォルトの名無しさん:03/05/03 22:50
サーブレッツやJSPをやってみたくてサーバーを導入したいんですけど
お金がなくてPCが買えません…
今使っているWin2000にサーバーソフトを入れたいのですが
おすすめな者を教えてください。おねがします。
>>473
何か根本的におかしな子と言ってる気がするが、答えはTomcatってとこだろう。
SunOneStudio4入れるとTOMCATもインストールされる
477デフォルトの名無しさん:03/05/03 23:47
がっこの宿題でサーバー&クライアント(+PIPE)を使ってクライアント
がサーバにユーザーネームとパスワードでログオンし、メッセージを書
いたり受け取ったりすることができるプログラムを書けというのが出た
んですけど簡単な例とか載ってるHP知ってる人いませんかね。
>>477
クライアントとサーバが PIPE で通信すんのか?
479デフォルトの名無しさん:03/05/04 00:11
PIPEは、READER と WRITER を使って、クライアントのメッセージ
のやり取りに使うんだと・・
481デフォルトの名無しさん:03/05/04 00:22
ちょっくら見てきます・・
482デフォルトの名無しさん:03/05/04 00:24
Javaじゃない・・ですね。JAVA言語ではなんかありますか?
うはっ。ここJava初心者スレだったね。スマソ。
ソケット扱える言語だったら同じように書けばできるけど初心者には難しいかもね。
Javaで書いてあるところは知らんので検索するなり、次のポインタを待ちなさい。
484デフォルトの名無しさん:03/05/04 00:38
はい!
>>477
1. ソケット使ってネットワーク通信
2. パイプ使ってスレッド間通信

どちらかはっきりしる
java.exeが以上終了(Abort)した時、
hs_err_pidプロセスID.log(hs_err_pid1012.log等)
というファイルができるんですが、それを作らせない方法知りませんか?
487デフォルトの名無しさん:03/05/04 01:48
ぬー、画像フォーマットの検出方法を忘れた
488477:03/05/04 01:57
えっと、ソケットは使いません。
import java.net
import java.io
import java.util
の範囲でできるものを探してます(何しろ初心者なんじゃ)。
画面も、スイングみたいなものは使わず、ただのアウトプットに
RUNしたあと
ユーザーネーム:
パスワード:
で、サーバがパスワード確認したら、

1.メーセージを読む
2.メッセージを書く
3.終了

みたいに表示・・・どですかね?
>474-476
TOMCAT入れたよ!サンクス!
490デフォルトの名無しさん:03/05/04 03:27
Stringからfloatへの変換がわからないのですが。
すいませんおしえてください。
491デフォルトの名無しさん:03/05/04 03:29
float.valueOf(String s)
492デフォルトの名無しさん:03/05/04 03:36
Sun JDK1.4.2beta あげ
>>492
1ヶ月前に出てますが。
494デフォルトの名無しさん:03/05/04 03:53
495デフォルトの名無しさん:03/05/04 03:58
Σ(゚Д゚)
496422:03/05/04 04:44
>> 456へ

>>>422
>> 通常、ランダムアクセスのList実装に対する
>> コレクションイテレートの好ましいイディオムは...
>> for (Iterator i=list.iterator(); i.hasNext();) {
>重箱の隅をつつくようだが、これは
>「ランダムアクセスを提供しないList実装」に対するイディオムだろ。
>つーか、>>422が言っていることは
>http://java.sun.com/j2se/1.4.1/docs/api/java/util/RandomAccess.html
>に書いていることそのものなんだが。
>
またネタかな?
「ランダムアクセスのList実装」で間違いない。
497422:03/05/04 04:57
>> 456へ
50点だな。おいらも50点だが。
文の構成変えてて間違えたみたいだw
まあ、あそこで言いたかったのは「ランダムアクセスを提供しないList実装」
でもなく、単に「コレクションイテレートの好ましいイディオム」だけどね。

ちなみに2つ目に書いたのが、「ランダムアクセスのList実装に対する
イテレートの高速なイディオム」だな。
これは前提条件を満たさなければ好ましくないわけで、「通常」ではないな。

書き込み前にちゃんとチェックせねば。
498422:03/05/04 05:09
>>460
>>>439
>そうじゃなくて
>for (初期化式; 継続判定式; 更新式) の初期化式で
>int i = 0, n = array.size() を書くことはできても
>たとえば int i = 0, double x = 0.5 みたいなのは書けないって話。
>
>こういう場合は結局 double x = 0.5 を for ループの外に
>書かないとダメでしょ?

ちゃんと読んだ?414はArrayListオブジェクトに対する
イテレートする際のパフォーマンスのよいイディオムを
質問したんだよ?

それとその例の使いどころを教えてよ。
それが可能だとして、どうしてそうしたいの。
おいらはそうしたいと思ったことないぞw
499動画直リン:03/05/04 05:13
>490
オーケー、ブラザー俺が秘密にセッションしちゃうぜマイハート。
いいかい?ストリンぐからダぶるに変換するのは棚、

using System;

public class conv {
 public static void Main(String[] args){
  double a;
  string b="123";
  a=b.ToDouble();
 }
}

と書いてだな、

>csc conv.cs
>conv.exe

だ。
>>488
ソケットって知ってて言ってんの?
電球の差し込み口
>>502
PentiumIIは電球だった!
504デフォルトの名無しさん:03/05/04 09:34
JSPって俺が昔吸ってたタバコだと思ってたが
最近思い出した、あれはJPSだった(ジョンプレーヤースペシャル)
黒い箱でかっこよかったな。いまのMILDSEVENのONEと同じぐらいかっこよかった
今も売ってるけどな。
で、
private static final MILDSEVEN;
とかいう定数ってかっこいいよな
いつか、この定数を使ってプログラミングしたい
>504
健康増進法の施行により、それはpublicでは使えなくなりました。
privateでお楽しみください。

protected、package privateは...微妙。
>>504
共同警備区域
507デフォルトの名無しさん:03/05/04 12:48
「EJBコンポーネント開発完全ガイド」の第4章のデプロイやってるんだけど、
>j2ee -verbose
で起動したDOS窓にデプロイ時以下のメッセージが出るのよ。

| WARNING HelloEJB ejb-ref expected home interface to be HelloHome and got j2eeboo
| tcamp.developingEJB.chapter4.HelloHome
| WARNINGHelloEJB ejb-ref expected bean interface to be Hello and got j2eebootcamp
| .developingEJB.chapter4.Hello

>runclient -client HelloApp.ear -name HelloClient -textauth
でクライアントを実行すると

| WARNING HelloEJB ejb-ref expected home interface to be HelloHome and got j2eeboo
| tcamp.developingEJB.chapter4.HelloHome
| WARNINGHelloEJB ejb-ref expected bean interface to be Hello and got j2eebootcamp
| .developingEJB.chapter4.Hello
| ログインを起動しています ...
| ユーザ名入力:j2ee
| パスワード入力:je22
| バインドされた名前:`java:comp/env/ejb/HelloRef`
| アプリケーションから例外がスローされました:java.lang.NoClassDefFoundError: j2eeb
| ootcamp.developingEJB.chapter4.HelloHome

class/jar の CLASSPATH の話なら解決できるが、
デプロイさせときながら NoClassDefFoundError とは deploytool の
問題じゃねぇかと小一時間・・・言ってもしゃあないので、
原因が分かる人教えてくれ。
508460:03/05/04 13:27
>>498
イディオムなのは知っている。
俺が言いたいのはイディオムとはまったく関係なくて
for文内でしか使わない変数のスコープの話。

通常はループをカウントする変数はひとつで済むけど
条件が複雑でたまに複数個使いたいことない?
>>460の例だと下みたいなのとか。
int i = 0;
double x = 0.5;
for (; i < 100 && x > 1e-6; i++, x /= 2)

この場合 int i と double x の両方を for の初期化式には書けないので
どっちかはスコープが広がっちゃうけど
何かうまい書き方はないだろうかという話。
あまり美しくないけどブロックを作るしかないんだろうか。
509460:03/05/04 13:29
>>508の例だと i か x だけでもよさそうなんで
更新式は i++, x /= 2 ではなく
ループ内の条件によって i++ か x /= 2 が決まると思ってください。
>>508
for (int i = 0,double x = 0.5; i < 100 && x > 1e-6; i++, x /= 2)
>>508
俺はwhile文使うよ。そのほうが綺麗。
>>511
だからスコープの話をしてんだと小一時間。
>>508
スコープを無理矢理縮める。

{
int i = 0;
double x = 0.5;
for (; i < 100 && x > 1e-6; i++, x /= 2) {
// 処理
}
}
>>488
プロセス間通信はソケットかRMIが必須ですが。

プロセス間通信しないってことですか???
サーバークライアントで???
>>514
20レス前は十分昔だと言うことを心得よ。
>>510
エラー出るだろ
517498:03/05/04 17:48
>>508

>通常はループをカウントする変数はひとつで済むけど
>条件が複雑でたまに複数個使いたいことない?
>この場合 int i と double x の両方を for の初期化式には書けないので
>どっちかはスコープが広がっちゃうけど
>何かうまい書き方はないだろうかという話。
>あまり美しくないけどブロックを作るしかないんだろうか。

ブロック使うくらいならメソッドによる置き換えでもすれば?
繰り返しする場合はそれ自体に意味を持っていることが多い。
その方がかっこいいでしょ?
たとえば、こんなカンジ
public void メソッド(int maxLoopCount, double x) {
  for (int i=0; i<maxLoopCount; i++, x/=2.0) {
    // 処理
  }
}

で、スコープの話からずれるけど、もっと機能分割すればこんなカンジ。
for (int i=0; i<maxLoopCount; i++, x/=2.0) {
  if (aMethod(x) == false) {
    break;
  }
}
boolean aMethod(double x) {
  // 処理
}

ループカウンタiが処理に絡むのであれば aMethod の引数に
適切なものを追加すればいい。
518498:03/05/04 18:00
>>509

> >>508の例だと i か x だけでもよさそうなんで
> 更新式は i++, x /= 2 ではなく
> ループ内の条件によって i++ か x /= 2 が決まると思ってください。

意味がわからないよ。それって自分で書いた例の
for (; i < 100 && x > 1e-6; i++, x /= 2)
を否定しているってことでしょ?
for (; i < 100 && x > 1e-6;) {
  // 処理(ここでiがインクリメントされるかxの値が変更される。
}
にしたいの?
ちなみにスコープの話を抜いてこの場合、for文にするか
while文にするかと聞かれたら >>511 と同じ意見だな。

まぁ、どちらにしても僕ならメソッドによる置き換えをするけどね。

>>486 何か情報ありませんか?
>>519
JavaHouseにでも投げてみてください。
521477:03/05/04 22:37
とりあえず、このサーバー&クライアントのコードを基礎にまずは、
クライアントがパスワードを使ってログオン(サーバー側でパス
ワードの確認、3回まで)するっていうのをやりたいんですけど、
どこをどうしたらいいのやら・・お願いします。
522477:03/05/04 22:39
import java.net.*;
import java.io.*;
import java.util.*;

public class TestNetServer {
static final int SERVISEPORT = 20020;

Socket socket;
ObjectInputStream in;
ObjectOutputStream out;

TestNetServer(Socket socket) throws IOException {
this.socket = socket;

in = new ObjectInputStream(
new BufferedInputStream(socket.getInputStream()));
out = new ObjectOutputStream(
new BufferedOutputStream(socket.getOutputStream()));
out.flush();
}


void execute () throws IOException{
try {
String sample0 = "!!Hello, Client!!";
System.out.println("[DBG0]Sending String: " + sample0);
out.writeObject(sample0);
out.flush();
523デフォルトの名無しさん:03/05/04 22:42
初心者なんですが、イベント処理をやっています。
あるイベントを呼び出したボタンに対して処理を行うにはどうしたらいんでしょうか?
具体的には、いくつかボタンが並んでいて、ボタンを押すとそこに文字が表示できるようにしたいのですが。
リスナーの中でどういう風に実装すればいいんでしょうか?
呼び出したコンポーネントを知るメソッドなどないですか?
524477:03/05/04 22:42
Object received = in.readObject
HashMap sample2 = (HashMap)received;
System.out.println("[DBG2]Received HashMap: " + sample2);
System.out.println("[DBG3]Pentium :: " + sample2.get("Pentium"));
System.out.flush();
} catch(IOException e) {
e.printStackTrace();
throw e;
} catch (ClassNotFoundException e) {

System.out.println("[DBGX] readObject() CANNOT found Corresponding Class");
} finally {
try{
socket.close(); } catch(IOException e) {}
} }
public static void main(String[] args) throws IOException {
srverSocket serveSocket = new ServerSocket(SERVISEPORT);
try {
System.out.println("Server Waitting on serverSocket ");
Socket socket = serveSocket.accept();
System.out.println("Socket[Server] " + socket);
testNetServer connectionProg = new TestNetServer(socket);
connectionProg.execute();
} finally {
serveSocket.close();}
System.out.println("Server Program Finished");
}}
525477:03/05/04 22:45
import java.net.*;
import java.io.*;
import java.util.*;
public class TestNetClient {
static final int SERVISEPORT = 20020;
static final String SERVERMACHINE = "localhost";
Socket socket;
ObjectInputStream in;
ObjectOutputStream out;
TestNetClient(Socket socket) throws IOException {
this.socket = socket;
out = new ObjectOutputStream(
new BufferedOutputStream(socket.getOutputStream()));
out.flush();
in = new ObjectInputStream(
new BufferedInputStream(socket.getInputStream()));}
void execute () throws IOException{
try {
Object received0 = in.readObject();
System.out.println("[DBG0]Received: " + received0);
Object received1 = in.readObject();
System.out.println("[DBG1]Received: " + received1);
HashMap sample2 = (HashMap) received1;
sample2.put("Sparc", "SUN");
System.out.println("[DBG2]Sending Hashmap: " + sample2);
out.writeObject(sample2);
out.flush();
} catch (ClassNotFoundException e)
526477:03/05/04 22:45
System.out.println("[DBGX] readObject() CANNOT found Corresponding Class");
} finally {
try{

socket.close();
} catch(IOException e) {}
}
}

public static void main(String[] args) throws IOException {

InetAddress host = InetAddress.getByName(SERVERMACHINE);

Socket socket = new Socket(host, SERVISEPORT);
System.out.println("Socket[Client] " + socket);


TestNetClient connectionProg = new TestNetClient(socket);

connectionProg.execute();
System.out.println("Client Program Finished");
}
}
>>523

package AWTTest;

import java.awt.*;
import java.awt.event.*;

public final class ButtonTest extends Frame implements ActionListener{
Button txtButton;

public static void main(String[] args) {
ButtonTest bt=new ButtonTest();
bt.show();
}

ButtonTest(){
txtButton=new Button("Click Me!");
txtButton.addActionListener(this);
add(txtButton);
pack();
}

public void actionPerformed(ActionEvent ae){
if(ae.getSource().equals(txtButton)){
txtButton.setLabel("Thanks!");
}
}
}
528527:03/05/04 23:13
これ入れないとWindow閉じないや。
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we) {
super.windowClosing(we);
System.exit(0);
}
});
529初心者:03/05/05 01:34
質問です。

サーブレットで、
Thread.currentThread().getName()
の戻り値は、各セッションで一意性が
保障されているのでしょうか?

セッションIDは保障されているでしょうが、
スレッド名はどうなんでしょう。。。
>>529
スレッド名はスレッドインスタンスについてます。
セッションとは関係有りません。

あるセッションのあるリクエストが、サーバ側のあるスレッドで
処理されたあと、そのセッションの次のリクエストがサーバ側の
別のスレッドで処理される、ということは、往々にしてあります。
CGIとJSP/サーブレットってどう違うの?
CGIのほうがC言語使えるから速いんでないの?
JSP/(E)JB/ServletでワンパッケージのWEBサービスだったような。
CGI はリクエストのたびにプロセスが起動するので、サーバコンテナ
内部でスレッドとして動くServletよりコストは高いと思われ。リクエスト
の数が増えてきたときに違いが出ると思う。あと、Servletのほうが
柔軟性が高いサービスが構築できそう。
533初心者:03/05/05 02:45
>>530
ありがとうございます。
ちょっと質問の仕方がわるかったです。

複数セッションで同時にリクエストが発生したときには
セッションの数だけスレッドが生成されると思うのですが、
そのときのスレッド名は一意性が保たれているのでしょうか。。。

サーブレットコンテナの実装によるのかもしれませんが、
わざわざ各スレッドに同一の名前をセットするようなことは
ないような気がするのですが・・・
534初心者:03/05/05 02:52
>>531
サーバアプリケーションのボトルネックは
プログラム事体の性能よりサーバや回線の性能の方が
大きいと思います。

CGIよりJSPの方が速いというわけではなく、
大規模開発に向いているかという問題になってきます。
開発効率ならJSPの方が向いてると、個人的には思います。
535デフォルトの名無しさん:03/05/05 03:25
JSPのJSTLについて質問なんですが
<c:forEach>タグって
String[][]のように多次元配列って扱えないんでしょうか?
入れ子にしてやってみても
itemって言うキーワードが重なるのでうまくいきません
536デフォルトの名無しさん:03/05/05 03:28
画面にメニューを表示して、ユーザがキーボードに何か押すまで待つには
どーしたらいいのですか?
cみたいに、GETつかうのかな?


>>536
何の話をしているのかサッパリわからん
>>536
あなたが氏ねばいいと思います。マジレスです。
>>538
マジレスかっ!!? 
536は、マルチでーす。
>>533
APサバの実装にもよるけど、大抵の賢いサバは、リクエスト
の度にスレッドを新規生成するような「低能」実装はして
いないとおもうよ。
あとスレッド名は、サバの実装依存だと思われ。
まあおそらく、サバ各自が各自の内部で一意に命名してい
るか、あるいはデフォルト(Threadのデフォルトコンスト
ラクタがつける名前)のままにしているんじゃないかな。
オイラはあなたが使っているAPサバがなんなのかしらない
のでヨクワカリマセヌ。

デバッガでAPサバを動かして、Servlet内部でブレーク
して、スレッドの状態をダンプすれば、スレッドの一覧
が見えるはず。試してミソ。


それにしても、スレッド名で何かを識別しなければいけない
ような事態は発生しないはず。そんなものをみなければいけ
ないような仕組みを作っているとしたら、9割方設計がおか
しいとおもうが。
>>531
CGIは基本的には1リクエストに対して1プロセス起動するから
トランザクション数の多い大規模サイトでは処理コストが
どんどん増加する。
Javaは基本的にはプロセス内での動作。

リクエスト1回だけ投げてその処理の重さだけを見たらCGIのほうが速いが、
大量処理時のサーバへの負荷が違う。
542デフォルトの名無しさん:03/05/05 11:36
JSP/サーブレットの質問なんですが
アプリケーション内からどこからでも使用可能な
Beanを作ろうと思っています
で、サーブレットAがある値をsetして
サーブレットBがその値をgetしたりすることを想定しています
AとBはまったく別のセッションの場合もありです
こういうことやる場合はシングルトンしかないんですかね?
いろいろやってみたんですが、これしか思い浮かびません
最終的に思ったのが、「Beanはセッション内でしか共有できないのか?」と言うことです
>>542
排他処理に気を使いながら、ServletContect使うよろし。
DBでもいいな。
ServletContextだった
545542:03/05/05 12:21
>>543
ありがとうございます
ServletContect調べてみます
>DBでもいいな。
実はDBの情報を格納するBeanなので
今回の場合は無理です
他の場合なら使えそうですね参考になりました
546531:03/05/05 12:24
>>541

>CGIは基本的には1リクエストに対して1プロセス起動するから
>トランザクション数の多い大規模サイトでは処理コストが
>どんどん増加する。
>Javaは基本的にはプロセス内での動作。

基本的、基本的ってなんだよ、おまえ! 基本的って言葉で逃げてるだけじゃねーか。
よく知らないのに説明しよーとすんな。
アホか。 Javaやめろ。

green thread, native thread, copy on write この辺りを検索して、
勉強しなおしてこい。 タコ
>>531
DQNは氏ね
548デフォルトの名無しさん:03/05/05 12:39
>>531
基本的に釣りなら他のスレに行けや。
と基本的に釣られてみる。。。
549デフォルトの名無しさん:03/05/05 12:54
馬鹿が釣れて>>531がかわいそう
>>531
「基本的は基本的」。
CGIだってスレッド使い回しの仕組みを自作すればできないことはない。
531は誌んでイイYO!漏れが許可する。
CGIでスレッド使い回しって、どうやるんだよ!
552542:03/05/05 13:28
また問題が発生しました
最初の説明が悪かったのですが
「サーブレットAがある値をsetして
サーブレットBがその値をgetしたりすることを想定しています 」
と、書きましたが
「サーブレットAがある値をsetして
あるクラスBがその値をgetしたりすることを想定しています」
に、読み替えてください

つまり、>>543さんの言うようにやりたいのですが
そうすると、クラスBもサーブレット関係のクラスを継承しなければなりません
クラスBは普通のユーティリティークラスなので無駄な継承はしたくありません

そもそも、Webアプリケーション上にあるクラスはBeanを除いて
HttpServletなどのクラスを継承すべきなのでしょうか?
> そもそも、Webアプリケーション上にあるクラスはBeanを除いて
>HttpServletなどのクラスを継承すべきなのでしょうか?
いやそんなことはない。ていうかしないほうがいい。
どのBeanからもServletContextにアクセスしたいのならHttpServletRequestの
参照を持ち回ればできるのだが、それもあまりおすすめできるものではない。
Servlet API周りを使っていないBeanからもアクセスしたいのなら
やはりSingletonパターンだろうな。
554542:03/05/05 13:46
>>553
レスありがとうございます

やはりそうですよね
最初僕も、コンテキストの参照の使いまわしを試みましたが
「このやり方はどうなんだろう?」と思い>>542で質問させてもらいました

「setAttributeでセットされたBeanを普通のクラスからアクセスしたい」
っていう問題は、そもそも設計が間違ってるのかな・・・・
クラスの切り分け方も含めてもう一度検討してみます
無理なら、Singletonで行きます
SUNが買収されるようですが、Javaはどうなりますか?
http://slashdot.jp/articles/03/05/04/1859220.shtml?topic=68
JavaはすでにSunの手を離れているよ。
JCPが管理してる。
でもIBMが買ったらSunのJava SDKは無くなってIBM JDKがデファクトスタンダードになったりしてw
557デフォルトの名無しさん:03/05/05 14:34
>>546
>541が言う基本的は間違ってないと思われます。
AP鯖の実装の問題でしょ。
558デフォルトの名無しさん:03/05/05 14:39
>>554
安易にSingletonにするのも考え物だが。
読み込むDBの値はアプリ終了まで不変なのかい?
>>556
JCPってなんですか?
http://www.jcp.or.jp/
560デフォルトの名無しさん:03/05/05 14:48
今JDKの1.3を入れてるんですけど、1.4を新しく入れたい時って
1.3はアンインストールしちゃって良いのでしょうか?

消す場合は、アプリケーションの追加と削除でOKですか?
また、残しておくメリット等はありますか?
>>560
クロスコンパイルしたけりゃ残したらいい。
559 名前:デフォルトの名無しさん :03/05/05 14:42
>>556
JCPってなんですか?
http://www.jcp.or.jp/
>>559
馬鹿は氏ね
565デフォルトの名無しさん:03/05/05 15:09
>消す場合は、アプリケーションの追加と削除でOKですか?
OK。

>また、残しておくメリット等はありますか?
このようなことを聞く君にとっては無いだろう。

環境変数PathとかJDK_HOMEを直しとけよw
566560:03/05/05 15:12
>>565
ありがとうございます、そう言えばインストールした時に環境変数とか打ったっけ。
561氏もわざわざありがとうございます。
567bloom:03/05/05 15:13
>>565
Pathはわかりますが、JDK_HOMEはどこで設定するんでしょう?
569デフォルトの名無しさん:03/05/05 16:21
>>568
変数作るんだよ。
環境変数JDK_HOMEにはホームディレクトリだけ指定すればいい
binはいらんよ
571デフォルトの名無しさん:03/05/05 16:34
>>568
環境変数、理解してる?
572デフォルトの名無しさん:03/05/05 16:35
javaのプログラムを書いていくには、クラス図を見ながら先にクラスを作るのと、シーケンス図見ながら、実行クラスと同時に作っていくのどちらがよいのでしょうか・
573デフォルトの名無しさん:03/05/05 16:37
>>572
コーダーやってんの?
574デフォルトの名無しさん:03/05/05 16:38
>>573
コーダーってなんですか?まだ、初学者なのでわかりません
576デフォルトの名無しさん:03/05/05 16:49
>>574
初学者さん、UMLは解ってるんだ?
JDK_HOMEなんて今まで設定しないで使ってたんですがまずいですか?
1.3と1.4がきちんと動いてます。Pathは設定してます。
578デフォルトの名無しさん:03/05/05 16:57
>>576
よくわかってはいないのですが、課題が先ほどの表記法でプログラムを組まねばならないので・・・ 
579デフォルトの名無しさん:03/05/05 16:58
>>577
Editor + JDK だったらJDK_HOME設定しなくても大丈夫ですが。
その他ツール等でJDKのインストールディレクトリを参照するようなことが
あればJDK_HOMEを設定する必要があります。
>>578
課題でクラス図とシーケンス図があるなら、両方見ながら組んだらいいだろうがよ。
何を悩む必要がある?
581デフォルトの名無しさん:03/05/05 17:04
それが、課題の説明書きにまず、クラスを作ってから実行クラスを作れ、
みたいに書いてあるんで・・・ 貴方のおっしゃるとおり、普通なら両方を
参照しながらが普通なのだと思うのですが。あと、将来的にクラス・シー
ケンス図を書けないといけないので、どうするのがベストなのかお聞きし
たくて。
>>579
ありがとうございます。
サーブレットをサポートするプロバイダってどこがあるんだろう…?
俺んち、PC1台しかないんでWebサーバーにするのが正直怖くてできない。
オレならクラス図見ながらメソッドの中身を空にしたクラスから作るかな。
値を返すものはとりあえず0とかnullとかnew Object()とか""とか返しておく。

まず最初に全体がコンパイル通るようになるので開発に便利。
585584:03/05/05 17:28
>584
つーか、これってふつーのやり方で、今さら偉そうに言うほどのものでもないと思うけどな。
>>584
スタブとかドライバって奴だな。

基本情報技術者の本に載ってたよ。
587デフォルトの名無しさん:03/05/05 17:45
>>586
テストファーストの開発ではテストケースクラスをスタブとして、先ず作ります。
>>587
fast?first?
589デフォルトの名無しさん:03/05/05 17:55
>>588
検索しる
>>589
知らない、と。
591デフォルトの名無しさん:03/05/05 17:57
>>590
ハァ?
>>591
認めたくない、と。
593デフォルトの名無しさん:03/05/05 18:08
>>592
ハァ?
>>593
図星を突かれて言葉が出ない、と。
595デフォルトの名無しさん:03/05/05 18:21
>>594
何が図星なのか読み取れないのだが。
>>583
これのどこかにリストアップされている
http://pc2.2ch.net/test/read.cgi/hosting/1016218662/
JDK_HOMEってネタ?俺が知らないだけ?
JAVA_HOMEかと思っていたが。

Test Firstという言葉を本当に知らない奴もいるんだな。
598デフォルトの名無しさん:03/05/05 20:10
>>597
変数名は何でもいいんじゃないの?ツールがJAVA_HOMEの値を期待してたら
JAVA_HOME変数を作ればいいし。
>>598
統合開発環境も多くのアプリサーバやツールはJAVA_HOMEを期待している物がほとんどだと思っていたのだが。
JDK_HOMEを期待するソフトウェアなんてあるの?
600デフォルトの名無しさん:03/05/05 20:27
>>599
漏れの同僚が作った糞ツールはJDK_HOMEを期待してますが何か?
>>600
そりゃ糞だわ。たしかーに。
602デフォルトの名無しさん:03/05/05 20:37
ant使ってないJavaのプロジェクトってあるの?
>>602
makeでやっているものもあるかもな。
>>602
JBuilderで作った香具師とかに多そう
605デフォルトの名無しさん:03/05/05 22:53
>>604
ハァ?意味わかんね。
普通はmake
>>606
他のOSに移行するとき手間取らないか?
その辺は根性(大和魂)で。
antなんて気にかけたことも無い
>>606
そうなのか?
オープンソース系だけでなく、Sunが配布するソフトもbuild.xml
添付の物が多くて事実上antはスタンダードだと思っていたが。
jikesで爆速コンパイルしているのにantの起動の遅さにムカツク。
まぁantは標準だと思うけど、常用はしないな。
配布する時だけbuild.xml作る。
>>611
今度からは常用しるようにしろよ。
あんたが作った職人じみたビルドツールが運用入ってからも使われると思うと
メンテする人が可愛そうでしかたがない。
>まぁantは標準だと思うけど、常用はしないな。
>配布する時だけbuild.xml作る。
いいエンジニアだ。
わかってない奴はむやみにant否定して他人にも
それを押しつける。
>>612
配布するときはbuild.xml作るって言ってんじゃん。
質問です。
JavaScriptで、そのブラウザを使っているコンピュータ名を
取得することってできますか?
自作ツールを強要するエンジニアってうざい。
しかも、使えねーやつを強要するなよ。と小一時間。
617デフォルトの名無しさん:03/05/06 00:21
>>615
JavaScript質問スレにでも逝け。もまいはハッキングでもする気かよ。
618デフォルトの名無しさん:03/05/06 00:41
明日までにDBつきの掲示板を作らなければならないんですけど、もう自分には無理です。
どなたかよいサイト教えてくださいませんか?
619デフォルトの名無しさん:03/05/06 00:42
>>618
スレ違い。
VBスレに逝け。
>>618
http://web.teglet.co.jp/naoko2/index.php
ここ見て詫び状でも書け。
「makefileをください」と言ったらmake.bat(中身はjavac Hoge.javaの羅列)を渡されたことがあったよ...
622デフォルトの名無しさん:03/05/06 00:57
>>621
漏れのところもそんな感じ。ant使えって。
>>612
メンテする人は用意してあるbuild.xmlを使う。
運用入ってからもmake使う人はMakefile使うし、ant使う人はbuild.xml使う。
共存できるんだから別にいいんじゃないか?


# ちなみに俺のMakefile
PROJECT = プロジェクト名
include 色んなルールを生成するMakefile.mk
Main-Class = jp.gr.java_conf.メインクラス
Class-Path = $(TOPDIR)/lib/追加するクラスパス.jar

これでコンパイル、クリーン、実行、ドキュメント生成、配布jar生成 ができるようになってる。
Windows,Linux,Solarisで動く。
62480:03/05/06 01:09
>>132
結局、javaのversionが1.4なのがマズかったらしく
1.3にしたら上手くいきました。 遅れましたが有難うございました。
>>623
両方管理するのは無駄だと思うが。
Makefileにこだわらなきゃいけない理由ってあるのか?と聞きたいね。

自分のやり方をかえられるのを嫌うやつって多いよな、この業界。
自己流を維持すること自体が無駄な作業の源かもしれないのに。
>>624 なんつーか、J2MEの前提条件くらい調べとけよって感じだな。
>>625
>>611を嫁。

>両方管理
ってなんだ?何を管理するんだ?
何もやることないだろう?

>自分のやり方をかえられるのを嫌うやつって多いよな
ant使ってましたが、その遅さのせいで「自分のやり方をかえられ」ましたが、何か?


そもそもたかがコンパイルするためのツールに必死になるお前の気がしれん。
俺はmakeもantもTPOで使い分ける。お前はantしか使わずしかも他人に強要する。何様だ?
ant推進委員会の会員ですが。
>>628
あ、そうだったんですか。すいません。言い過ぎました。
それなら仕方ないですね。
まあ俺もantは使ってないわけじゃないんだから許してくれ。
630デフォルトの名無しさん:03/05/06 01:34
>>627
貴様、運用・保守やったことあるのか?職人じみたツールで実績作られたら、
その後手の入れようがないって。開発だったら使い分けで済まされる
だろうが運用してて使いまわしなんてしてたら袋叩きにされるぞ、まじで。
>>630
は?
>その後手の入れようがない
のは何故?build.xml + ant じゃ不満なのか?
>>630
つまり、antを否定してるってことか?
633山本山:03/05/06 01:39
antに不満を持っているからこそ、俺が新しいツールを開発しているんじゃねーか。
ちょっと本人は興奮しているようなので他の人に聞きたいのだが、
俺はantもmakeもどちらも使える用意はしてある。
で、俺はantは起動が遅いという理由で普段はmakeを使ってる。

さっきから突っかかってくる香具師は、職人じみたツールだから誰も手を入れられないし、袋叩きにされると言ってくるんだが。
Makefileを消せば満足なのか?
俺は別にMakefileがあっても何の支障もないと思うんだが。
make使わない人はant使うだけだし。
antのタスクを真似て、自作してあったツール食らったときは参ったぜ。
そろそろIDE派が出てきて話をまぜっかえすころあいだな。
>>625 自分のやり方をかえられるのを嫌うやつってお前のことだな。
634は「配布するときはbuiild.xml作る」って言ってるんだから
それで充分じゃない?
自分は自分のやりたいようにして、他人には他人が使いやすいように
配慮してるじゃん。
いいエンジニアだと思うけどね。
639デフォルトの名無しさん:03/05/06 01:54
と言いますか、JBuilderでビルドが一番いいよ!
なにせBuilderっていうくらいだからね!
勘違いしたまま非難して、引っ込みがつかなくなったのではないだろうか。
641デフォルトの名無しさん:03/05/06 02:04
ボクのIDEはant使っているのでボクはantユーザーです。
ant楽々使いこなしてますよ。antマンセー。
>>640
だったら素直に謝ればいいのに。変にプライドが高いのかねえ。
>>642
ごめんなさい(w
StringBuffer bf があったとして、このオブジェクトからString型を得たい場合、
String s = new String(bf);

String s = bf.toString();
どちらがおすすめでつか?
>>644
自己レス。
java.lang.StringBufferのソース見たら、

public String toString() {
  return new String(this);
}

だそうで。
どっちでも一緒なのねん。
646デフォルトの名無しさん:03/05/06 04:14
String s = bf + "";(w
好みでは、String s = bf.toString();
かな。
648デフォルトの名無しさん:03/05/06 04:36
インスタンスhogeがあるとします。

Hoge hoge2 = new Hoge();
hoge2 = hoge;

この場合のhoge2と、

Hoge hoge2 = hoge;

この場合のhoge2では、実体が違いますか?
色々試してると、前者は別の参照になっているように思えるのですが。
いや、ならないっすね。勘違いでした。スマソ。
650デフォルトの名無しさん:03/05/06 09:59
java でクラスパスを-classpathで指定するときディレクトリ名
にピリオドが含まれると勝手に/に解釈してしまうようなんですが。
jakarta-tomcat-4.0.6→jakarta-tomcat-4/0/6のように。
これを回避する方法はないですか。
Webプログラマ版で聞いたのですが、返事がなくてこっちでも
質問してすいません。
651デフォルトの名無しさん:03/05/06 09:59
jikes導入する予定なんですけど
注意点とかあったら教えて下さいタマ
文字エンコーディングを判定するにはどうすればいいですか?
UTF-8,Shift_JIS,EUC_JP,ISO-2022-JPが判別できればいいのですが。
653デフォルトの名無しさん:03/05/06 10:48
JAVAで印刷を行いたいんですが
1ページはでるんですが2ページとか複数ページをだそうとしても何もでてきません。
どうすればいいのでしょうか?
ちなみにソースはJavaPress27巻のJavaちょこっとテクという部分のものを使っています。
>>653
どうやっているのか分からない書き込みに、
どうアドバイスすればいいのでしょうか?
655653:03/05/06 11:11
すみません。
初心者なものでどう書いていいのかわからなくて・・^^;

ソースはここから落とせますので良かったら教えてください。
http://www.gihyo.co.jp/magazines/javapress/support/Vol27
656bloom:03/05/06 11:13
>>655
おまえなぁ・・・そんなに人のコード読むのが
めんどくさいのか?
コメント部分だけ読んだら俺でも原因わかったぞ
もう一回読め
>>653
それとも自分で複数ページ出るようにソース変えてもダメってこと?
659653:03/05/06 11:45
えっと、印刷を行うページ数ってところの
returnを2とかに変更したんですがこれだけでは駄目なんでしょうか?
660デフォルトの名無しさん:03/05/06 11:56
>>659
1ページ目用Printableと2ページ目用Printableを用意して、
両方をPageableに登録して、PageableをPrinterJobに渡しませう。
JTabbedPane#setToolTipTextAt(int,String)を実行してもタブにツールチップがつかないのですが・・・。
これは1.4.2-beta-b19を使ってるせいでしょうか?
662653:03/05/06 13:08
>>660
それって例えばPrintableファイルをコピーしPrintable2とかクラスを作って
2ページ目はそれを印刷するようにしたらいいんですよね?
663動画直リン:03/05/06 13:13
>>662
それはオブジェクト指向ではない
話の内容は良くわかんないけど
>>660の言っていることは
Printableのインスタンスを2個以上作れってことでないの?
ま、違ったらすまん
>>653
戻り値で、まだ印刷終了してない事をあらわす定数を返せば
何ページでも印刷可能。
666 :03/05/06 19:43
 携帯アプリを作ろうと思って、J2MEで勉強しているのですが、
コンパイルは通るのに、実行時エラーがでてしまうのです。
Build complete
java.lang.NullPointerException
at DrawCanvas.paint(+32)
at javax.microedition.lcdui.Display.serviceRepaints(+105)
at javax.microedition.lcdui.Display&DisplayAccessor.timeEvent(+34)
at com.sun.kvem.midp.lcdui.EmulEventHandler$EventLoop.run(+545)

これを読んでいる感じだと、最初のatのみ自分のプログラムに間違いがあり
あとはライブラリが悪いみたいに受け取れるんですが
本で勉強しているのですが、CD-ROMに入ったソースをそのままビルドしても
同じエラーがでるので、混乱しています。
 エラーメッセージの読み方が悪いのでしょうか?
 環境は win2k wtk104 java sdk 1.3 です。
 どうぞよろしくお願いします。
>>666
> java.lang.NullPointerException
> at DrawCanvas.paint(+32)
> at javax.microedition.lcdui.Display.serviceRepaints(+105)
> at javax.microedition.lcdui.Display&DisplayAccessor.timeEvent(+34)
> at com.sun.kvem.midp.lcdui.EmulEventHandler$EventLoop.run(+545)

ってのは、DrawCanvas.paint() で NullPointerException が発生した。
その DrawCanvas.paint() は javax.microedition.lcdui.Display.serviceRepaints() で呼ばれていて、
その javax.microedition.lcdui.Display.serviceRepaints() は javax.microedition.lcdui.Display&DisplayAccessor.timeEvent で呼ばれていて、
....

って意味です。
>>667
ぬるぽだな。
669デフォルトの名無しさん:03/05/06 19:56
俺、s1s(ForteForJava4)なんでmakefileとかantとか知らないんだけど
知っておいtほうがいいかな?
>>669
覚えて損する知識なんて無いぞ。この業界。
671まりこ:03/05/06 19:58
以前ホームページビルダーでホームページを作って転送してネット
上で公開していました、本屋で初心者作成マニュアル見ながらです、それでし
ばらくそのホームページはほっといていて今日しさしぶり自分のホームペー
ジでも編集しようと思いビルダーを起動してファイルを読み込もうとクリックした
らファイルが見つからないと出てファイル名が消えてしまいました、多分マ
イドキュメントの方のフォルダをいつの間にか消してしまっていたからのようです、
それで1からやりなおそうとマニュアル片手にとりあえず再度製作する前に新しいファイ
ルとサイトを作っておこうと画面にテストという文字だけ入れてサイト転送しました、転
送ができないなどと言う文字は出てきません、そしてエクスプローラーから自分のアドレス
を入力、しかしネット上にあるのは前のホームページでした、なぜ転送できないのかと自分
なりにいろいろやってみたけど上書きできません、どうすればいいのですか?実はまえに同じこ
とがあって、アンインストールして最初からやるとできました、アンインストールして最初から
なんでしょうか?転送の仕方を教えてください
672デフォルトの名無しさん:03/05/06 20:02
>>671
index
673デフォルトの名無しさん:03/05/06 20:22
>>667
ありがとうございます。
ということは、やっぱりDrawCanvasに間違いがありそうですね。
誤植? ソースに間違いがあるんでしょうか?
自分で見た感じだと、エラーがあるようには見えなかったのですが、、、、
メインルーチン DrawTest.java
 public class DrawTest extends MIDlet {
/** コンストラクタ */
public DrawTest() {
Display.getDisplay(this).setCurrent(new DrawCanvas());
}

/** MIDlet開始時に呼ばれるメソッド */
protected void startApp() throws MIDletStateChangeException {}

/** MIDletが一時停止時に呼ばれるメソッド */
protected void pauseApp() {}

/** MIDletが終了時に呼ばれるメソッド */
protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {}
}

DrawCanvas.java
674デフォルトの名無しさん:03/05/06 20:27
>>673のつづき
DrawCanvas.java

class DrawCanvas extends Canvas {
private Imageimg;
DrawCanvas() {
try {
img = Image.createImage("/mi.png");
}catch(java.io.IOException e) {}
}
protected void paint(Graphics g) {
//背景を白に塗る
g.setColor(0x00FFFFFF);
g.fillRect(0, 0, getWidth(), getHeight());
//画像を描画
g.drawImage(img, 0, 0, Graphics.TOP|Graphics.LEFT);
//カラーを黒に指定
g.setColor(0x00000000);
g.drawLine(40, 10, 90, 10);
g.setStrokeStyle(Graphics.DOTTED);
g.drawLine(40, 20, 90, 20);
g.setStrokeStyle(Graphics.SOLID);
g.drawString("Hello!", 10, 30, Graphics.TOP|Graphics.LEFT);
g.drawRect(10, 55, 20, 15);
g.fillRect(50, 55, 20, 15);
g.drawRoundRect(10, 75, 20, 20, 7, 7);
g.drawArc(10, 100, 15, 15, 0, 300);
g.fillArc(50, 100, 15, 15, 0, 300);
}
}
なんですが、どうでしょうか?
/mi.png が無くって img が null とかでないの?
っつかDrawCanvas.javaの32行目ってどこよ
>>674
つーか、なぜprotectedでコンパイルが通る?
677676:03/05/06 20:47
あ、アプレットと勘違いした。
誤爆。
打つ出し脳
>>674
つーか、なぜprivate Imageimg;でコンパイルが通る?
エラーの読み方もわからないレベルなんだから、ソース貼るときは
しっかりコピペしてよ。行番号全然わからんよそれ。原因は
675に同意なんだけど、それほんとに本の通りなの? Image.createImage
の後の処理とかかなり手抜きなんだけど、書名も教えてよ。
antかmakeかって話は、

自分以外一切使わないならmake使っても構わんが
人に配布するときはmake使って欲しくないな。

antが遅いからmake使うって人はどんな環境なんだろうか。
antで何も考えずにjavacするとコンパイルしなくていいものまでまとめてコンパイルするから
重いというのはまあわかる。

そんなときはEclipseでantを使うのがいいんではないかと。
ファイルを保存すると同時にコンパイルするので高速。
「最新表示」による更新もなかなか早い。
けどjavadocやjarはantの方を愛用してますよ。

antのいいところって逝ったら、自分が書いたmakeファイルの文法ミスに気づきやすいか
そうでないか、といった違いだろうか。XMLパーサが文法ミスを厳しくチェックしてくれるのはありがたい。
署名もjunitも実行もFTP転送も皆ant。

680デフォルトの名無しさん:03/05/06 21:08
早速、ありがとうございます
>>674
>>678
 すみませんでした スレを汚しているような気がして、
コメント部とスペースを削除していました。
 本は http://www.skyarts.com/japan/books/midp_game/index.html
で紹介されているものです。 
 以下が正確な全文になります。
/*
* DrawCanvas.java
*
* Copyright 2001 SkyArts. All Rights Reserved.
*/
import javax.microedition.lcdui.*;

/**
* 低レベル描画を行うCanvasクラス
*
* @author Hideki Yonekawa
* @version 1.0
*/
681デフォルトの名無しさん:03/05/06 21:08
>>679
インクリメンタルって知ってる??antでタスク作ったことあるの?
682デフォルトの名無しさん:03/05/06 21:09
class DrawCanvas extends Canvas {
/** Imageオブジェクトを保持する変数 */
private Imageimg;

/** コンストラクタ */
DrawCanvas() {
//画像を取得
try {
img = Image.createImage("/mi.png");
}catch(java.io.IOException e) {}
}

/** 描画を行うメソッド */
protected void paint(Graphics g) {
//背景を白に塗る
g.setColor(0x00FFFFFF);
g.fillRect(0, 0, getWidth(), getHeight());

//画像を描画
g.drawImage(img, 0, 0, Graphics.TOP|Graphics.LEFT);

683デフォルトの名無しさん:03/05/06 21:09
//カラーを黒に指定
g.setColor(0x00000000);

//線の描画
g.drawLine(40, 10, 90, 10);

//破線に指定
g.setStrokeStyle(Graphics.DOTTED);
//破線を描画
g.drawLine(40, 20, 90, 20);

//破線を通常の線に戻す
g.setStrokeStyle(Graphics.SOLID);

//テキストを描画
g.drawString("Hello!", 10, 30, Graphics.TOP|Graphics.LEFT);

//四角形を描画
g.drawRect(10, 55, 20, 15);

684デフォルトの名無しさん:03/05/06 21:10
Swingやってみたら面白いです。目に見えるって、やってて楽しいね。
>>682
あなた、コメントに無駄がありますよ。人目見て解るようなことは書かない方がよろしい。
仕様的に意図した挙動をコメントしなさい。
686デフォルトの名無しさん:03/05/06 21:13
//塗りつぶしの四角形を描画
g.fillRect(50, 55, 20, 15);

//角の丸い四角形を描画
g.drawRoundRect(10, 75, 20, 20, 7, 7);


//円弧を描画
g.drawArc(10, 100, 15, 15, 0, 300);

//塗りつぶしの円弧を描画
g.fillArc(50, 100, 15, 15, 0, 300);
}
}

です。 private Image img; の空白は消すはずがないのですが、
消してしまっていたようです。申し訳ありませんでした
32行目は,g.drawImage(img, 0, 0, Graphics.TOP|Graphics.LEFT);
にあたります。 
687682:03/05/06 21:19
>>685
すみません 
本のCD-ROMソースの転写ですので、
自分で書いているときにそのようなことがないように気をつけます。
688デフォルトの名無しさん:03/05/06 21:20
>>686
リア厨かもしれんが、せめてWebで落とさせるくらいの気を使えよ。
長々と載せても俺らにはサンプルコードレベルなんだから。
689デフォルトの名無しさん:03/05/06 21:24
>>688
プログラムを組もうとしているくせに
ファイルのアップの仕方も知りませんでした。
すみませんでした。
それ位のことはできるように勉強します。
まあ、結論は>>675でFAってことで
691デフォルトの名無しさん:03/05/06 21:26
>>689
あんた本当はJavaバリバリ使ってるんだろ?業務で5年くらいやってんだろ?
もうネタは止めてくれ。
692デフォルトの名無しさん:03/05/06 21:27
>>674
>>678

32行目のコードを見て、やっと仰っている事の意味を理解しました。
適当な画像をpngに変換して置いてやったら、実行時エラーもなく
正常な動作をしました。
 長々とスレを汚してしまってすみませんでした。
>>682
じゃあ、画像が読み込めてない。
try {
img = Image.createImage("/mi.png");
}catch(java.io.IOException e) {
e.printStackTrace();
}
でエラーを確認してちょうだい。
>>692 めちゃくちゃ笑った。まあファイルのアップロードの
仕方知らないと最終的にゲームできてもWeb配布できないわけだが。
695デフォルトの名無しさん:03/05/06 21:31
"/mi.png" はないだろ。まじで。
696693:03/05/06 21:31
ぐあ、また誤爆。
吊ってくる。
>>695
なぜかありますた
>>670
delphiとかは覚え損かもな
699デフォルトの名無しさん:03/05/07 01:33
探し物があるのですが、教えていただけないでしょうか?
1・javaのインタプリタ
2・javaのマクロツール

1はjavaはインタプリタだろって突っ込みはなしで、
pythonとかN88BASICみたいなものです。
2はCのようなマクロを書いて、プリコンパイルするようなものです。
宜しくお願いします。
700get
>>699
1. は BeanShell とか。

2. は良くわからんけど、プリコンパイルして Java のソース吐くの?
702デフォルトの名無しさん:03/05/07 01:42
>>701
サンクスコ!
2はプリコンパイルでもコンパイルでもどっちでもいいです。。
>>699
概要 - フープ!FREE http://www.hirokiok.com/ja/hooope/

フープ!FREE は、強力で使い易い Java 製テキストエディターです。
次のような特徴を持っています。

Java インタープリターを内蔵
機能が豊富なエディター
Java/Web開発に最適
フリーソフト

業務での Java プログラミングや JSP/Servlet プログラミングなどのほか、
HTML 編集や日常的なテキスト編集にも適しています。
704プロの逝って良しの1 ◆MvRbZL6NeQ :03/05/07 01:43
http://flp.cs.tu-berlin.de/~tolk/vmlanguages.html
こういうので良ければ大抵の言語はあるみたいだぞ
CのプリプロセッサcppはJavaでも使えるよ。#defineとか#ifdefとかなら十分いける。
が、そんなことしてJavaソースの可読性を下げてどうするつもり?
706プロの逝って良しの1 ◆MvRbZL6NeQ :03/05/07 01:51
コンパクト化すれば読む必要無いのです
707デフォルトの名無しさん:03/05/07 01:56
>>703
フープって凄いね。eclipse使ってるから
エディタとしては必要ないけど個人レベルで
よくここまで作れるって感じ。

>>705
cppってJavaでもいけるんですか・・・
知らんかったです。
708ぽぽ:03/05/07 01:58
実行中のスタックを参照して
呼び出し元のローカル変数を参照するとかって
Javaでできるのでしょうか?
709デフォルトの名無しさん:03/05/07 02:02
>>708
そこに意味はあるのかい?
710ぽぽ:03/05/07 02:04
いや、Cでは出来るからJavaが出来ないとなるとクソだなぁと。
>>708
それができたら SandBox とか簡単に崩れないか?
712プロの逝って良しの1 ◆MvRbZL6NeQ :03/05/07 02:05
スタック参照は出来ないと思う。
素直に引数で渡せば?
713プロの逝って良しの1 ◆MvRbZL6NeQ :03/05/07 02:06
Javaは糞
諦めれ
714ぽぽ:03/05/07 02:07
>>709
例えば、
public int xxx(){
int a = 5;
int b = 10;
Debug.dump(); <--ここでaとbの状態を表示
}
みたいなものを作れないかなと思いまして。
フィールドなら参照できてもローカル変数はどうなんでしょう?
>>710
とは言っても、C言語の仕様の範囲内では
呼び出し元のローカル変数なんて触れないけどね。
スタックにどんな風に呼び出し元のアドレスが積まれるか、
とかまで規定されて無いでしょ。
716ぽぽ:03/05/07 02:08
>>710は偽者
717デフォルトの名無しさん:03/05/07 02:10
>>710
JavaだとVM内部の話しになるから無理なんじゃない?
漏れの浅知恵で言わせてもらうと、JNIで共用メモリを参照するような
ことをやったらできそうな予感がしないでもない。
スタックなんて言葉すら出てこないよかーん
719デフォルトの名無しさん:03/05/07 02:12
そもそもスタックというデータ構造を無視した方法はよろしくないかと思います。
>>714
それって C言語だったら実装できるんか?
たしか、VM仕様ではスタック領域で変数・メソッドの積まれ方は規定されてたような・・・。
722718:03/05/07 02:15
ああ、俺が言っているのはCの仕様のことね。
>>715へのレス
723ぽぽ:03/05/07 02:15
>>717
TTYデバッガ使うと参照できるみたいなんですが、
結局TTYデバッガから別のJVMを起動して、
その中でデバッグ対象のクラスを実行しているっぽいです。
ところで、別プロセスで動いているJVM間で
値のやり取りっていうのはできるのでしょうか?
JVMDI でぐぐれ。
725デフォルトの名無しさん:03/05/07 02:18
>>723
まだ勉強中なのだが、RMIだったら可能なはず。

プロセス間通信だけ言わせてもらうと、
クラサバでプロセス間通信は普通にやるみたいだし。
カスタムプロトコルを作らなくてもRMIだったら簡単にできるとの噂。
リクエストもレスポンスもない。あるのはメソッド実行だけだ。
726デフォルトの名無しさん:03/05/07 02:23
調査してんの?w
727デフォルトの名無しさん:03/05/07 04:20
>>725
内部でリクエストレスポンスを隠蔽しているだけだけどな。

でもってさらに、開発者がテヌキをするために、EJBという
上位レイヤがあるわけさ〜。EJB>RMI>TCP/IPさ〜。
728デフォルトの名無しさん:03/05/07 04:26
>>725
あと、デバッグ用のスタックやヒープの参照は、専用のプロトコルでプロセス間
通信してるのさ〜。プロトコル名がそのままリンクライブラリ名になってるさ〜。
JDWPっていうさ〜。探してみるさ〜。

でもってその上にあるAPIがJVMDIさ〜。
JVMDI自身はネイティブCの関数ライブラリだけど、その上にJDIてのもあるさ〜。
実行状態のトレースとかお手軽に出来て、結構面白いさ〜。
システム作ること自体には役に立たんけどね〜。

729デフォルトの名無しさん:03/05/07 06:36
アプレットをあるパッケージ内においた場合、HTMLからどうやって指定するの?
VM を -Xdebug, -Xrunjdwp をつけて起動しておけば下位部からアタッチ
してデバッグすることは可能。(手元のマシンでは shmemBase_attach failed
のエラーになってしまうが...)

RMI, Serialize, socket を使ってデータを渡すことも可能だが、それは
参照される側がそれを前提に作られている場合の話。

>>708
JVM 仕様ではスタックのフォーマットに関しての厳密な規定はない。
目的はいろんなアーキテクチャで(無理なく)インプリできるように
するため。VM 側が保障するのはカレントメソッドがカレントフレーム
のローカル変数に正しくアクセスできることだけ。スタック自体、
連続である必要もなし、その方向も規定されていないし、データを
どのようにおくかのアライメントも規定はない。

メソッドが HotSpot compile されると compile されたメソッドの
ローカル変数になる。この時点でインタープリタモードとは変数の
おき方が変わってくる。HotSpot は小さなメソッドをインラインで
呼びもとのメソッド中に展開することもあるので、HotSpot がどの
辺りに変数を置くか予想しても無駄。それに、ローカル変数を
スタックに置くのってレジスタの足りない某社のプロセッサぐらいで、
近代的なプロセッサは可能な限りレジスタに置く。レジスタは無限
ではないので場合によってはどこかにストアされることもあるが、
どこにおくかはアーキテクチャによってことなる。
呼びもとのメソッドのローカル変数を参照する必要性がよくわから
ないが、カレントオブジェクトや、カレントスレッドにその値を
コピーしておくとか、これらに設けたフィールドを今までローカル
変数を使っていた用途に使うと、やりたいことはできるのでは?

スタックのフォーマットがわかったとして、ポインタがないのに、
どうやってアクセスするんだ?そこだけ JNI ?

アプリのつくりに手を加えられないのであれば何らかのデバッグ
インターフェイスを使うことになる。
732デフォルトの名無しさん:03/05/07 08:03
かなり学習してるみたいだけどHTTPやりすぎなんじゃないの?
リクエストレスポンスだなんて。
EJB>RMI>TCP/IPって、図式化がおかしい。
733デフォルトの名無しさん:03/05/07 08:44
Swingが高速化されたと言われている1.4.2を入れてみたのですが、
全く速くなった感覚がありません。SwingSetのデモでは、
相変わらずツールバーの表示に2,3秒かかるし、ビューの切り替えにも1秒近くかかるし。
ハードウェアアクセラレーション対応という事だから、何かPC側の環境が悪いんでしょうか?
当方、SharpのMebius MT2-P1を使用しています。

EJB>RMI>Socket>TCP/IP
これなら良い?
735デフォルトの名無しさん:03/05/07 11:00
すいません。>>650の問題どなたかわかる人いませんか。
736デフォルトの名無しさん:03/05/07 11:02
データベースとサーブレットで掲示板を作っているのですが、データベースを新しく作り直した場合、サーバー側のトムキャットを再起動させないとだめなんですか?真っ白なページが帰ってきてしまうのです。どなたかご教授お願いします。
>>735
「"」で囲ってみるとか
>>735 その前に、「"."が"/"とみなされている」ってのはどうやって
確認したの? なんかパッケージとごちゃまぜに理解している気がするんだけど。
739デフォルトの名無しさん:03/05/07 12:37
http://muimi.com/j/jakarta/commons/collections/

このサイトにあるTest1.javaのソースに記述されている、

(isMale ? "男" : "女");

ってどういう意味なんでしょう?
コロンの演算子の意味は?
740__:03/05/07 12:41
>>739
三項演算子で検索を
>>739
素質 &= (ひと目見てすぐ分かるか ? あり : なし)
>>739
isMaleがtrueなら男、falseなら女が返る。
三項演算子ってのも何するのかわからない名前だよな。
条件演算子とか言えばいいのに。
745739:03/05/07 14:08
>>741->>744
禿シク、クスコ(・∀・)
746デフォルトの名無しさん:03/05/07 16:02
ネットゲームをやっていて疑問があります。どなたかご教示ください。
対戦型のゲームって、ネット上の二人が、生成されたオブジェクトを
共有することによって、データがやり取りされているんでしょうか。
観戦で入ってきた人もそのオブジェクトを共有することにより、
みんなでチャットができているんでしょうか。
それが違うとしたら、どういう仕組み(文法事項)を
つかって、そういう機能を実現しているんでしょうか。
>>746
ゲームをやるのに理屈はいらない。
>>747
惚れたわ・・・
同フォルダにある画像をPanelやLabelなどのコンポーネントに表示させるには
どうしたらいいでしょうか?
#createImageとかそれっぽいのはあるんですが
具体的な実装方法がわからないんです。
(Swingコンポーネント等は使わずに1.1.xの環境で実装したいのですが)
Panel や Label はあんまりお奨めしないが、
やるなら Component#paint(Graphics) をオーバーライドして
そのメソッド内で g.drawImage(img, 0, 0, this); など。this ははじめは気にするな。
画像は Toolkit#getImage(URL) など使って呼び出す。
URL には Class#getResource("image.jpg") とかやっとけ

↑何書いてあるか分からなかったら API を読むことそのものを勉強。
Swing がどうこう言ってるからまぁ大丈夫とは思うが
>>750
>画像は Toolkit#getImage(URL) など使って呼び出す。
drawImageが使えるかも、とまでは思っていたんですが
引数のImageクラスがよくわからなかったのでこれです!
とりあえずやってみます、ありがとうございましたー。

ところでImageクラスはabstractでは無くしてコンストラクタに
new URLとかnew Fileを取れるようにしてもいいような気がするんですが
何故そういう風にはなっていないんでしょうか?
頭の中ではg#drawImage(new Image(new URLorFile("hoge")),x,y,this);
とか出来ると便利だと思うんですが

ちょっと支離滅裂な事言ってるかもしれないですけどすいません^^;
>>751
そんなあなたに
javax.imageio.ImageIO#read
>>751
継承しなくても一意に動作が保証されるなら abstract でなくてもいいが、
デバイス依存で減色の必要があるから、
abstract にしといた方が都合がいいんじゃなかろうか
Imageクラス ≒ ビットイメージだが、画像保存≠ビットイメージだし、
それなのに File や URL をインスタンスで渡すという手法はどうか。
Graphics が abstract なのも同じような理由だろう。
754デフォルトの名無しさん:03/05/08 00:00
一太郎Arkのソースコードをコンパイルしました

実行しようとすると、途中で止まります
755プロの逝って良しの1 ◆MvRbZL6NeQ :03/05/08 00:15
リソースが無いからに10ペソ
>>661ですが、どうやらJTabbedPaneに追加するコンポーネントが
JComponentではなくComponentを追加した時にツールチップが付かないようですが、
この認識はあってますか?それともバグでしょうか?
757デフォルトの名無しさん:03/05/08 00:59
>>756
AWTとSwing混ぜて使ったら、動作は保証できませぬ。
描画の仕組みが全然違うので。
必ずどっちかだけで作りましょう。
>>757
了解しました。ありがとう。
759デフォルトの名無しさん:03/05/08 01:07
>>757
描画の仕組みってどこまでを言っているのだ。
760749:03/05/08 01:18
出来ましたー。
本当にありがとうございました・・・(TT)
うぐぅ。>>661=>>756=>>758です。
Canvas c = new Canvas();
// JPanel p = new JPanel(new FlowLayout()); // (1)
// JPanel p = new JPanel(new BorderLayout()); // (2)
p.add(c);
t.insertTab("", null, p, "hogehgoehoge", 0);
(1)だとツールチップはでるんですが、
(2)だと出ないようです。。。

>>757さん
ただレイアウトマネージャ変えただけなのにどういうことなんでしょうか?
描画の仕組みが違うから・・・ですか?
ごめんなさい。>>761は大嘘でした。
BorderLayoutの場合は初回のみツールチップがJPanelの裏に隠れてしまうようです。
JFrameとJPanelのスキマ(分かりますかね?)にツールチップの破片を見つけました。
763754:03/05/08 01:28
>java -jar ark11.jar
java.lang.NoClassDefFoundError: jp/co/justsystem/ark/model/document/ArkDocument
at jp.co.justsystem.ark.Ark.createDOMTree(Ark.java:1528)
at jp.co.justsystem.ark.Ark.createNewDocument(Ark.java:1441)
at jp.co.justsystem.ark.Ark.createNewFrame(Ark.java:1177)
at jp.co.justsystem.ark.Ark.initInstance(Ark.java:1070)
at jp.co.justsystem.ark.Ark.initJDApplication(Ark.java:1148)
at jp.co.justsystem.jd.JDAStandaloneContext.startJDApplication(JDAStandaloneContext.java:267)
at jp.co.justsystem.ark.Ark.main(Ark.java:107)
訳ワカラン
764デフォルトの名無しさん:03/05/08 01:29
>>761
JPanelとCanvasまぜて使ってる時点で、動作不定だとおもっとけ。
SunもJava3Dとの兼ね合いもあって今後どうにかしようとはしてい
るらしいが。
765デフォルトの名無しさん:03/05/08 01:35
>>763
java.lang.NoClassDefFoundError: jp/co/justsystem/ark/model/document/ArkDocument
このエラーって、パッケージ区切りは/だっけ?

とりあえずARK11.jarをunzipで解凍してみてくれ。
jp/co/justsystem/ark/model/document/ArkDocument.classってのがなければ、ビルドミス。
>>764
なるほど。。。
Canvasを使う時はSwingを使うと不安定ってことですか。。
じゃあCanvasの代わりにJCanvasを使えばいいわけですね!
・・・JCanvasが無いよぅ(つд`
767デフォルトの名無しさん:03/05/08 01:50
>>766
JPanelを使えよ。#paintComponent()をオーバーライドすれば
なんでも描画できるから。
>>767
やる前に質問するのもアレですが、

JTabbedPaneのタブ部分のツールチップは
JPanelにCanvasを追加した後、
JTabbedPaneにJPanelを追加して
paintComponentをオーバーライド、
マウスの位置を判定してJToolTipを描画すればよい

ということですね?(激しくマンドクセー( ゚Д゚)
769デフォルトの名無しさん:03/05/08 02:00
>>768
だからなんでCanvas使うんだよ。JPanel使えっつってんだろ。
>>769
GeckoがCanvasを返してくるのです。。。
ちょっと言い方おかしかったです。
webclientっていうライブラリがGeckoをCanvasとして返してくるんです。
>765
ビルドログでエラーが出ているみたいです
jdkのヴァージョンを下げて再ビルドしてみます

thx
>>771
じゃあ、Swing使うのやめろ。
>>773
え?そういう結論なのであればツールチップは素直に諦めますよ。
長々とスレ汚しスマソ。
>>771
うまくいくかどうか微妙だが、こういう手もあるかな。
重量コンポーネントと軽量コンポーネントの、画面上
での混在は問題があるが、単に描画ロジックだけを
借りるだけならなんとかなる、かもよ。

public class MyPanel extends JPanel{
 private Canvas canvas;
 public MyPanel(Canvas canvas){
  this.canvas = canvas;
 }
 public void paintComponent(Graphics g){
  canvas.paint(g);
 }
}
>>775 ありがd。今から試してみます。
777775:03/05/08 02:30
>>776
多分ダメダと思うけどね。
>>775
Abortしまくりでした( ´・ω・`)ショボーン
描画がNativeなのでちょっと無理っぽいです。

すいません。申し訳なくなってきたのでこの辺で退散します。
助言くださった方々、ありがとうございました。
779デフォルトの名無しさん:03/05/08 02:52
現在のキーボードの押下状態を取得するにはどうするの
イベント以外で
>>778
マウスイベント自分で管理して、適当に自分で描画したら?
□を書いて中に文字列記入するだけだよね?
(退散するとか言いながらレスしてスマソ)
>>780
今試してみましたが、
Canvasからタブへ移動した時はMOUSE_EXITED→MOUSE_ENTEREDと飛んでくるので
捕まえることができるんですが、上側(メニューバー側)からタブへ移動した時は
何もイベントが飛んできませんでした。

イベントディスパッチャがネイティブなので、使えるのがMouseListenerだけで
MouseMotionListenerは使えないのです。残念。
>>780さん本当にありがとう(・∀・)
JUnitってなんですか?
なんで単体試験が便利にできるのですか?
あ!
タブの5ドットほど下の位置で、上側からでも下側からでも捕まえられるのを確認したので
それを捕まえでタブの位置にツールチップ表示します。

なんとか解決したみたいです。ありがd!!(iдi
784デフォルトの名無しさん:03/05/08 03:13
>>782
単体試験クラスを実行するから(自動化)だよ。テストコードは自分で書くわけだが。
JUnitでぐぐれ。
>>782
1度書けば、何度でも作った分を纏めて簡単に起動できる。
なにか問題が発生したら問題が発生したことを報告してくれる。

既存のソースに何か変更をした場合、予期しない部分にバグを
作りこむ可能性が往々にしてあるけど、最初にJUnitのテストケース
を書いておけば、

ソース変更→テストケース起動→テストケースが失敗したらエンバグ
してしまったことになるので、修正→以降テストケースがすべて成功
するまで繰り返し

とやることで、常にソースの単体レベルの品質を維持できるのよ。
便利でしょ。フレームワーク自体は難しい作りじゃないんだけど、
その仕組みがやってくれることは、非常に画期的っス。

…多分どこかで似たようなものを作っている人もいるかもしれな
いけど、Java言語自身と同様のレベルで、世界中で標準的に使用
されているから、変な俺様ライブラリを使うより、コッチを使う
ほうが、将来的なコスト削減のために良い。デファクトスタン
ダードの威力の恩恵は捨てがたい。
786デフォルトの名無しさん:03/05/08 03:34
>常にソースの単体レベルの品質を維持できるのよ。
それは言い過ぎ。維持じゃなくて、期待でしょ。
テストコードそのものにバグを埋め込む可能性は否定できないし。デメリットも多数ある。
DB処理、抽象クラスのTestCaseは不慣れだと苦痛だよ。
>>785
漏れの経験からして、将来性のある設計より、逃げ切れる設計をやってるところが多い。
日本のSIなんて作り逃げ。と考えるとJUnitを導入してる、しようとする会社は少ない。
788デフォルトの名無しさん:03/05/08 03:59
ここで、Wizをジャバで作るプロジェクト始まってるんだって。
http://219.96.231.242/wizonline/

漏れも参加しようかなぁ〜
>>749
import java.awt.*;
import java.applet.*;
class v extends Canvas {
Image i; Frame f;
public v(String path, Frame f) {
i = Toolkit.getDefaultToolkit().getImage(path);
MediaTracker mt = new MediaTracker(f);
mt.addImage(i, 0); this.f = f;
try { mt.waitForID(0);
} catch (InterruptedException ie) {}
setSize(i.getWidth(f), i.getHeight(f));
}
public void paint(Graphics g) {g.drawImage(i, 0, 0, f);}
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
Frame f = new Frame(args[i]);
aCanvas ac = new aCanvas(args[i], f);
f.add(ac);f.pack();f.show();
}
}
}
>>789
s/aCanvas/v/g;
791デフォルトの名無しさん:03/05/08 10:54
>737、>738ご返事ありがとうございます。

>737
囲ってもだめでした。

>738
classpathのディレクトリではありませんでした。
javaのプログラムのパスやパラメータにピリオドがあると
/に変換されるようです。

たとえば
d.d/HelloWorldApp.class
d.d/HelloWorldApp.java
があったとして

java d.d/HelloWorldApp

を実行すると

Exception in thread "main" java.lang.NoClassDefFoundError: d/d/HelloWorldApp

となってしまいます。
>>791
あのね、普通はどんなクラスもパッケージに属するの。
そういうときは

% java jp.co.xxx.project1.Test

なんつって実行するの。
そのとき jar やファイルシステムは、かならず jp/co/xxx/project1/Test1.class
なんちゅうディレクトリ構成にするの。
だから d.d/HelloWorldApp は d.d ちゅうパッケージのクラスと思われとるんじゃないかのう。
>>791
java コマンドで実行するときに.classファイルの場所をディレクトリ名から
指定するなんてことはふつうはしない。
トップレベルパッケージが配置されているディレクトリやjarファイルに
classpathを設定して、javaコマンドではclass名の完全修飾名を指定する。
初心者な質問ですみません。
2004/12/21 10:56:30
という日時を
DEC, 21, 2004, 10:56
という形式に変換したいんですがどうすればいいでしょうか?
Timestampを使えばいいんじゃないかということはわかるんですが・・・。
795デフォルトの名無しさん:03/05/08 11:29
>792
クラス名がぶつからないように会社のドメインを逆にしたパッケージ名
にするのは知っています。

例えば製品名にバージョンを入れたいときはどうするのでしょう。
jp/co/company/Product1Ver1.0/Test1.class

とか。

それとRuntimeクラスで他のプロセスとしてjavaプログラムを
実行するときも私のプログラムで同じ問題が起きました。


Runtime.getRuntime().exec("java -cp /usr/local/jakarta-tomcat-4.0.6/common/lib/mail.jar
:/usr/local/jakarta-tomcat-4.0.6/common/lib/activation.jar
:/usr/local/jakarta-tomcat-4.0.6/webapps/pd1/WEB-INF/classes/ " +
" jp/co/xxx/pd1/Test1 /usr/local/jakarta-tomcat-4.0.6/webapps/pd1/");

という行を実行したとします。(長すぎるので改行を入れました)
jp/co/xxx/pd1/Test1というプログラムに/usr/local/jakarta-tomcat-4.0.6/webapps/pd1/
というパラメータを渡していますが、Test1で受け取ったパラメータは
すると4.0.6の部分が4/0/6になってしまいます。
>>787
逃げ切れる設計って良い表現だな。今度使わせてもらうわ。
まあ要件もちゃんと詰めれば無元大じゃ無いんだから、落とし所をはっきりさせて逃げ切れれれば上出来と思うが。
正直、行き当たりばったりで作られるのも困るが、落とし所を考えない夢の設計をされるのも困ってしまう。(基盤系は除く)
>>794
SimpleDateFormatと言いたいけどちょっと無理かも

>>795
>例えば製品名にバージョンを入れたいときはどうするのでしょう。
>jp/co/company/Product1Ver1.0/Test1.class
「.」はパッケージの区切り文字なのでパッケージ名には含めないでしょう。

javaコマンド実行時に-classpathで指定しないで
set classpathで設定後javaコマンド実行ってのは?
>例えば製品名にバージョンを入れたいときはどうするのでしょう。

パッケージ名とはそもそもドメインであるから、 . を入れること自体がナンセンス。
_ などで置き換える (- も _ で置き換える)

>Test1で受け取ったパラメータは すると4.0.6の部分が4/0/6になってしまいます。
パラメータがパス等を表したものとは限らない。
なのに勝手に java がパッケージに解釈してしまっているということになる
信じられん。ソース晒せ。
799デフォルトの名無しさん:03/05/08 12:19
>>788
Java3Dでオンラインゲーム?
著作権問題に引っかからないのかな?

オープンソースじゃないんだね

800797:03/05/08 12:22
>>794
無理かもってのはSimpleDateFormatで単純にやるのが無理かもってことで(12月→DEC)
>>794
「という日時を」ってのはStringなわけ?
Dateなわけ?それ以外の何か?
質問があいまいです。
>>794
長くなるので変なところで改行入れさせてもらうけど、これでどう?
System.out.println(
 DateFormat.getDateTimeInstance(
  DateFormat.LONG,
  DateFormat.SHORT, Locale.US
 ).format(new Date()));
出力はちょっと違うけどね。
May 8, 2003 12:52 PM
803デフォルトの名無しさん:03/05/08 13:00
>798
ご返事ありがとうございます。

ピリオドを無理にディレクトリにつける必要はないですね。
javaの流儀ってことでしょうか。

あと、パラメータの.が/になるのはいま実行してみると
なっていませんでした。そのときは.を別の文字に変換して
渡すようにしたので確かにそうなっていたのですが。
804802:03/05/08 13:00
どうしても自作したいなら、自作Formatクラスを作るのがいいかな。
12->Dec.のような変換はjava.text.ChoiceFormatを使うと簡単にできるよ。
805デフォルトの名無しさん:03/05/08 13:14
JSPからRuntime.getRuntime().execを使ってnotepad.exeなんかを起動
させると起動はするんですが自分じゃなくてユーザーがSYSTEMになっており
プロセスは確認できますが画面が表示されません。
実際はRuntime.getRuntime().execからclassファイルを動作させたいんですが
何が悪いんでしょうか?又大丈夫なんでしょうか?
>>794,797

SimpleDateFormat formatter = new SimpleDateFormat ("MMM dd yyyy hh:mm", Locale.US);

これで駄目だ理由を教えてくれ。
794です。
説明不足ですみません。

String sDate = "2004/12/21 10:56:30";
DateFormat sdtFormat = DateFormat.getDateInstance();
java.util.Date sdate = dtFormat.parse(stDate);
SimpleDateFormat formatter = new SimpleDateFormat ("MMM dd yyyy hh:mm", Locale.US);
sDate = formatter.format(sdate);
System.out.println(stDate);

こういう感じでStringでとったものをdate型に変換して実行してみたのですが、
これでは時間が正常に表示されないので困っています。
808797:03/05/08 15:15
>>806
>>794が月を出力したい形式が
MMMでフォーマットしたものをtoUpperCase()で大文字にしたものでよければ
それでいけるなあと思ってたらそれでOKっぽいですね。

>>794
DateFormat sdtFormat = DateFormat.getDateInstance();

DateFormat sdtFormat = new SimpleDateFormat( "yyyy/MM/dd hh:mm:ss" );
これでいけます。
809794:03/05/08 15:28
>>797,806
いけました!
ありがとうございました。
810デフォルトの名無しさん:03/05/08 15:44
>805
Runtime.getRuntime().execに渡すパラメータを"start notepad.exe"
にしてやってみたら?
811デフォルトの名無しさん:03/05/08 16:21
>>810

試してみましたが駄目でした^^;
>>805
うちの環境(Tomcat3.2.4)では
Runtime.getRuntime().exec( "notepad.exe" );
で普通にメモ帳のウィンドウが開いてます。
startはcmd.exeの内部コマンドだから駄目だろ。
 cmd.exe /c start /MIN ほげほげ
とか。
814デフォルトの名無しさん:03/05/08 16:45
質問させてください。
CSVファイル(カンマ区切り)を読み込み、
StringTokenizer(String,String)を使用し、
各フィールドを配列に入れるのですが、
なにも無いフィールドに遭遇した場合、
配列に入りません。
どのようにすれば、入力のないフィールドも配列に入るのでしょうか?

例:
1,山田太郎,2003/05/08,,,,
配列には、
1
山田太郎
2003/05/08
となっています。
以降の4つが、欠落します。
815U ◆CZtFsGiu0c :03/05/08 16:50
>>805
Tomcatがサービスで動いているのでは? サービスの実行アカウントがSYSTEMなら
そりゃSYSTEMアカウントで動くわな。
>>814
char separator = ',';
StringTokenizer st = new StringTokenizer(String, "" + separator , true);
int i = 0;
while (st.hasMoreTokens()) {
 String str = st.nextToken();
 if (str.equals("" + separator)) {
  i++;
 } else {
  array[i] = str;
 }
}
初期化も忘れずに。
817814:03/05/08 17:31
やってみましたが、なんか変です・・・
そのメソッドを教えていただけませんか?
818デフォルトの名無しさん:03/05/08 18:54
>>812
JSPでいけました?
失礼ですが当方OSはWinXPなんですけど違うのでしょうか?
又、動作した時のプロセスのユーザーはSYSTEMでしょうか?もしくは自分に
なっていますでしょうか?
すみませんがお教えいただけないでしょうか?^^;
819デフォルトの名無しさん:03/05/08 18:57
>>815
そうなんですか・・・。
用はJSPから印刷プログラムであるclassファイルを起動させようと
したいんですが皆さんはどのようにされているのでしょうか?
TomcatはSYSTEMで自動起動させたいのでできれば変更したくないのですが・・
820812:03/05/08 19:39
JSPから起動できています。OSは2kです。

ただ私はTomcatをバッチ叩いて起動しているので
Tomcat,Notepadともにユーザ権限で動いています。

ところで疑問なんですが、
Javaのclassだったらわざわざプロセス立ち上げなくても呼び出せませんか?
821デフォルトの名無しさん:03/05/08 20:50
>>820
未熟なものでとりあえず外部ファイルを動作させるには
皆さんRuntimeを使ってそうでしたのでこれでしようかと思っただけです^^;

beansとして呼び出せばいいということでしょうか?
もしくは他に方法があるのでしょうか?
あるのでしたら是非教えていただきたいのでよろしくお願いします。

822デフォルトの名無しさん:03/05/08 21:32
新しいクラスを作成するとき
そのクラスに引数を与えたいんですがどうしたらいいのでしょう?
>>822
意味が分からんが

public class a
{
public a(int x)
{

}
}
824デフォルトの名無しさん:03/05/08 21:51
>>823
あ、すいません曖昧で・・。

あるClassファイルで取得した引数をそのファイル内で作成する
classA B=new classA();
新しいオブジェクトに渡したいということなんですが・・
書き方変なのでわかりますでしょうか?
>>824
全然わからん。
826デフォルトの名無しさん:03/05/08 22:58
表現がかなり変で意図がつかみにくいが。
コンストラクタへの引数を、そのクラスのクラス変数なりインスタンス変数なりに設定すればいいんでは?

public class Age
{
 private int x;
 public Age(int x)
 {
  this.x = x;
 }
 public void hoge(){
  Sage sage = new Sage(this.x);
 }
}

意味違う?
>>814
データがクオートされている場合を考えてないみたいだが
それで十分なCSVファイルなんだったら
String#split(String separator) でも使っとけ。
>>814
ttp://www.wakhok.ac.jp/~tomoharu/Java/csv/
このライブラリ使ってみては。
ソースも色々と参考になるよ。
829デフォルトの名無しさん:03/05/08 23:49
クラスを読み込ませたいのに、Runtimeを使うのがそもそも間違ってると思われる。
VMにクラスをロードするのは別な方法で行う。ちょっとだけヒント。
Class.forName("ほげほげ");

Runtimeクラスは、Win32環境であれば
Win32Processを取得し、それからサブプロセスの起動。という手順になる。
単なる疑問なんですが
stringbufferクラスはなんでequals()メソッドをオーバーライドしてないんでしょう?
stirngはしてるのに
BUFFERとして使うべきであまり比較はしないからかな
StringBufferをstringbuffer、
Stringをstringと表記する時点でスキルも説得力も零。
832830:03/05/09 00:10
?疑問にスキルと説得力が必要?大文字にしないだけで?
なんだかわかりませんが自分で考えてみる事にします
833デフォルトの名無しさん:03/05/09 00:11
>>830
>BUFFERとして使うべきであまり比較はしないからかな
何と言いますか、物事を考えるときの「自分の中での前提」ってやつを信じ過ぎ。
834デフォルトの名無しさん:03/05/09 00:13
>>832
> ?疑問にスキルと説得力が必要?大文字にしないだけで?
> なんだかわかりませんが自分で考えてみる事にします
必要に決まってるだろ。あんたの場合、自分の疑問を自分で理解できていない。
835デフォルトの名無しさん:03/05/09 00:15
つまりだな、何を知りたいのか自分で解ってないわけよ。
整理してから質問しろや
?疑問にスキルと説得力が必要?大文字にしないだけで?
これがわかってないんじゃ手のつけようがないな。
Stringはいわゆるバリューオブジェクトで、データ型として扱えるタイプのオブジェクト。
内容比較が出来て、プリミティブ型のように、値を代入出来るオブジェクト。
equals(内容の比較)は、javaではデフォルトでバリューオブジェクトのみに実装されている(はず)。
StringBufferはあくまで操作用のオブジェクトで、代入はサポートされてない。
838デフォルトの名無しさん:03/05/09 00:21
>>837
はい、勉強しなおしておいで。
>>837
混乱を招く才能ありだな
>>837
ミュータブル、イミュータブルオブジェクトの違いと使い分けに言及して
欲しいところだな。
841830:03/05/09 00:26
えーと整理してみました
Stringクラスはequals()メソッドを「2つの文字列の内容が等しい」
かどうかを判断するようにオーバーライドしてるわけですが、
StringBufferクラスはなぜそのようにオーバーライドしていないのかと

StringBuffer sb1 = new StringBuffer("hoge");
StringBuffer sb2 = new StringBuffer("hoge");
sb1とsb2が同じと判断されない

こんなカンジですか
これでわからないなら無視してください
>>837
アナタ、完全独学の孤高の人ですね。
843デフォルトの名無しさん:03/05/09 00:27
上流工程の仕事してる香具師って>837のような
「間違ってるけど妙にその気にさせられる。(騙される)」こと言うよね。
844デフォルトの名無しさん:03/05/09 00:30
まあ、独学だろうな。使ってる単語と言い、言い回しといい、入門書レベル。

>>841
Stringは内部の文字列が変更不可能なので、equals()の結果は常に一定。
StringBufferは内部の文字列が常に変更可能であり、また積極的に変更
することを前提に作られているので、あるタイミングで中身が同じかど
うかを調べることに意味があるべきでないのですよ。比較がしたいなら
String使えと。

きちんとString(文字列定数)とStringBuffer(Stringを生成する為の短
時間のバッファというイメージで使って欲しい)を使い分けなさい、とい
うお話ですな。
>>837
大漁だな
847830:03/05/09 00:34
>>845
ありがとうございます。
スッキリしました。突っ込んでくれた皆さんもありがとう。
勉強になりました
>>845は縦読みを疑ったほど改行が変
>>848
auto-fill-modeで書いてるんだろ
850デフォルトの名無しさん:03/05/09 01:19
大学の授業の課題なんですが、
そのまま例文をコピペで写したのですが
最初の宣言の

package sp.scoread.command_add_avg_find_del;
import common.Input;

の部分で、パッケージcommonは存在しませんと言われるのですが
原因として何が考えられますか?
多分全文載せる必要ないだろうと思ってこれしかとりあえず書きませんが、
もし書く必要があったらいってください。150行位ありますが。。
851デフォルトの名無しさん:03/05/09 01:20
>>850
そのまんま。
852デフォルトの名無しさん:03/05/09 01:21
理解せずにコピペで済むほどJavaは甘くない
853850:03/05/09 01:24
>>851
いや、できれば解決策を教えてほしいのですが。。
>>853
クラスパスに入っていない

はい次
ここ読め。1にリンクあるぞ。
http://www.gimlay.org/~javafaq/S017.html
856850:03/05/09 01:27
>>854
JDKとは別途でなんか入れなければいけないということですか?
これできないと先に進めないんでしつこくてすいません。。
>>856
これくらいわからないと先に進んでも意味がないんでしつこくてすいません。。
そもそもいきなり"common"なんつーキーワードで始まるパッケージは
どんなもんだか考えようよ・・・。
男は黙ってデフォルトパッケージ。
>>859
小学生にスマタ教えるような事すな。
861850:03/05/09 01:36
最後にします。ほんとにすいません。
つまり、プロンプトでjavaは認識されるようにクラスパスは通したのですが、
それとは別にパッケージのクラスパスを通す必要があるってことですか?
それとも、きちっとjavaのクラスパスを通してないってことですか?
つまり教授からcommonnパッケージをもらえと
あるいはcommonパッケージを作る。
864デフォルトの名無しさん:03/05/09 01:44
>command_add_avg_find_del
おまえんとこの教授はキチガイか?
または教授の後門を嗅ぐ
866デフォルトの名無しさん:03/05/09 01:46
命令追加し、平均探してぬっころせ。か。
Inputっつークラスが何してんのか知らんが
コンパイルだけでも今すぐ通したければ、とりあえずスタブのcommon.Input作って
明日教授によこせゴルァ!!しる。
common てのは com.mon の間違いだと思われ。

http://www.mon.com/ に逝って共通入出力ライブラリを落としてくれば
問題ないのでは?
869850:03/05/09 01:52
最後って言った手前書きづらいんですが、
一応URLです。
http://www.crew.sfc.keio.ac.jp/lecture/2003objprog/note/04/index.html
でも、パッケージ落とせとかどこにも書いてないんですよね。。
一応Cはやってたんで、文法しらなくても内容とかくらいはほぼわかるんですが、
しょっぱなからつまづいてしまって。。
870850:03/05/09 01:59
すいません、おおぼけかましてました。できました。
どう考えても、

入 力 拾 う プ ロ グ ラ ム ぐ ら い 

て め ぇ で 書 き や が れ

ゲッツ
872デフォルトの名無しさん:03/05/09 02:02
>>869
ちょっと気になった
>100人の成績を管理するということになれば、 プログラムを書くよりも手計算のほうが早いぐらいの作業量になるでしょう。

変数羅列より配列を使え。って意であることは容易に解るが、
プログラムを一回しか使わないかのように表現してあるのは問題あり。
システム化を解っちゃいないね。筆者。机上経験のみだね。
>>872
そうだな。
「プログラムを書くよりもエクセルにぶっこんだ方が早いでしょう」にすべきだな
つーか、こんな程度でつまづくようなレベルの香具師が数年後に
KO卒でーすって入って来るのかよ...鬱。
結論:
大人数の成績を管理するにはエクセルにデータ入力し、
エクセルの計算機能を利用してデータを算出する。
必要とあらばマクロを作成する。
>必要とあらばマクロを作成する。
なんかワラタ(w
877デフォルトの名無しさん:03/05/09 02:17
>>875
それをCOMブリッジ経由でJavaから読み書きする。ってのがこのスレの趣旨に合う
>>877
そこまでやればなんかある意味合格点をもらえそうだ
>>877
やぶ遅くすみません。COMブリッジの話題が出たので、
最近、脇毛が長いと感じるのが悩みの種である私に1つ質問させてください。

COMブリッジで一般的な物は何ですか?どれが熱いですか?
その前に、COMブリッジの用途があまり思いつかないのですが・・・・

>>879
ExcelをCOMで起動してExcelファイルをJavaで読むってのが
一番多いんじゃないの。他に使い道あるかねえ?
>>877
JDBC-ODBC ブリッジドライバでも良いかも
>>877
スレの趣旨的には、JakartaのPOIのほうが…
さらに、学内の成績管理システムにこっそりORBサーバを同居させ、こっそりCORBAのIFを実装し、RMI-IIOPでデータを流し込む。
同様に成績データを取得し、エクセルで表示。
884デフォルトの名無しさん:03/05/09 02:37
>>880
エクセルデータをわざわざJavaで読み込むメリットつーか、そこまでJava?
って俺は思うが。仕事でJava-Excelって言ったらCVSがいいとこでしょ?
885884:03/05/09 02:37
間違い。CSVだつた。
>>884
JakartaのPOIとか、JExcelAPIとか、便利だよ。
Excelを使って入力インターフェイスの自作を手抜きしたり、
Excelを帳票出力として使ったり。Servlet上で、MS-Excelが
ない環境でそれが出来るって、スゴイ便利だと思うけど。

ExcelシートをServletで生成して、IEに配信して、IE側で
Excelをプラグイン起動してもらって、Excel上に受信した
ファイルを表示とか。ボタン押せばExcelのレイアウタ使って
印刷できる。
IEからfileUploadでExcelファイルを送ってもらって、Servlet
でソレを解析してDBに放り込める。

COMブリッジは、結局COMを動かせるプラットフォームが必要
だから、こういう用途ではいまいちだね。みんな、WindowsNT
Serverなんか使いたくないでしょ?
887デフォルトの名無しさん:03/05/09 02:55
>>886
>Excelを使って入力インターフェイスの自作を手抜きしたり
Excel→Servletって解釈で間違ってないでつか?便利そう。
COMブリッジって、HTTP通信できるの??なんか理解できなくなってきた・・・・。
ブラウザじゃなくてExcelをクライアントにすることも可能なわけ?
888デフォルトの名無しさん:03/05/09 02:57
>COMブリッジは、結局COMを動かせるプラットフォームが必要
エクセル入ってればいいってものじゃないんだ?
Win2kでJCOMのサンプル動かせた覚えがあるのだが。
>>887
いや、これはCOMブリッジを使わない方法の話。
>>886の例は、PureJavaでExcelファイルを解析、生成してしまう荒技を使え
るライブラリを、Servletで使うという話ですよ。

IEは、レスポンスのContentTypeがApplication/Excel(だったかな?)
だった場合、IEのView上にExcelを起動して、そこにレスポンスを貼り付
けてくれるのですよ。だから、Servletで単にExcelファイルを作ってレス
ポンスに流し込めばいいだけ。

COMブリッジは、Windows上でしか使えないという足枷があるので、サーバー
サイドでこういう使い方をするのは向いてない。サーバは大抵Unixとかだし。
>>888
Winなら普通動くでしょ。問題は、普通Windowsのサーバーなんて
使わないということ。
891デフォルトの名無しさん:03/05/09 03:12
>>889
MIMEタイプでサーバ→クライアントにはExcel流せるけど、
漏れが気になったのは、Excel→COM→Servlet。リクエストできるのかどうか。
VBで言うIEコンポーネントか何か忘れたけど、VBAで突っ込んだらできるとかいう噂はないのかな。

892bloom:03/05/09 03:13
>>891
普通に
ファイルをServletに渡す→Servletで解析。
でいいじゃん。CSVとかでもそうしてるんでしょ、あんた。
894デフォルトの名無しさん:03/05/09 03:15
エクセルをクライアントにしたら制限かけるのが厳しそう。
客には出せないけど、ツールとしてどこまで有用に使えるかなと思ったわけ。
エクセル内1クリックでエクセルからのXMLデータをサーバに送れば何かできそうな予感。
>>894
さっきから喪前はナニ言ってんの?





















                                     その案、俺が頂く。まじで商売できそうだ。
>>894
入力の形式を制限したいなら、そんな面倒なことを考えるより、
GUI普通に書くほうが楽でしょ。
897デフォルトの名無しさん:03/05/09 03:23
Excel文書であることに意義があるわけだろ?
どーせ世の中、企業で使われるOSと文書フォーマットの9割は
Excel(&Word)なわけだし。
898デフォルトの名無しさん:03/05/09 03:38
>>896
GUI書いたら配布がめんどうなのです。
配布することは既に時代遅れであり、その後ブラウザが主流ってことで
Servlet等がもてはやされているのかと、半分推測。
次はExcelです。Excelもブラウザと同様、殆どのクライアントに入ってる状況ですし。
制限は入力規制+VBA制御。エクセルをある程度使える層がエンドユーザ。
VBAは配布するのではなく組み込みでレスポンス。
899898:03/05/09 03:42
っていうか、HTTPである必要性もないと思われます。
ついに来ました。WebStartを使う時が。クライアントに強制インスコした後は、
RMIでぬっころす。
>>899
WebStartは便利ですが、FW越えの問題があるのでRMIはイカガナモノカト。
RMIでFW越えするときは、どうせhttp使っているので、RMIのメリットないよ。
>>900
RMI使うことのメリットはHTTP使わないことではないだろ。
漏れは>898のように奇抜なアイディア言う香具師は貴重だと思っているが。
>>869のやつはなんでforじゃなくてwhileなんだ
キモイ、キモ過ぎ。大嫌いです。
質問させてください。
String workに0から10、AからZ、aからzをループで値をとって、
最終的に出力結果が
work = [01234...abcd...ABCD...Z]
となるようにしたいんですが、どういう方法がいいでしょうか?
やはり配列を使ったやり方がいいんでしょうか??
>>903
いまいち意味が分かるような分からんような
つまり
String work;
//何か素敵な処理
System.out.println(work);

の結果が 012345678910abcd... になればいいのか?"[ ]"は要るの?
ついでに
>0から10、AからZ、aからzをループで値をとって、
>work = [01234...abcd...ABCD...Z]
ここの順番が矛盾してるよ。
言葉足らずですみません…。

>String work;
>//何か素敵な処理
>System.out.println(work);
>の結果が 012345678910abcd... になればいいのか?"[ ]"は要るの?

はい、そうです。
"[]"もいります。

>work = [01234...abcd...ABCD...Z]
>ここの順番が矛盾してるよ。

間違えてました。表示結果は、
work = [01234...ABCD...abcd...z]
です。
906822:03/05/09 10:46
>>826
まさにそのとおりです。
ありがとうございました、助かりました^^
>>905 こんなんでどう?細かい部分はてきとーに直して

StringBuffer buf = new StringBuffer();
buf.append('[');
for(char c = '0' ; c <= '9' ; c++)
    buf.append(c);
/*
 *後は↑と似たような処理につき省略
 */
buf.append(']');
String work = new String(buf);
System.out.println(work);

もし授業で習ってるとかでStringしか使っちゃ駄目なら
buf.append(c)とかの代わりに work += c; とかでもいいけど
908デフォルトの名無しさん:03/05/09 11:18
909905:03/05/09 11:26
>>907
ありがとうございます。無事解決できました。

ちなみに配列を使ったやりかただとどんな感じになるでしょうか?
910デフォルトの名無しさん:03/05/09 12:14
かなり基本的なことだと思うんですが質問させてください。
いま、独学中でちょっとしたプログラムを書き終えてバグ取りしてるんですが、
int型の変数の入力を求めたときに、String型の入力をされると
型不正で終わってしまうのですが、数値しか入力できなくすることはできるでしょうか?
>910
どんなプログラムかわからないけど
変数に設定するまえに数値がどうかチェックすれば?
912デフォルトの名無しさん:03/05/09 13:08
packageにしたら同じ階層にあるClassファイルを認識できなくなったんですが
どうしてなんでしょ?
classからclassを呼ぶ処理をしていますが
コンパイル時に認識できないエラーがでます。
>>912
classpathの設定が間違っている
914910:03/05/09 13:27
>>911
その方法も考えたんですが、今いろいろ調べてtry,catchをつかってエラー処理を
入れるのに取り組んでいるのですが、きちんと数値を入力されるまでwhileで
ループするようにしたら、取り込もうとしている変数が初期化されていないと言われてしまいますが
なぜでしょうか?わかりますか?
915912:03/05/09 13:29
>>913
CLASSPATHには同じ階層.;は含めているんですが
他に何か必要なんでしょうか?
又、Packageにしないと同じ場所でも正常にコンパイルできます。
classpathはトップレベルパッケージがあるディレクトリに設定する。
srcというディレクトリにソースがあるとして
aaa.bbb.ccc というパッケージだったら
ディレクトリ構成は \src\aaa\bbb\ccc となっているはず。

この場合classpathはsrcディレクトリに通す。
912はcccに通してるでしょ?
917デフォルトの名無しさん:03/05/09 13:53
>>916
ごめんなさい。

カレントディレクトリだけでいけるのかと思ってたので
そこは通していませんでした。
今、javac -classpath .. hoge.java
とやったらいけましたので多分それが原因だと思います。

ありがとうございました。
>>914
try catch部分を別メソッドにして中でループさせるとか。
数値取得に成功したら値を返す。
919デフォルトの名無しさん:03/05/09 14:35
>>829
Class.forName("ほげ")
で試したのですが反応がありません、ただの屍のようです。
JSPの画面もエラーはいっさいですに表示されます。
これだけで本来はClassのメインメソッドが実行されるのでしょうか?

又、Beansとして試したんですが
(outパッケージ、Print.classのPrintメソッド実行)
org.apache.jasper.JasperException: out.Print.Print()V

なエラーが表示されて困っています。
後ろのVっていったい・・(;;)
920ガコーウでもNIKIさん ◆v4/cherryA :03/05/09 15:34
おいポマイラ
Image value_img[]=new Image[13];
value_img[1] = getImage(getDocumentBase(),"1.jpg");
value_img[2] = getImage(getDocumentBase(),"2.jpg");
(以下略)

とかするのあまりにたるすぎるんですがこれってforでまわせねーの?
組み込み分を
value_img[counter] = getImage(getDocumentBase(),"counter.jpg")
とかしちゃうと延々とcounter.jpgを読み込みそうな悪寒がするんですが
>>920
はぁ?
counter + ".jpg"
while(counter<hogehoge){
value_img[counter] = getImage(getDocumentBase(),toString(counter)+".jpg");
hogehoge++;
}
923デフォルトの名無しさん:03/05/09 16:57
瞬間回答モトム!

String変数に格納されている文字列に、
全角文字が含まれているかを判定したいです。
私にはその方法が皆目見当もつきません。

どうでしょ??
>>923
char c = 'あ';
if(c > 255) System.out.println("全角文字っぽいような気がする");
else System.out.println("たぶん全角じゃないぽ");
>>923
String.getBytes().length と String.length() で長さが違ったら
含まれている、同じだったら含まれていない、じゃだめ?
926デフォルトの名無しさん:03/05/09 17:25
>>924-925

どうもありがとうございました。
助かりました。

>>294さんへ質問です「っぽい」&「たぶん」と記述しているので、
確実に判定は出来ないのでしょうか??
それとも、「っぽい」&「たぶん」は、ちょっとしたお茶目ですか?
(・∀・)つ
927デフォルトの名無しさん:03/05/09 18:45
JSPやサーブレットから印刷プログラム(class)を動かしたいのですが
本体がSYSTEMで動作させていた場合、指定したプログラムもSYSTEMに
なってしまい印刷が行えません。
どうしたらいいのか教えてください。Web板の方がいいのかな?
>>926
>>924-925 の方法で完全にってのは無理でしょ。

>>924 では255以上でも半角カタカナやら ISO8859X のアルファベットやらもあるし。
>>925 でもSJISでは半角カタカナは1バイトだし。

完全にやりたければ 日本語用全角/半角テーブル使って判定するとかしないとだめ。
おまけに同じコードの文字でも全角/半角は日中韓で違うらしいし。
>>927
・SYSTEM権限で動いているからって印刷できないわけがない。
・Class.forName("ほげ")だけじゃあクラスのオブジェクトを
 取得してるだけなので動くわけがない。

っつうか、普通にclasspath通してpackageインポートして
Print print = new Print();
print.Print();
とかで呼び出せないの?
>>927 たぶん919と同一人物なんだろうけどさ、どう目的の
クラスを動かしたら印刷できなかったかとか、Beanとして
どう動かしたら駄目だったかとか、その印刷プログラムは
GUIでユーザからの入力が必要なのかとか、答えるのに必要
な情報全然かいてないよ。頑張れとしかいいようがない。
正直、リフレクションを使うべきかどうかもわからん。
>>927
その印刷プログラムとやらをさらしたほうが早いんじゃないかと
おもったりして。どうせどっかのWebサイトから拾ってきたんだろ?
932デフォルトの名無しさん:03/05/09 20:15
JSparrowというものをインストールして使おうと思ってるんですが、
ここ見るとDLLの移動とCLASSPATHの設定だけで出来そうなんですが、
なぜかサンプルも実行できないんです。
誰か助言お願いいたします。

「CLASSPATHの設定」
set CLASSPATH=C:\j2sdk1.4.1_02\jre\lib\ext\jsparrow.zip;.
「JSparrow」
http://home.att.ne.jp/red/aruga/jsparrow/installation-j.html
933_:03/05/09 20:19
>>932 見てみた。環境変数CLASSPATHを設定すると、デフォルトのクラスパス
である「.(つまりカレントディレクトリ)」が上書きされる。だから、
932の設定だけだとカレントディレクトリが含まれなくなるので
java TeapotCanvasでは実行できなくなる。説明でも「追加」
とわざわざかいてあるやね。あと、JAVA_HOME\jre\lib\extは
拡張クラスパスといって、環境変数CLASSPATHや-cpオプションで
指定するユーザクラスパスの内容にかかわらず検索されるから
自分で設定する必要は無いよ。このあたり詳しくは、
http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/win32/classpath.html
を参照のこと。
935934:03/05/09 20:29
ごめん、932のCLASSPATHの最後に.がついてた... 忘れてくれ。
Graphics#drawHoge(piyo)などで書かれた
文字や画像を消すにはどうしたらいいでしょうか?
オブジェクトは文字や画像を消去後も他の物を表示するために
廃棄は出来ないんですが、こういう場合どういった処理をすればいいですか?
>>909
エレガントなやり方思い浮かばないからパス
配列使うと、無理やり使うような変な解答しか思い浮かばん
>>936
背景色で塗りつぶしたら?
JFrameで背景に画像を表示するようにするにはどうしたらいいんでしょうか?
あと、宇宙みたいなバックにしたいのですが、サイズの小さな画像をいくつも並べて
全体に表示できるようにする方法はありますか?
>>928
>SJISでは半角カタカナは1バイトだし。
全角文字が含まれているかどうかだからいいんじゃないの?
日本語が含まれているかどうかじゃないでしょ?
>JFrameで背景に画像を表示するようにするにはどうしたらいいんでしょうか?
setOpaque()で、透明なJPanelとか作れるから、それ使いなされ。
バックにバック用の画像を張ったJPanelを張って、それに透明なフォア用の
JPanelを張ればよし。

>あと、宇宙みたいなバックにしたいのですが、サイズの小さな画像をいくつも並べて
全体に表示できるようにする方法はありますか?
JAVA2Dのjava.awt.TexturePaint使えばヨロシ。

942932:03/05/10 08:36
>>934-935
いえ変な質問ですいませんでした。一応エラーみたいのは
JSparrow ver. 0.944 beta for evaluation or trial only
All Rights Reserved. Copyright(C) PFU LIMITED 1999-2000

java.lang.ExceptionInInitializerError
at jsparrow.gl.OGLCanvas.<init>(OGLCanvas.java:80)
at TeapotCanvas.<init>(TeapotCanvas.java:9)
at Teapot.init(Teapot.java:9)
at sun.applet.AppletPanel.run(AppletPanel.java:348)
at java.lang.Thread.run(Thread.java:536)
     Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission loadLibrary.jsparrow)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:270)
at java.security.AccessController.checkPermission(AccessController.java:401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
at java.lang.SecurityManager.checkLink(SecurityManager.java:834)
at java.lang.Runtime.loadLibrary0(Runtime.java:782)
at java.lang.System.loadLibrary(System.java:832)
at jsparrow.gl.OGL.<clinit>(OGL.java:179)
... 5 more
こんな感じでずらずらと…もう少し粘ってみます。
初心者なんですがJDK1.3ってのが、Iアプリ作りに必要らしいんですがそれが

http://java.sun.com/j2se/1.3/ja/download.html  にあるらしいんですが、JDK1.3って略称なんですか?

 いったいどれがJDK1.3なのか教えて下さい。お願いします
略称っつーか今となっては俗称みたいな感じか。
J2SEに読み替えてクレ。
それに今から始めるならJ2SE 1.3だろ
意味不明になってしまった
×それに今から始めるならJ2SE 1.3だろ
○それに今から始めるならJ2SE 1.4だろ
いや、どうせiアプリはJ2SEの新機能には対応してないだろうし。
948デフォルトの名無しさん:03/05/10 18:26
考えればわかるようなことを質問する香具師って業界去ればいい。
949927:03/05/10 19:11
初心者全開ですいません。
>>929
print.Print();でやったところ
ページを読み込んでる状態で反応がありません。
ステータスバーの青のバーが徐々に長くなっていってるだけです。
>>930
Beansは <jsp:useBean id="test" scope="page" class="out.Print" />
     test.Print();
としましたが>>919に書いたようなエラーが出ます。
ただし、TomcatをSYSTEMじゃなく自分で動かしていると正常に動作します。
入力が必要といいますか印刷時にプリンタのダイアログをだしたいんです。
>>931
ソースです。http://www.gihyo.co.jp/book/2002/225271/download/choko10.lzh
Print.classで起動します。
それとPrintクラスのmainメソッドをPrintと変えてやってます。
JSPから呼ぶのにMainメソッドではだめなのかなと思いまして(;;)

一応 Class cls = Class.forName("Print");
   Method method = cls.getMethod("Print",null);
   Object ret = method.invoke(cls.newInstance(),null);
ともやってみたのですがこっちは
org.apache.jasper.JasperException: Print.Print() とエラーがでます。

とりあえずJSPからソースプログラムが正しく動かせればいいので
よろしくお願いします。





>>949
そのリンク先、なんで俺のHDDにすでにファイルがあるのかと
おもったら、653なのか。927もそうなんだけど、一連の質問を
いちいちリセットしながらたずねるのは効率悪いなと思ったり。
951927:03/05/10 20:38
>>950
せこくてすいません。
質問内容が全く違ったりまとめてすると(自分および皆さんが)
ややこしくてわかりにくいかなーって思ったもので。
俺って邪魔ですか?
>>949 そのmainメソッド、一番最後でSystem.exit(0);してる。
ああいう雑誌のサンプルプログラムはあくまでも機能の使い方を学ぶ
ものなんだから、そしゃくしてちゃんと自分でコード起こさないと駄目だよ。
オレジャヴァ暦1ヶ月なんだけど、今からブロック崩し作ろうと思うんだ。
そいでまずはブロックとボール動かすとこまでは来たわけ。
次はさ、マシーンみたいのをキーボードで操って
そっからボールが出てくるみたくしたいんだけど
キーボードからの入力がぜんぜんわからんくてさ
教えてください。
954デフォルトの名無しさん:03/05/10 21:07
>>953
Cで実装して、JNIで拾え
>>953
KeyEvent とか KeyListener とか。
えーと、Canvsクラスを継承してpaintをオーバライドしますよ?
paintってどこでも呼び出せてないのに、どうしてちゃんとイメージが描写されるんでつか?
>>956
awtたんとかswingたんが呼んでまつ。
>>956
ウィンドウ(Frame)の再描画イベントで呼び出されます。
>>956
ん?どゆことでつか?
awtが呼ぶようになってるのはどうしてでつか?
Canvasを継承したらそういうふうになるの?
ごめんなさい。見つけますた。
paint()メソッドは Canvasが Componentから継承したメソッドです。
すべての JDKのコンポーネントは、再描画が必要になった時(
それを知らせるイベントが伝達された時)、
この paint()メソッドが自動的に呼び出される仕組みになっています。つまり描画処理のメソッド名はあらかじめ定められているわけです。また描画に必要となる Graphicsのオブジェクトは、 paint()の引数として与えられます。
原則として描画の処理はすべて
paint()のような描画専用のメソッド
(もしくはそこから間接的に呼び出される下請けのメソッド)
の内部にまとめて記述します。そうしておかないと、
再描画の処理が完全に実行できないからです。
>>956 java.awt.GraphicsCallback
ソースうpするとこないの?
964デフォルトの名無しさん:03/05/10 23:08
java のコンパイラがソースをどの程度最適化してくれるのか
知りたいのですが, どこで勉強できるのでしょうか?

最適なコードを見やすく書きたいのでよろしくお願い致します.
>>964
結構改善の動きが早いから昔の情報は役に立たないし、
http://www.gimlay.org/~andoh/hatena/JavaPerformanceTuning/
から関係ありそうな話題をピックアップしてくとかかなあ。
もちろん自分でバイトコードとかベンチマークを調べるのは当然として。
966964:03/05/10 23:32
>>965 さん 感謝.

なるほど, 見てみます.

964 質問の追記.
# 私が知りたいことを簡単に書きますと,
2 つの連続したSystem.out.print() が
バイトコードに変換された際には1 つに結合される
と言ったことなんですけど.
>>964
まずはここからJDKのソースを入手する。
http://wwws.sun.com/software/java2/download.html

で、展開されたソースの hotspot/src/share/vm 以下とか
hotspot/src/cpu/i486/vm 以下を読んでみると良いんでない?
968967:03/05/10 23:49
って、Hotspot VMの最適化について知りたいわけじゃなかったのね。
忘れてちょ。
969デフォルトの名無しさん:03/05/10 23:52
超初心者の質問イイっすか?
インターフェイスってなんの為にあるんですか?
インターフェイスの宣言で、メソッドの中身って書かないじゃないですか。
じゃあ、なんで実装する必要があるの??
継承はメソッドの中身等も全て引き継ぐから分かるんですけど。
アホな質問スマソ。
>>969
オレも初心者だが、Javaでは多重継承(二つ以上継承すること)ができないため
インタフェイスがあると思われ。インタフェイスなら複数実装可能だから、
ほとんどすべてのクラスに共通するような変数とかまとめてインタにしておいて
全部で実装とかだと思ってるんだけど

合ってまつか?(((((( ;゚Д゚)))))ガクガクブルブル
クラスを使う人が便利になる。
972953:03/05/10 23:57
>>963
ごめん。ソースまるごとうpできるやつないでつか?
http://www.h5.dion.ne.jp/~tuyano/JavaTutor/JavaTutorZ3.html
↑ここに書いてあるとおりにjarファイルを作ってみたんですが、
ダブルクリックしても
Could not find the main class. Program will exit!
とか出て実行できないんです。
ちゃんとMain-Class: P1って指定してるのに。
なぜだかわかる人いませんか?
コマンドプロンプトでなら実行できるんですが、めんどいんです。
>>969
そのインターフェース実装してるクラスは、必ずそのインターフェースで定義されてるメソッドを実装している。
つまり窓口があらかじめ決められてるのと同じなので、他の人から見ても扱いやすくなる。
975969:03/05/11 00:08
なるほど。じゃあ更に質問イイっすか?
スレッドではRunnable、アクションイベントではActionListenerといった様に
実装させないといけないのは何故ですか?
「クラスを使う人が便利になる・扱いやすくなる」
っていうだけだったら、別に必要ないような気もするんですけど・・。
あぁ、なかなか理解できない・・。
976953:03/05/11 00:10
>>975
ん?実装すればいいだけだから便利だろ?
スレッドの時はRunnnable使えばいいってそれだけ覚えておけば
自分のやりたいことが出来るしょ?
たとえばスレッド処理をしたい場合に
別に Runnable を実装しなくても run() メソッドを書けばいいのでは?
と思っているのかもしれない。
言語によっては実際にこういうことも可能である。

しかし Java では人間が run() メソッドを書き忘れるという可能性をなくすために
スレッド処理では Runnable を実装して run() メソッドがあることを保証する
というアプローチになっている。
>>975
適切な Interface を実装しているかどうかコンパイル時にチェックできる。
979969:03/05/11 00:28
う〜ん、結局何の利点があるのかは微妙に分からないです・・。
よく参考書等に、「javaは多重継承を認めていないが、インターフェイスの
実装により、多重継承を可能にしている」みたいな文が書かれているが、
中身を引き継いでいないなら意味ないジャン!って思ってしまいます。
こんな超初心者に色々答えてくれてアリガトウございました。
>>979
気持ちはよくわかる。漏れも勉強したての頃は必要性がよくわからなかった。
>>979
要するに、「このインターフェースを継承してるクラスは、確実にこういうメソッドを実装していることを保証しますよ」ということだ。
982デフォルトの名無しさん:03/05/11 00:45
interfaceはデザインパターンでも有効に使われてるし、ものは使いよう。
個人的には、C++とOMTなんて時代の人間なので多重継承できなくて
モデリングで悩む事がしばしばあるが。
983名無しさん@monalipse:03/05/11 00:46
>>979
中身を引き継がなくてもいい場合というのがある。例えば件のActionListenerなんてそう。
ActionListener.actionPerformed()にデフォルトの実装があったって誰も使わないでしょ。
だから、
>中身を引き継いでいないなら意味ないジャン!
ってことは無い。
インタフェースは役割を果たせるとか能力があるといったこと(英語が話せる)ことを示すもので、
実装を引き継ぐこと(アメリカ人である、とか、帰国子女である)とは区別します。
985デフォルトの名無しさん:03/05/11 00:56
インターフェースは多重継承の代わりではない。
チーム開発の場合、インターフェースの威力は凄まじい。
変更に強いコードも作り易い。
インターフェースに対してプログラミングしろ!
986デフォルトの名無しさん:03/05/11 00:59
インターフェースの理解を深めたかったら、java.sqlパッケージを見てみろ。
987デフォルトの名無しさん:03/05/11 01:01
test.javaファイル

public class test{
public static void main (String args[]){
Chart c = new Chart();
}
}

Chart.javaファイル

public class Chart{
public void Chart(){
System.out.println( "called" );
}
}

簡略化するとこんな感じのクラスを作りました。
しかし、コンストラクタが呼ばれていないようでなにも表示されません。
仕方がないので、コンストラクタは空っぽにして、メソッドで実行しています。
これはどこがマズいのでしょうか、ご指摘をお願いします。
988続きです:03/05/11 01:01

また、コンストラクタをChart(String name)として、
文字列を引数に取るコンストラクタにして、
インスタンス化のときも、Chart c = new Chart( "aaaa" );
のような感じにするとシンボルが解決できませんと
コンパイルエラーになってしまいます。
これについても、ご指摘をお願いします。

環境は
java version "1.4.1_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_01-39)
Java HotSpot(TM) Client VM (build 1.4.1_01-14, mixed mode)
となっています。

FAQのコンストラクタ編とか、過去ログを「コンストラクタ」で検索はしました。
public void Chart(){}
そもそもこれがコンストラクタだと思っているのかと小一時間
>988
1000直前で質問ってのはかなりきわどいぞ。
あ、あとエラーメッセージはちゃんとこぴぺしてね。
といいつつ、おれ、スレ立てられないから誰かよろしく。
じゃ、おやすみ。
991デフォルトの名無しさん:03/05/11 01:14
>>989
ワロタ
992デフォルトの名無しさん:03/05/11 01:17
>>988
つまり、おまえさんのコードは、
常にデフォルトコンストラクタを呼び出す作りってことよ。
993名無しさん@monalipse:03/05/11 01:19
>>987
SJC-Pの問題に出てきそうなネタだ。
くくしゲーーーット!!
Java厨は氏ねよ
JavaはC#のパクリ
import microsoft.csharp.specification.*;
import sun.java.license.*;
Javaは死滅
C#はJavaのパクリ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。