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

このエントリーをはてなブックマークに追加
728デフォルトの名無しさん
複数のbinaryFileをある条件で書き換え連結し一つの
binaryfile(matome)を作るプログラムを作っています。
どう組むかの案として以下の2つがあります。
案1 binaryfileを書き換える度に、binaryfile(matome)に書き込む。
案2 書き換えた複数のbinaryfileをbyte配列にまとめておき最終的に
  binaryfile(matome)に書き込むようにする。
この二つを考えているのですが、できればスタンダードな方法を取りたい
のでどの案がいいと思いますか、どっちでもという意見でも
いいので教えてください。
729デフォルトの名無しさん:2006/02/08(水) 11:51:14
>>718
同意。補足を少々。

そもそも、直列化(シリアライズ)は、インスタンスの保存や読み込み、
プロセス間通信による受け渡しに利用するためであり、
JDK1.4以降は java.beans.XMLEncoder や java.beans.XMLDecode を用いることを推奨していると思う。

個人的には Serializable を実装したクラスを継承した場合であっても、
直列化を行わないのであれば、気にしなくて良いと思う。

# とまぁ、直列化を2,3回しか使っていない人の戯言でした。
730デフォルトの名無しさん:2006/02/08(水) 11:53:20
>>729
見直したはずなのに…
XMLDecoder です。
        ^
731デフォルトの名無しさん:2006/02/08(水) 12:06:54
>>728
俺だったらByteArrayOutputStream使って、
最後にwrite(ByteArrayOutputStream.html#toByteArray())
とかする。
732デフォルトの名無しさん:2006/02/08(水) 12:11:55
もっと選択する言葉に注意を払うべきだと思うのです。
思考垂れ流しで、一文が長くなってしまうと、何が言いたいのか分からないのです。
Java は初心者であっても、日本語は10年か20年ぐらい扱ってきたと思うのですよ。
733デフォルトの名無しさん:2006/02/08(水) 12:54:55
>>712

それイベントと関係ないやん・・・
734デフォルトの名無しさん:2006/02/08(水) 13:01:11
>>723
現行の5.0update6では印刷にバグがあります
印刷できないではなく、印刷品質が大きく異なるというものです

次のupdate7で更新されるようです

現行回避方法としては旧バージョンの1.4.2で使うか
iTextなどpdf作成ツールを使ってAdobeReaderで印刷させるかの方法しかないようです

SWTでの印刷はもっと問題が多いのでオススメできません
735デフォルトの名無しさん:2006/02/08(水) 13:20:32
>>734
件のバグは Windows でしか確認されて無いって部分が抜けてる。
環境によっては問題にならん可能性もあるし。

ある意味ベータテストとかに積極的に参加してこなかったツケとも言える。
736デフォルトの名無しさん:2006/02/08(水) 13:24:50
一般開発者は普通参加しないだろ
737デフォルトの名無しさん:2006/02/08(水) 13:30:31
Javaコード部分でのバグだから
他の環境でも同じ可能性は多いな

そもそもクライアントアプリなのでWindows環境がまずデフォだからねぇ
738デフォルトの名無しさん:2006/02/08(水) 13:35:39
一概に Windows って言われてもようわからん
どのバージョンのWindowsでSPとか、依存するDLLのバージョンとかないとなぁ
739デフォルトの名無しさん:2006/02/08(水) 13:37:32
すべてだろ?
依存してるのはJavaのコード部分だし
740デフォルトの名無しさん:2006/02/08(水) 13:41:45
http://pc8.2ch.net/test/read.cgi/tech/1132425910/584

これ見たら他のOSで影響でるようには見えんが。
Javaのコード部分っても windows専用の
ある意味ネイティブコードとの橋渡し的な部分だし。
741デフォルトの名無しさん:2006/02/08(水) 14:03:05
Cause of this bug, in sun.print.PathGraphics#getGlyphToCharMapForFont(Font2D)

876>for (char c=0; c<CharToGlyphMapper.HI_SURROGATE_START; c++) { // <- cause
877> glyph = font2D.charToGlyph(c);
878> if (glyph != missingGlyph && glyph < numGlyphs) {
879>glyphToCharMap[glyph] = c;
880> }
881>}
882>return glyphToCharMap;

ってところだな
Windowsすべてのバージョンで影響があると思うが
742デフォルトの名無しさん:2006/02/08(水) 14:07:54
>>741
どこ見てんだ。原因はsun.awt.windows.WPathGraphicsって書いてあるのに。

あと、>>741 の示した部分だと Windows以外の環境でも影響出る可能性があると思うが。
743デフォルトの名無しさん:2006/02/08(水) 14:11:47
java.sql.Statement
ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/sql/Statement.html
には
・executeQuery
・executeUpdate
の他に
・execute
がありますが、execute メソッドの戻り値を元に処理を分ける
(true の場合は getResultSet から executeQuery の後でするような処理,
false の場合は getUpdateCount から executeUpdate の後でするような処理...など)のと、
例えば実行する SQL を先に解析して、executeQuery と executeUpdate を呼び分ける処理に
するのでは何か違いがあるのでしょうか?

複数の ResultSet や updateCount が返ってくるような SQL を実行する、
と言うのはあまり考えていません(と execute の説明にあるもののよく
分からないのですが、これって DBMS 独自の関数とかでこういうものが
あるかも知れない、ってことなんでしょうか? すぐに思いつく SQL では分かっていません...)
744デフォルトの名無しさん:2006/02/08(水) 14:16:22
>>742
Javaのバグデータベース
745デフォルトの名無しさん:2006/02/08(水) 14:20:09
>>744
Evaluationは見なかった、と。
746デフォルトの名無しさん:2006/02/08(水) 14:47:33
ここで質問するようなことでは無いのかもしれませんが、
プログラムの行番号を表示して、それを行番号ごとコピーしてWord等に貼り付けられるような物はありませんか?
Wordやeclipseで行番号を付けると行番号まで選択できないんです。
プログラムを少量づつ貼り付けて説明文を書きたいんですが。
747デフォルトの名無しさん:2006/02/08(水) 15:00:58
JMFを使って動画をキャプチャして静止画のイメージを取得したいんですが、
FramePositioningControlがうまく取得出来ません。

  processor.prefetch();


while(processor.getState()!=Processor.Prefetched){
System.err.println(".");

}
framePositioningCtrl = (FramePositioningControl)processor.getControl("javax.media.control.FramePositioningControl");
  if (framePositioningCtrl == null) {
throw new RuntimeException("Can not get a FramePositioningControl.");
  }

上のような感じで取得しようとしているのですが何か問題があるでしょうか??
748デフォルトの名無しさん:2006/02/08(水) 15:11:05
>>746
そういうツールを自分で書いてみたら?
慣れてれば30分もかからないし、初心者ならいい練習になると思うよ。
749デフォルトの名無しさん:2006/02/08(水) 15:23:20
>>746
つ Microsoft Excel
750デフォルトの名無しさん:2006/02/08(水) 15:24:37
>>747
デバッグくらい自力で
751747:2006/02/08(水) 15:28:24
>>750
もう2日くらいいろいろ試してみたんですがどうしても出来ないんで;

やり方に問題があるのではなく、単に何か見落としてるだけなのでしょうか?
752デフォルトの名無しさん:2006/02/08(水) 16:08:26
そういえばjava普及委員会のサイト復活しないね
753デフォルトの名無しさん:2006/02/08(水) 16:27:43
JavaHouse なんか死滅したまま放置じゃん。
754デフォルトの名無しさん:2006/02/08(水) 16:33:05
>>753
そういえば。
最後はどうなったの?
755デフォルトの名無しさん:2006/02/08(水) 16:47:21
>>754
昨年 8/25 に大量 bye メールが到着して以来音沙汰なし。その前はじゅんのアナウンスと
5/8 に最後の質問が配信されて終わり。いや終わってるのか生きてるのか知らんけど。
風間さんの話とか結構好きだったんだけどな。99年頃はまだあそこくらいしかまともな
日本語の情報源なかったし。

粘着キティが現れて無印と Brewers 統合したあたりからおかしくなった。というかアプレットの
セキュリティホール見つけて以来 T 氏がアッチ方面へ行ってしまった。
756デフォルトの名無しさん:2006/02/08(水) 17:03:47
>>755
大量byeメールは知らなかった。

参考にしてたんだけど残念。
757デフォルトの名無しさん:2006/02/08(水) 19:21:52
>>747
取得できないというのはどういうこと?
似たようなプログラム書いたことがあるのでレスしてみた

while(processor.getState()!=Processor.Prefetched){
System.err.println(".");
}
//@↑のループを抜けない
framePositioningCtrl = (FramePositioningControl)processor.getControl("javax.media.control.FramePositioningControl");
  if (framePositioningCtrl == null) {
throw new RuntimeException("Can not get a FramePositioningControl.");
  }
//AExceptionで止まる
@Aのどっちが問題?

たぶん目的は指定した時刻に動画再生位置を動かしたいということだと推測してます
自分はFramePositioningCtrlというのを使わず、ClockインタフェースのsetMediaTime(Time now)で再生位置を指定します
PlayerインタフェースはClockを継承しているので
player.setMediaTime(Time now); //Player player
という感じで、再生位置を指定できます

参考になりましたでしょうか…
758デフォルトの名無しさん:2006/02/08(水) 20:17:41
sunのssl関連のドキュメント読んでたんだけど、
javax.net.ssl.SSLEngineの使い道がいまいち分からない。
誰か分かる人がいたら教えてプリーズ。
759デフォルトの名無しさん:2006/02/08(水) 20:24:59
同じフォルダにA.jarとB.jarがあって、
BからAの中のクラスを使用することはできますか?
760デフォルトの名無しさん:2006/02/08(水) 20:40:38
両方にクラスパスが通っていれば出来ます。
761759:2006/02/08(水) 21:01:36
ありがとうございます。クラスパスで検索したらできました。
762747:2006/02/08(水) 21:41:46
>>757
お答えいただきありがとうございます。

抱えているのはAの方の問題です。

JMFのPlayerあるいはProcessorから動画をJava3Dに貼り付けるの方法を調べていたら
どうもFramePositioningContro、FrameGrabbingControl l等を使い、Textureにしてから貼り付けるのが
一般的(唯一?)の方法だと言う結論に至ったため組んだものです。

デバッグしてみるとframePositioningCtrlの値がnullで、その後取得しなければならない
FrameGrabbingControlの値も同じくnullだったため、取得時のPlayerの状態等が原因かと思い質問してみました。

調べている途中で、この方法を使っている他のプログラムをいくつか見たのですが全く同じ方法でも
エラー、例外が出ている様子がないものでしたので。

どこがいけないんでしょう?
763デフォルトの名無しさん:2006/02/08(水) 21:46:31
javaアプリをたくさん起動させていくと途中から起動しなくなるのですが、
起動させる方法はありますか?
764デフォルトの名無しさん:2006/02/08(水) 21:54:35
>>763
OSくらい書かないとね。
765デフォルトの名無しさん:2006/02/08(水) 21:55:56
メモリをたくさん積む
766デフォルトの名無しさん:2006/02/08(水) 22:05:02
763です。windowsXPでメモリ512Mつんでて、メモリ増やせばいいかと思って1Gにしたんですが、
同じくらいの数しか起動できなかったんです。
設定方法とかあれば教えてください。
767デフォルトの名無しさん:2006/02/08(水) 22:47:27
既に valid な XML であることを前提に、String で渡ってきたものから
DOM を構築するにはどうすれば良いのでしょうか。
768デフォルトの名無しさん:2006/02/08(水) 22:53:29
>767
StringReader、InputSource
769デフォルトの名無しさん:2006/02/08(水) 22:58:55
質問させてください。

Java+OracleでBLOBのカラムにテキストファイルや画像ファイル、office関係のファイルを
格納するロジックを作ることになりました。

BLOBに格納する為にはまずファイルを読み込んで、バイナリに変換する必要があると思うのですが、
いまいちよく分かりません。

具体的には
・Fileで読み込んだ後どうやってバイナリに変換するのか。
・変換したバイナリデータをDBにinsertする時は通常のVERCHAR2の様なロジックでよいのか。

という所です。
ヒントや「このページをみろ」というのでも構いません。
ご指導宜しくお願いします。

770デフォルトの名無しさん:2006/02/09(木) 00:22:32
ていうか、ファイルの中味は元からバイナリだろう。
読むだけだよ。変換の必要があるとすればDBに引き渡す時だけ。
771デフォルトの名無しさん:2006/02/09(木) 00:29:09
>>769
>>770のいうとおり、ファイルの中身は(仮に文字だけで構成されてようが)基本的にバイナリ。
InputStream経由で読めばバイト単位で読み込める。Readerで読むと、文字単位で読み込む
便利機能がついているというだけ。もとはやっぱりバイナリ。
772デフォルトの名無しさん:2006/02/09(木) 00:35:00
都内に住む大学1年なんですが、
どうしても秋学期の最終課題が時計+オリジナル機能で
俺はオリジナルのところにカレンダーをつけようと思うんですが
パネルに乗っけるのが、どうしてもうまくいきません。
本当に単純なやつでいいんです。
枠とかも要らないんで参考になるソースコード教えてもらえませんか?
よろしくお願いします!
773デフォルトの名無しさん:2006/02/09(木) 00:37:26
while(true){
  System.out.println(new Date());
  Thread.sleep(1000);
}

※オリジナル機能:タイムゾーンを変えると世界時計になります
774デフォルトの名無しさん:2006/02/09(木) 00:40:08
30分ごとに特定メソッドを呼び出しとかどうやって実現する?
775デフォルトの名無しさん:2006/02/09(木) 00:48:03
>>774
タイマーとちゃう?
間隔に30分なんていれらんねーよ!
というときは、1分/1秒間隔でチェック
776769:2006/02/09(木) 00:48:26
なるほどです。
Fileで読むのとInputStreamで読むのとではどう違うのでしょうか?
777デフォルトの名無しさん:2006/02/09(木) 01:01:36
ヒント:Fileクラスでデータは読めない。
ヒント2:FileInputStreamはInputStreamを継承している。
778デフォルトの名無しさん:2006/02/09(木) 01:15:34
>>775
なにわけわからないこといってるの?
779769:2006/02/09(木) 01:19:33
なんとなく分かってきました。
Fileで読んでlengthでサイズを測って、InputFileStreamをそのFileを引数にnewして
PreparedStatementのsetBinaryStream()でセットするって感じでしょうか。

あれ?BLOBインターフェイスが出てこないのですがいいのでしょうか?
780769:2006/02/09(木) 01:21:54

InputFileStreamではなくてFileInputStreamでした。
781デフォルトの名無しさん:2006/02/09(木) 01:24:17
いいの
782769:2006/02/09(木) 01:33:21
そうなんですか。
とりあえずこれで明日がんばってみます。

ありがとうございました。
783デフォルトの名無しさん:2006/02/09(木) 01:42:15
>>774
for(;;) {
 myMethod();
 Thread.sleep(30*60000);
}
784デフォルトの名無しさん:2006/02/09(木) 01:48:38
>>779
んなまどろっこしいことしないでも読んだのを全部 ByteArrayOutputStream に
書いて最後に byte[] 取り出せばいいじゃんか。

// Bufferedにしてあるのは多くの場合こうした方が効率よくて速くなるため。
BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename));
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buf = new byte[1000]; // 大きさはテキトー
int n;
while ((n = in.read(buf)) > 0) out.write(buf, 0, n);
in.close();
buf = out.toByteArray(); // bufは使い回しだが以前の値は不要なのでこれでもいい。
785デフォルトの名無しさん:2006/02/09(木) 01:55:38
お前もまどろっこしい
PreparedStatement#setBinaryStream() 使え
786デフォルトの名無しさん:2006/02/09(木) 02:07:28
>>785
それSQLの場合だけだ。
元の質問がSQLだからいいか。
787デフォルトの名無しさん:2006/02/09(木) 02:16:56
>>774は検索したのかなぁ
788デフォルトの名無しさん:2006/02/09(木) 02:28:55
java.util.Timer だな。
789デフォルトの名無しさん:2006/02/09(木) 02:32:36
new java.util.Timer().scheduleAtFixedRate(new TimerTask() {public void run() {System.out.println("うひょ");}}, 0L, 30 * 60 * 1000L);
790デフォルトの名無しさん:2006/02/09(木) 09:21:59
>>789
30分後とに「うひょ」だけを出力し続けるプログラムを見たら
俺は発狂するねw
791デフォルトの名無しさん:2006/02/09(木) 09:30:53
せめて時々「うひょひょ」になってほしいねw
792デフォルトの名無しさん:2006/02/09(木) 10:33:01
Java&プログラム暦3ヶ月で23のパターンの本を読み終えたんですが
どうやら巷ではEclipseを使ってるようなのでそろそろメモ帳を
卒業したいんですが、なんかおすすめの本ってありませんか?
高度なことはするつもりはなくて、基本的な使い方が分かればいいんですが。
複数、挙げて頂けると助かります。お願いします。
793デフォルトの名無しさん:2006/02/09(木) 10:35:32
>>762
ここのサンプルは参考になりませんでしょうか?
http://java.sun.com/products/java-media/jmf/2.1.1/solutions/DemoJMFJ3D.html
ビデオ映像をテクスチャとしてはりつけているサンプルのようです

JMFは結構使ったことがあってそれなりにわかるのですが、それにJava3Dが絡んだものはよくわかりません
一応、上のサンプルをざっと読んでみましたがFramePositioningControlというのは使ってないようです
あまり力になれなくてすいません
794デフォルトの名無しさん:2006/02/09(木) 10:39:02
795デフォルトの名無しさん:2006/02/09(木) 10:54:23
a>=200 なら @のプログラムへ
b>=100 なら Aのプログラムへ 違うなら@へ
としたいんですが、プログラムへ移動する仕方教えてください。
if(a>=200)
@式
else if(b>=200)
A式
else
@
としたら、@式を2回使うので、長くなるんです。

b>=100とすれば、1つの条件ですが、必ずa>=200を入れます。
796デフォルトの名無しさん:2006/02/09(木) 10:57:41
if(a >= 200 || b < 200){
  壱
} else {
  弐
}
797デフォルトの名無しさん:2006/02/09(木) 10:57:47
>>795
とりあえずわかったのはホットゾヌが =レス番号 でもポップアップしてくれること。
あと、機種依存文字を使っていること。
798デフォルトの名無しさん:2006/02/09(木) 11:04:59
その他の場合は1処理でいいのか?
処理しないの場合はないのだろうか。
799デフォルトの名無しさん:2006/02/09(木) 11:05:02
初心者からJava上級者への質問。

Javaの学習の仕方で最適な方法は、次のうちどれですか?

1)コンストラクタやメソッド、配列、インターフェイス、例外などの
  定義の意味を学びつつ、それに沿ってそれらの基本的なコーディングの
  仕方を覚える。その後、数百行程度の規模のプログラムのコード
  を読みながら、実際のコーディングを学んでいく。

2)上記の定義の意味を学びつつ、パターン化された小さなプログラムを
  書きながら、ただひたすら感を養う。ある程度して数十パターン程度
  を覚えたら、実際のコードを読んで、より大きめのプログラムの構成
  を学んでいく。

3)それ以外。
800デフォルトの名無しさん:2006/02/09(木) 11:07:24
必要は最大の理由なり、まで読んだ
801デフォルトの名無しさん:2006/02/09(木) 11:08:35
>>799
この世に「初心者という人」と「上級者という人」は存在しないと思っている俺はどうなる・・・
その「〜分かれば上級者」とかいうわけのわからん設定を先にどうにかすれ
802デフォルトの名無しさん:2006/02/09(木) 11:21:05
初心者という言葉を使わず勉強中とかにすれば風当たりいいかな?
803デフォルトの名無しさん:2006/02/09(木) 11:27:42
わかりました。Java学習中の者ですが、Javaを使って食卓に食べ物を、
或いは奥様へ給料明細を持ってくることに成功されている方への質問。

Javaの学習の仕方で最適な方法は、次のうちどれですか?

1)コンストラクタやメソッド、配列、インターフェイス、例外などの
  定義の意味を学びつつ、それに沿ってそれらの基本的なコーディングの
  仕方を覚える。その後、数百行程度の規模のプログラムのコード
  を読みながら、実際のコーディングを学んでいく。

2)上記の定義の意味を学びつつ、パターン化された小さなプログラムを
  書きながら、ただひたすら感を養う。ある程度して数十パターン程度
  を覚えたら、実際のコードを読んで、より大きめのプログラムの構成
  を学んでいく。

3)それ以外。
804デフォルトの名無しさん:2006/02/09(木) 11:27:49
質問内容が>>799なら勉強中と言い換えても変わらんと思うぞ。
805デフォルトの名無しさん:2006/02/09(木) 11:29:39
こんなのへのレスは
全部
それ以外で
いいんじゃね?w
806デフォルトの名無しさん:2006/02/09(木) 11:29:43
>>803
奥様も居ないし、給与明細もないから答えられないな
807デフォルトの名無しさん:2006/02/09(木) 11:31:53
>>803
くだらない質問してる暇があるなら
コード書け、コード読め、言語規定とVM仕様読め
808デフォルトの名無しさん:2006/02/09(木) 11:32:39
食卓に食べ物を出す方法はわからないが、
奥様と給与明細を受け取るにはもっと人として磨かないと無理だと思うぞ

結局仕事は一人でするんじゃなくて、人と人とでするからな
ははは・・・
809デフォルトの名無しさん:2006/02/09(木) 11:34:47
>>796
回答ありがとうございます。今から試してみます。

>>798
その他の場合は@で結構です。処理しない場合はありません。
810デフォルトの名無しさん:2006/02/09(木) 11:39:25
>>809
なるほど、なら796のスタンダードな記述で全然よいとおも。
複雑な条件ならガード節使うのもありんす。
isOutAria(x,y)
811デフォルトの名無しさん:2006/02/09(木) 11:39:30
>>792
バージョンが古いがJavapressとかムックで十分
ネットの情報のみで「使って慣れる」でも行けると思う
812デフォルトの名無しさん:2006/02/09(木) 11:42:35
if(b>=200){
foo1();
return;

foo2();

途中でenterしちゃったスマン。
813デフォルトの名無しさん:2006/02/09(木) 12:06:38
JInternalFrameのフォーカスについてなのですが…困ってます。

JInternalFrameを2つ表示させているんですけど、
あるJInternalFrameから呼び出してもう一方のJInternalFrameをフォーカスを
あてている状態(選択している状態)にしたいのですが、どうしたらいいのでしょうか?

例えばですが、片方のJInternalFrameに表示したボタンをクリックしたときに
自動でもう一方のJInternalFrameが選択される状態にしたいのです…
814747:2006/02/09(木) 12:19:31
>>793
ありがとうございます。
サンプルを参考に頑張ってみます。
815デフォルトの名無しさん:2006/02/09(木) 12:23:03
>>813
JDesktopPaneのマニュアル見た?
816デフォルトの名無しさん:2006/02/09(木) 12:26:13
Swingを使ってゲームを作成しているのですが

MouseMotionAdapterを使って、マウスが動くたびに、フォームに対しての座標を取得しているのですが
ラベルの上にマウスを置くと、ラベルの下にある、フォームの座標が取得できなくて・・・

どうすれば、全体の座標を、ラベルなどを無視して取得できますか?><教えてください・・・
817デフォルトの名無しさん:2006/02/09(木) 12:43:10
長くても短くても、クラス名を書けクラス名を!
818デフォルトの名無しさん:2006/02/09(木) 13:15:54
利用可能なクラスの中で、
1.最も長いクラス名
2.最も長いパッケージ名
3.最も長いFQCN
を得るにはどうすればいいでしょう。ClassLoaderとかいじらないといけませんか?
819デフォルトの名無しさん:2006/02/09(木) 13:18:23
>815さんありがとうございます!
setSelectedFrame(JInternalFrame f)というのを使えばいいのはわかったんですが
実際動かしてみると、片方のJInternalFrameで呼び出したときに何もおこらず、
もう一方のJInternalFrameを選択したときに2つとも選択した状態になってしまいます…
setSelectedFrameを呼ぶ場所がおかしいのでしょうか?
820デフォルトの名無しさん:2006/02/09(木) 14:00:14
>>818
とりあえず「利用可能なクラス」が定義されないとどーしよーもない。
実行時にバイトコードを生成しても良いなら
後から幾らでも長い名前付けたクラスやパッケージを作れるし。
821デフォルトの名無しさん:2006/02/09(木) 15:42:23
>>819
setSelectedFrame(JInternalFrame f)ではなく
JInternalFrameのsetSelectedを使ったらどう?

i1.setSelected(false);
i2.setSelected(true);

みたいな感じで。
822デフォルトの名無しさん:2006/02/09(木) 15:48:13
質問させてください。
Eclipseでファイル読み込みを伴うJavaプログラムを作っているのですが、Jar出力したものを起動しようとすると、
読み込むファイルがJar内に固められた為か読み込みに失敗します。
Eclipseでの通常開発時とJar出力での起動と、両方に対応できるファイルの読み込み方法はありますでしょうか?
読み込んでいるものはxmlファイルと画像ファイルです。
823デフォルトの名無しさん:2006/02/09(木) 15:51:04
>>822
絶対パスを入力してるってこと?
それなら相対パスにすればいいのでは?という回答しかできませんが
”jar内に固められた”がよーわからん
824デフォルトの名無しさん:2006/02/09(木) 15:56:09
>>822
ファイルをクラスパス内に配置して、getResource(path) ではどうだ。
詳しくは ClassLoader getResource なんかでググってくれ。
825デフォルトの名無しさん:2006/02/09(木) 16:13:55
<T> void func() {
T t = new T();
}

こういうのってできない?
826デフォルトの名無しさん:2006/02/09(木) 16:25:28
>>825
無理
827デフォルトの名無しさん:2006/02/09(木) 16:32:27
Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException:
component must be showing on the screen to determine its location

こんなメッセージが出るのですが・・・・

どう理解すればいいのでしょうか…?
828デフォルトの名無しさん:2006/02/09(木) 16:43:03
829デフォルトの名無しさん:2006/02/09(木) 17:04:20
>>827
他の処理との呼び出し順がマズイとか…
ちなみに俺は簡単なサンプル作って試したら普通に動いたけど…
830デフォルトの名無しさん:2006/02/09(木) 17:32:26
>>823
Eclipseのプロジェクトフォルダの中に、読み込むファイルを置いてあるんです。
EclipseのJar出力機能でプロジェクトを丸ごとJarファイルにしているので、読み込むファイルも圧縮されているんです。
もしかしたらそれが原因かな、と。
831デフォルトの名無しさん:2006/02/09(木) 17:33:57
すいません上の質問をした819です!
2つのJInternalFrameに関連があるんですけど、
JInternalFrame1
JInternalFrame2
があるとして
1から2に含まれているコンポーネントにポップアップを表示させたいのです(汗)

ソースとしては1から

JPopupMenu popup = new JPopupMenu();
JLabel label = new JLabel();
popup.add(label);
popup.setBorder(BorderFactory.createLineBorder(Color.BLACK));
popup.menuSelectionChanged(false);
popup.show(com,0-label.getPreferredSize().width,0-label.getPreferredSize().height);
comはJInternalFrame2でポップアップを表示させたいコンポーネント

てな感じで呼び出してるんですけど上みたいなメッセージがでるんです。
832デフォルトの名無しさん:2006/02/09(木) 18:15:44
833デフォルトの名無しさん:2006/02/09(木) 18:50:25
マルチポストうぜぇな
834デフォルトの名無しさん:2006/02/09(木) 19:35:27
ClassLoaderのサブクラスを作り、defineClassをオーバーライドして、
特定のクラスをloadClassでロードしたのですが、
ClassクラスのインスタンスからnewInstanceでインスタンスを作り、
ロードしたシンボルの名前でキャストすると、NoClassDefFoundErrorが出てしまうのですが・・・。
これは何故なのでしょうか。

ひょっとして、インターフェイスだけは
システムクラスローダで読み込ませておかねばならないのでしょうか?
835デフォルトの名無しさん:2006/02/09(木) 19:42:26
>>831
マルチ死ね
836デフォルトの名無しさん:2006/02/09(木) 19:55:19
>>834
>ひょっとして、インターフェイスだけは
>システムクラスローダで読み込ませておかねばならないのでしょうか?

そうだったと思うけど。
837デフォルトの名無しさん:2006/02/09(木) 19:58:36
>>836
調べてみたところその様でした。ありがとうございました。
838デフォルトの名無しさん:2006/02/09(木) 20:17:30
>>835
そんな怒らなくたって良いだろ
839デフォルトの名無しさん:2006/02/09(木) 20:27:53
>>838
ごめんカルシウム補給しとく。
840デフォルトの名無しさん:2006/02/09(木) 20:48:21
サーブレットとデータベース使って本の検索システム作ってるんですけど
困ってます。HTMLファイルでキーワードを入力して、それをBeanで受け取
ってデータベースから該当するデータを取り出してJSPで表示させたいんで
すけど。BeanではGetParameterが使えないのでキーワードが受け取れない
んです、どうしたらいいでしょうか?
841デフォルトの名無しさん:2006/02/09(木) 20:54:09
>>840
そのレベルだとまずサーブレット初心者本よんで勉強からはじめたほうが近道っぽいぞ
場合によってはJava本からだな
842デフォルトの名無しさん:2006/02/09(木) 21:57:17
すみません

例えば
String str = "hogehoge"
if(str == "hogehoge"){ ... }
ですとifの条件に引っかかってコードブロックを実行するのですが

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
if( (str = br.readLine())=="hogehoge" ) { ... }
とし、hogehogeと入力しますとなぜかifにひっかかってくれません
どういう事でしょうか
843デフォルトの名無しさん:2006/02/09(木) 22:00:42
>>842
Javaの最初のところから勉強したほうがいいよ
844デフォルトの名無しさん:2006/02/09(木) 22:00:59
>>842
stringはclass
equals()つかいましょう?
845デフォルトの名無しさん:2006/02/09(木) 22:01:37
>>842
Stringはクラスなので参照型です。equalsメソッドを使いましょう。
846デフォルトの名無しさん:2006/02/09(木) 22:09:23
>>842
どうしても equals() 使いたくないならintern() しろ。
847デフォルトの名無しさん:2006/02/09(木) 22:22:44
出力幅と精度を指定したくprintfを使用したのですが、以下のようなエラーが出ます。
Score.java:39: シンボルを解決できません。
シンボル: メソッド printf (java.lang.String,double)
場所 : java.io.PrintStream の クラス
System.out.printf("%.2fです。\n", ae);
クラスはimport java.io.*;とimport java.util.*;を使用していますがここが足りないのでしょうか?
ちなみにJDKは5.0_06を使用しています。
848デフォルトの名無しさん:2006/02/09(木) 22:25:22
printf()なんてメソッドが出来たんだ・・・いい加減JDKアップするかね・・うん
849デフォルトの名無しさん:2006/02/09(木) 22:31:47
System.out.printf("%.2fです。\n", (Double)ae);

これで上手くいかないか?
850デフォルトの名無しさん:2006/02/09(木) 22:32:44
>847
$ javac -version
851デフォルトの名無しさん:2006/02/09(木) 22:33:56
>>847
複数JDK入れててコンパイルに jdk1.4 使ってないか?
コンパイル時に javac -J-showvesion とかやってチェックしてみ。

Eclipse でもコンパイラレベルを 1.4 のままにしておいて
JDK5.0 使ってますが printf がエラーになりますって人がいたな。
852デフォルトの名無しさん:2006/02/09(木) 22:44:57
>>849
なんでそうおもったんだ
853デフォルトの名無しさん:2006/02/09(木) 23:08:32
ん? なんとなく。


……ゴメン。恥ずかしいんだから放っておいて orz
854847:2006/02/09(木) 23:15:40
>>849-851
ありがと。指摘通りPATHが1.4だった。
んで、今度は間違えてクラスパス飛ばして復旧方法忘れてたので直すの面倒だった…
あと、どうでもいいけどdouble = int / int ってちゃんと出ないんだね
全部doubleにして解決したけど、なんとなく自分がぶつかったので報告。
855デフォルトの名無しさん:2006/02/09(木) 23:17:40
基本から勉強しなおしてくれ・・・
856デフォルトの名無しさん:2006/02/09(木) 23:32:31
全然、関係のない話なんですが、CCNAのスレってないでしょうか?
携帯なので誘導していただけると助かります。
857デフォルトの名無しさん:2006/02/09(木) 23:48:29
クリックしたらm3uファイルが実行されてmediaPlayerが起動する。
というのをやりたいんですが、その場合どのような方法があるのでしょうか。
runtime.execを使うとmediaPlayerしか起動できないので。
858デフォルトの名無しさん:2006/02/09(木) 23:50:46
コマンドプロンプトの勉強して Runtime#exec() 使e
859デフォルトの名無しさん:2006/02/09(木) 23:58:18
>>857
そんなOS依存のことなんか知らねえよ。う゛ぉけ。
860デフォルトの名無しさん:2006/02/10(金) 00:02:46
>>859
mediaplayer使えるということは普通windowsなのでは・・・
861デフォルトの名無しさん:2006/02/10(金) 00:03:23
runtime.exec("D:/a.m3u");
runtime.exec("D:\\a.m3u");

としてみたのですが、エラー193その他たくさんがでるだけでうまく動いてくれませ
ん。
コマンドプロンプトで、d:\a.m3uとしたらmediaPlayerがちゃんと起動してくれま
す。
どうしたらよいのでしょうか。
862デフォルトの名無しさん:2006/02/10(金) 00:05:51
>>861
たとえば、コマンドプロントで
cmd /c start d:\a.m3u
command /c start d:\a.m3u
とかやってみると嬉しくなれるかも
863デフォルトの名無しさん:2006/02/10(金) 00:16:20
mediaPlayerを起動したいというより、m3uファイルを実行してプレイリストの再生をしたいのですが。

864デフォルトの名無しさん:2006/02/10(金) 00:20:25
いい加減にしろよ阿呆
865デフォルトの名無しさん:2006/02/10(金) 00:26:42
>>861
Mustang以降なら Desktop API 使えば関連するアプリケーションを開くまではできそう。
勝手に再生が始まるかどうかはアプリケーション次第のような気もするけど。
http://download.java.net/jdk6/docs/api/java/awt/Desktop.html#open(java.io.File)

Mustang まで待てないなら JDIC の Desktop API 使うとか
https://jdic.dev.java.net/nonav/documentation/javadoc/jdic/org/jdesktop/jdic/desktop/Desktop.html#open(java.io.File)

試してないので動くのか知らんけど、同じく JDIC の Music Player Control API とか
https://jdic.dev.java.net/nonav/incubator/mpcontrol/javadoc/
866デフォルトの名無しさん:2006/02/10(金) 01:19:07
Log4Jのプロパティファイルってどこにおけばいいんですか?
classes直下においたら認識してくれない・・・・
(フルパス指定だと読めるんですが)
867デフォルトの名無しさん:2006/02/10(金) 01:40:51
Execution completed.
1666088 bytecodes executed
193 thread switches
744 classes in the system (including system classes)
6535 dynamic objects allocated (539988 bytes)
6 garbage collections (96196 bytes collected)

エラーが怒ってしまう・・・何かおかしいとこあるんすか?
868デフォルトの名無しさん:2006/02/10(金) 01:44:08
Execution completed = 実行が完了しました
869デフォルトの名無しさん:2006/02/10(金) 02:50:06
>>860
Windows なんか知らねえよ。う゛ぉけ。
870デフォルトの名無しさん:2006/02/10(金) 02:51:15
>>867
辞書を引いて全部日本語にしてみな。
871デフォルトの名無しさん:2006/02/10(金) 04:29:28
872デフォルトの名無しさん:2006/02/10(金) 04:54:02
質問します。
「MIDP 2.0 携帯Java アプリ開発ハンドブック」(布留川英一著)という本にならって
JDK1.4とWTK2.2とをインストールしていたのですが、
JDK1.4のほうはインストールできたんですが、
WTK2.2のほうは sunのダウンロードページに飛ぶ前に「UserNameとパスワード」を
要求されてしまい、このことについて上記の本では何も書いてないんです。
どうしたらよいのでしょうか?どなたかわかる方、教えてくださいませ。
873デフォルトの名無しさん:2006/02/10(金) 05:15:36
>>872
誘導。ただし、初心者歓迎ではないのでアシカラズ。
注意書きには気をつけて、良い旅を。

CLDC+MIDP+携帯電話用Javaスレッド part 5
http://pc8.2ch.net/test/read.cgi/tech/1132493827/
874デフォルトの名無しさん:2006/02/10(金) 05:44:17
857です。
runtime.exec("cmd /c start D:/a.m3u");
で、出来ました。ありがとうございました。
875デフォルトの名無しさん:2006/02/10(金) 10:59:57
>>874
>>862が何故2パターン用意してるのか分かった?
コマンドインタプリタで set comspec とか echo %comspec% ってやってみると嬉しくなれるぞ
876デフォルトの名無しさん:2006/02/10(金) 11:01:29
絶対座標の取得はできますか?
877デフォルトの名無しさん:2006/02/10(金) 11:05:21
getLocationOnScreen() (だっけ?)
878デフォルトの名無しさん:2006/02/10(金) 11:52:02
カーソルの絶対座標は取得できますか?
879デフォルトの名無しさん:2006/02/10(金) 12:31:38
できます。以上
880デフォルトの名無しさん:2006/02/10(金) 12:32:44
>>879
詳しく教えてあげなよ
881デフォルトの名無しさん:2006/02/10(金) 12:41:21
>>880
できますか?と言う質問だから正しい答えだと思うよ
どうやったらできますか?とかどのAPIを使うんですか?という質問をすれば良いと思うよ
882デフォルトの名無しさん:2006/02/10(金) 13:01:14
揚げ足取りを淡々と引きずってもおもしろくない。
883デフォルトの名無しさん:2006/02/10(金) 13:05:55
次の人どうぞ〜
884デフォルトの名無しさん:2006/02/10(金) 13:06:30
ハズレの回答者を引いたのはお前だ。諦めろ。
885デフォルトの名無しさん:2006/02/10(金) 13:28:13
俺じゃないけど。
886デフォルトの名無しさん:2006/02/10(金) 13:43:23
どうやったら、カーソルの絶対座標を取得できますか?
887デフォルトの名無しさん:2006/02/10(金) 14:14:45
888デフォルトの名無しさん:2006/02/10(金) 15:53:06
返答ありがとうございます

使ってみたのですが、、、
import java.awt.MouseInfo;
の時点で、シンボルを解釈できませんとでました。。。
どうしてなのか教えていただけますか?
889デフォルトの名無しさん:2006/02/10(金) 15:58:22
>>888
MouseInfoは1.5から導入されたので、1.4とかだと使えない。
890デフォルトの名無しさん:2006/02/10(金) 16:03:36
手を抜いて一行で質問すると、余計時間がかかる、の典型だな
891デフォルトの名無しさん:2006/02/10(金) 16:03:42
なるほど・・・1.5ですか・・・

探したのですが、1.5をダウンロードできるページを見つけれなくて;;
よければ、アドレスを紹介してもらえませんか?
892デフォルトの名無しさん:2006/02/10(金) 16:08:59
893デフォルトの名無しさん:2006/02/10(金) 16:19:42
最新版を見つけれないって珍しい質問だな
894デフォルトの名無しさん:2006/02/10(金) 16:50:19
test.xmlという文字列から .xmlを取り除いて testという文字列を取り出したいです。
ご教授いただけるとうれしいです。
895デフォルトの名無しさん:2006/02/10(金) 16:54:14
name.substring(0, name.length() - 4);
896デフォルトの名無しさん:2006/02/10(金) 16:55:25
int last = name.lastIndexOf('.');
if (last >= 0)
name = name.substring(0, last);
897デフォルトの名無しさん:2006/02/10(金) 16:56:02
文字列の後ろ4文字をカットしたいのか、.xml という文字列を排除したいのか
ピリオド以降をカットしたいのか、でやり方変わってくると思うが。

って書いてるうちに 4文字カットとピリオド以降の方法が書き込まれている
898デフォルトの名無しさん:2006/02/10(金) 16:56:44
name = name.replaceFirst("\\.xml$", "");
899894:2006/02/10(金) 16:57:55
みなさんありがとうございますm(__)m
900デフォルトの名無しさん:2006/02/10(金) 16:57:55
string hoge(){
s="test.xml"
if(s.equals("test.xml")) return "test";
}
901デフォルトの名無しさん:2006/02/10(金) 17:01:24
>>900が正解。
仕様に書かれていないことを勝手に想像して実装してはいけない。
902デフォルトの名無しさん:2006/02/10(金) 17:10:42
>>901
残念ながら "test" は string型にキャストできません。

ついでに、s.equals("test.xml") ではなかった場合の処理が抜けてるので
言語規定によりコンパイルエラーになるはずです。
903デフォルトの名無しさん:2006/02/10(金) 17:13:32
> s="test.xml"
s の宣言が抜けてるのとか、セミコロンが抜けてるのとかは?
904デフォルトの名無しさん:2006/02/10(金) 17:14:26
高説垂れる前にコードくらい読めるようになれと
905デフォルトの名無しさん:2006/02/10(金) 17:16:18
if文だけ書いてあればよかった
906デフォルトの名無しさん:2006/02/10(金) 17:18:10
コンパイルも通らないコードに正解認定と聞いて飛んできました
907デフォルトの名無しさん:2006/02/10(金) 17:25:19
そこまで揚げ足とるなら>>894はJavaでって書いてないから正解でいいんじゃね
908デフォルトの名無しさん:2006/02/10(金) 17:30:38
>>907
スレタイ100回読み直して半年ROMってて下さい。
909デフォルトの名無しさん:2006/02/10(金) 18:18:52
途中までVBで書いた
javaだと思い出してequalsメソッドにした
面倒だからそのままにした
910デフォルトの名無しさん:2006/02/10(金) 18:25:54
今は反省してる
911デフォルトの名無しさん:2006/02/10(金) 18:33:59
>>884
質問の仕方で、はずれの回答者を召還することも大いにあるよねえw
912デフォルトの名無しさん:2006/02/10(金) 20:30:27
Image の一部を三角形に切り出して回転させ、同じ Image の別の領域に描画したいんですけど、
三角形に切り取りとか、回転とかって機能ありましたっけ?
913デフォルトの名無しさん:2006/02/10(金) 20:31:29
>>912
(俺の考えた便利な2D描写ライブラリなら)ある。普通に使える。
914デフォルトの名無しさん:2006/02/10(金) 20:35:02
すみません、J2SE 1.4 のコアライブラリにです。
ひょっとして PixelGrabber でビット化してピクセル拾って座標変換するしかないですかね?
915デフォルトの名無しさん:2006/02/10(金) 21:51:46
コアJavaってもうそろそろ改訂版が出ますか?
改訂版が出そうなので買うに買えないんですが
916デフォルトの名無しさん:2006/02/10(金) 22:31:51
配列を扱うときはvectorよりArrayListの方が処理が早くなるって聞いたんですが本当なんでしょうか?
厨な質問ですいません
917デフォルトの名無しさん:2006/02/10(金) 22:33:48
ひんと:どうき
918デフォルトの名無しさん:2006/02/10(金) 22:35:54
>>916
配列を扱うなら、配列が一番速いよ。
919デフォルトの名無しさん:2006/02/10(金) 22:39:39
>>912
やったことないけどアクセラレーションがきかなくてもいいならJava2Dでいけるんじゃない?
Shape+TexturePaint+AffineTransformていけると思うんだけど・・・試してないからよくわからん。
920デフォルトの名無しさん:2006/02/10(金) 22:42:23
質問なんですが、

User user = null;

にSQLで取得した値を代入して値を渡すのに

user.no = result.getInt("USER_NO");
user.name = result.getString("USER_NAME");
user.pas = result.getInt("USER_PAS");
return user;

て書き方は間違っていますか?教えてください。
921デフォルトの名無しさん:2006/02/10(金) 22:43:52
>>920
> User user=null;
> に
何が「に」だ?
・・・nullに、か?

nullならその後のコードでぬるぽ出るだろ
922デフォルトの名無しさん:2006/02/10(金) 22:46:27
>>918
プログラムの中で動的に配列のサイズを変えられるのなら配列を使いたいのですが・・・
923デフォルトの名無しさん:2006/02/10(金) 22:48:18
>>922
arraycopy
924デフォルトの名無しさん:2006/02/10(金) 23:01:22
>>923
ありがとうございます
早速試しに作ってみます
925デフォルトの名無しさん:2006/02/10(金) 23:09:00
>>921
はい。でます。
そこでこの状態でのぬるぽの回避方法が知りたいんです。
926デフォルトの名無しさん:2006/02/10(金) 23:10:48
『動的にサイズが変わる配列』は
まさしく ArrayList にした方が良いものだろう
927デフォルトの名無しさん:2006/02/10(金) 23:11:34
PixelGrabberって使う場面なんてあるか?
928デフォルトの名無しさん:2006/02/10(金) 23:24:49
>>920
null.no
null.name
null.pass

…これ、どうしようか
他の言語でこういう書き方があるのか?
929デフォルトの名無しさん:2006/02/10(金) 23:31:16
>>925
その「User」というクラスの仕様がわからないことには答えられないよ。

930デフォルトの名無しさん:2006/02/11(土) 00:16:24
>>916
ArrayList ってたしか同期とってないんだよな。ちょっと速いんじゃない?
それのせいかどうかは知らないが。気になるならソース見たら?

931デフォルトの名無しさん:2006/02/11(土) 00:17:31
>>925
わかんねえけど User user = new User(); とでも書けば? どうなるか知らないけど。
932デフォルトの名無しさん:2006/02/11(土) 00:20:37
933デフォルトの名無しさん:2006/02/11(土) 00:33:52
WebでないJavaアプリをJarに固めるときって、
ライブラリのjarファイルや設定のプロパティファイルは
どこに置くのが普通でしょうか?
934デフォルトの名無しさん:2006/02/11(土) 01:38:54
javaでweb上の画像ファイルを表示させるのは難しいでしょうか?
C#だと簡単のようなのですが…
935デフォルトの名無しさん:2006/02/11(土) 01:48:56
>>933
ライブラリはjarと同じフォルダかCLASSPATHの通った場所
どのライブラリのjarを見るかはMANIFESTファイルで設定しておく

設定のプロパティファイルはユーザーに触らせたくないならjarの中とかインターネットの特定URLに置いて置く
ユーザーが触って良いならjarと同じ場所か起動用のシェルやバッチのある場所
936デフォルトの名無しさん:2006/02/11(土) 01:57:21
>>935
さんくすです。
とりあえず同じフォルダに置く方針でやってみまつ
937デフォルトの名無しさん:2006/02/11(土) 02:02:25
>>934
どの変が難しいと思ったんだ?
938デフォルトの名無しさん:2006/02/11(土) 08:28:59
>>924
自分でArrayList作ってどうする。
939デフォルトの名無しさん:2006/02/11(土) 09:27:02
Javaで絶対パスを相対パスに変換するにはどうしたらいいんでしょうか……?

parent = カレントとなるディレクトリ
child = 相対にしたい絶対パス
を使い、
new File( parent, child );で作成しても、

二つが連結されたパスが生成されるだけで困ってます。
ご存じのかたお助けください。
940デフォルトの名無しさん:2006/02/11(土) 10:15:31
カレントはcurrentにしてほすぃの。
941デフォルトの名無しさん:2006/02/11(土) 13:59:29
parent = new File(parent).getCanonicalPath();
child = new File(child).getCanonicalPath();
child = child.substring(parent.length() + 1);
942デフォルトの名無しさん:2006/02/11(土) 14:36:44
>>941ありがとう。(>>939じゃないけど勉強になるので)

それだとchildがparentの下にないとだめだよね?
たとえば
  child=/usr/local/share/X11
  parent=/usr/local/lib
を入力したときに、../share/X11を取得しようとしたら
やっぱり / で区切ってパスの先頭から一段づつ見て
いくしかないのかな。
943デフォルトの名無しさん:2006/02/11(土) 14:52:56
if(parent.equals(child.substring(0, parent.length()))) とかで判定すりゃいいんじゃないか?

Windowsのパスの大文字小文字を区別しない場合とかにも対応したいなら
if(new File(parent).equals(new File(child.substring(0, parent.length()))))

括弧の数あってるか自信ない。
944デフォルトの名無しさん:2006/02/11(土) 15:06:02
String#startsWith() か String#matches() 使え
上位階層の ../ 付けたいなら StringTokenizer と Stack でも使ってゴリゴリ書け
945デフォルトの名無しさん:2006/02/11(土) 15:20:09
> 上位階層の ../ 付けたいなら StringTokenizer と Stack でも使ってゴリゴリ書け

それは getCanonicalPath 使う事で解決するんじゃないか
946デフォルトの名無しさん:2006/02/11(土) 16:15:35
〜Java初心者スレ 80 終わりの歌〜
ちんちんぺろんちょぺろんちょ ちょっとしめっぽい〜
なんでさきっちょひかるの〜 2mものびるよ〜
「あ、けっこう うまいんすね あ〜」
触るときに「すいません」なんて非日常会話
「Java好きなんすか?」
「ええ、Java好きっすね〜」
「P2Pなんてどう?」
「あ、いいっすね〜」
「俺とおまえでO2Oなんてな」
「ぎゃはははは」
じゃぱっじゃぱ、ぱ、ぱ、じゃばじゃば
JavaJavaJavaJavaJavaJavaJava

じゃ!。。。ばまたね
947デフォルトの名無しさん:2006/02/11(土) 16:19:20
>>916
スレッドセーフは微妙な問題なので
Vector を使ったぐらいじゃどうにもならない可能性が高い。
むしろ、勝手に同期されると、デッドロックを起こす弊害になりかねない。
948デフォルトの名無しさん:2006/02/11(土) 16:24:55
Vectorの同期ではデッドロックは起こらないんじゃないの?

少なくとも初心者が触っていて速度が問題になるとは考えられんが

Lock使って実装されればその速度もさほど気にならんかもしれんが
949939:2006/02/11(土) 16:27:30
>>941,943,944,
ありがとうございます!

>>942
自分もそれを考えていたところでした。

絶対パス→相対パスはJakarta IOにもないので凹んでいたところでした。
本当にありがとうございます。
950sage:2006/02/11(土) 16:30:24
んなことあるわけねーだろ
951デフォルトの名無しさん:2006/02/11(土) 16:33:40
>949
どんなにがんばっても相対取れないこともあることに注意な。
952sage:2006/02/11(土) 16:47:48
アルプスの少女ハイジを
保険のCMに利用するのはやめてください

やずや。やずや。
953デフォルトの名無しさん:2006/02/11(土) 16:54:57
public class Sample2_4{
private static int d = 10;
protected void method(){
System.out.println("method"); }
private Sample2_4(){
System.out.println("constructor"); }
public static void main(String[] args){
System.out.println("d = " + d );
Sample2_4 spl =new Sample2_4();
spl.method();
}
} を実行すると結果が
d = 10
constructor
method になります。
spl.method()メソッドを呼び出しているのでmethodが表示されるのは分かるのですが
constructorも表示されるのはなぜなのでしょうか?
どなたか教えてください。
954デフォルトの名無しさん:2006/02/11(土) 16:57:32
> Sample2_4 spl =new Sample2_4();
コンストラクタ読んでるからじゃね?
955デフォルトの名無しさん:2006/02/11(土) 16:57:46
> Sample2_4 spl = new Sample2_4();
              ~~~~~~~~~~~~~~
956デフォルトの名無しさん:2006/02/11(土) 17:00:31
流石に釣りだろ
957sage:2006/02/11(土) 17:03:29
フィッシング詐欺
「掲示板にコンストラクタが呼ばれることを聞かれることってあるのですか?」
958デフォルトの名無しさん:2006/02/11(土) 17:04:20
むかしの疑似餌はもっと精巧にできていた
今の若いものはこんなことも的もにできんのか
959デフォルトの名無しさん:2006/02/11(土) 17:08:16
>>954
>>955すいません、どういう意味ですか?
釣りとかはでありません。
最近独学でJAVAをはじめたばかりなので全然分かっていなくてすみません。
もう一度参考書をよく読んでみます。
960sage:2006/02/11(土) 17:09:31
「的」 おまえの書きまちがえの方が。。。

伊勢エビラーメン800円ならやすいな
ユンソナやります
「全メーカ社 okよ」
961デフォルトの名無しさん:2006/02/11(土) 17:10:23
コンストラクタは何時実行されるものかよく調べろ。
962デフォルトの名無しさん:2006/02/11(土) 17:13:18
つーか上の宣伝画像の小倉ありすの顔が、やらしてくれそうで
勃起してしまいます
963デフォルトの名無しさん:2006/02/11(土) 17:14:18
コンストラクタというのはオブジェクトが作成されるときに自動的に呼び出される特殊なメソッドのこと。
964デフォルトの名無しさん:2006/02/11(土) 17:17:36
いやいや、自動的には呼ばれないだろ
ねこにゃんにゃんにゃん
いぬわんわんわん
かえるもあひるもがーもーらー
ねこにゃんにゃんにゃん
いぬわんわんわん
じゃいあんと馬場も 「めんがまがまー!」
965デフォルトの名無しさん:2006/02/11(土) 17:20:24
>>961
>>964
今知ったのですがデフォルトコンストラクタというものがあるのですね。
ありがとうございました。
966デフォルトの名無しさん:2006/02/11(土) 17:22:05
constructor と表示されたのはデフォルトコンストラクタとは関係ないと思うが。
967デフォルトの名無しさん:2006/02/11(土) 17:33:08
デフォルトコンストラクタに"constructor"を出力するように書いてあるんだが
968デフォルトの名無しさん:2006/02/11(土) 17:35:58
>>966
これは引数無しのコンストラクタですよね、失礼しました。
969デフォルトの名無しさん:2006/02/11(土) 17:47:19
中国のJavaプログラマー
チン-チイサイ
970デフォルトの名無しさん:2006/02/11(土) 17:49:37
小学校に犯罪予告葉書なんて。。。
犯人は子供だろ
そのくらいコンストラクタが呼ばれる
971デフォルトの名無しさん:2006/02/11(土) 17:50:58
>>967
デフォルトコンストラクタでなくても、同じように書けば同じように "constructor" と表示されるって事。
デフォルトコンストラクタの特例とかで、特別に "constructor" と表示されたのでは無いって事。
972デフォルトの名無しさん:2006/02/11(土) 17:54:36
どうでもいいけど、技術系の板にはPREと等幅の機能がほしいよね
ソースとか、DBのテーブル構造とか見づらくてかなわん。
973デフォルトの名無しさん:2006/02/11(土) 18:50:49
>>953
> constructorも表示されるのはなぜなのでしょうか?
実行時の出力とソースを比較することにより、
main メソッドの以下の行が原因であることが分かる。

> Sample2_4 spl =new Sample2_4();

new Sample2_4() という式は、
Sample2_4 クラスにある引数無しのコンストラクタを実行する。

Sample2_4 クラスにおいて、引数無しのコンストラクタとは
Sample2_4() という文字列を宣言部に含む部分である。

Sample2_4 クラスにある引数無しのコンストラクタでは、
System.out.println("constructor") という式を実行するように記述してある。

この式を解決することにより、出力に "constructor" という文字列が表示される。

# うーん。結構難しいね。
974デフォルトの名無しさん:2006/02/11(土) 18:52:13
vector配列の指定の要素をstring型で受け取りたいんですが、

Object cName = columnNames.get(row);
String stcName = String(cName);

とやるとエラーが出ます
どのように書けばString型で受け取ることが出来るんでしょうか
975デフォルトの名無しさん:2006/02/11(土) 18:54:00
String stcName = (String)cName;
976デフォルトの名無しさん:2006/02/11(土) 18:56:18
子クラスのインスタンスから子クラスでオーバーライドされたpublicな親クラスのメソッドを参照するにはどうしたらいいのでしょう?
class a {public void func(){}}
class b extends a {public void func(){}}
a a_instan = new b();
のような場合
a_instan.func();
で子のa_fun()が実行されますが、親のfunc()を呼び出す方法です。
C++の場合a::a_fun();になると思うのですが。
977デフォルトの名無しさん:2006/02/11(土) 18:58:14
>>975
できました! ありがとうございます
978976:2006/02/11(土) 19:00:03
訂正です。
C++の場合a::a_fun();になると思うのですが。
C++の場合a::func();になると思うのですが。
979デフォルトの名無しさん:2006/02/11(土) 19:02:30
>>976
http://www.y-adagio.com/public/standards/tr_javalang/15.doc.htm#239751

なんで C++ が出てくるのか謎。
母国語では無い言語を勉強するのに母国語で解釈しようとする行為。

#クラス名の一文字目は大文字で。
980デフォルトの名無しさん:2006/02/11(土) 19:04:23
クラスbの中でsuper.func();
981976:2006/02/11(土) 19:04:38
>>978は間違いました。
まず表記は上段が誤り下段が訂正後のつもりでした。

さらに内容が誤りでした。
×C++の場合a::func();になると思うのですが。
○a::a.func();になると思うのですが。
たしかこれで良いんですよね?
982デフォルトの名無しさん:2006/02/11(土) 19:07:24
>なんで C++ が出てくるのか謎。
>母国語で解釈しようとする行為。
べつにC++で::を使うからjavaでもそうだと申してるのではないのですから、こういう批判は当らないですね。
C++は例に挙げたにすぎません。
983デフォルトの名無しさん:2006/02/11(土) 19:08:36
>>980
superはクラスの中で使わないとダメですよね?
クラスの外からは参照できませんか?
984デフォルトの名無しさん:2006/02/11(土) 19:21:35
>983
できません。
985976:2006/02/11(土) 19:24:08
>>984
方法がないということですか?
それでは不便じゃ?

((a)a_instan).func();
で出来るかもと思ったら出来ませんでした。

986デフォルトの名無しさん:2006/02/11(土) 19:26:29
>985
方法がないということです。
不便だと思う人は不便だと思うし、思わない人は思わないと思います。
987デフォルトの名無しさん:2006/02/11(土) 19:26:36
>>982
以下の状況だと判断した。
Java をそこそこ理解している人の前で、
こういうとき、C++ では、×××って書くんだけど、Java だとどうなの?

あなたと、C++ を理解したがってる人にとっては有益な情報かもしれないが、
Java のことだけを考える人には全く無価値な情報であると考える。

>>985
私に怒りを向けるのは自由だが、
>>979で紹介している言語規定にまで怒りを向けないでいただきたい。
988デフォルトの名無しさん:2006/02/11(土) 19:33:31
>>987
そこまでC++を敵視する理由を教えてください。
他の言語、例えばCやperlから見たらC++とjavaは非常に似た仕様の言語と言えるはずです。
そのC++の例えを示してやりたい事を説明してるだけなのに、あなたはC++に対してどうしてそこまで気難しく構えるのですか?
なにかトラウマのようなものでも有るのでしょうか?
989デフォルトの名無しさん:2006/02/11(土) 19:35:37
ここは Java スレ。答える側の知らない言語を引き合いに出しても拒絶されるのは
当然のこと。関係ないけど a::func() に virtual 宣言居るんじゃないのか? 最近の
ANSI 規格がどうなってるか知らんけど。

外部からオーバーライドされたスーパークラスのメソッドは呼び出せません。
サブクラスすっ飛ばして勝手にスーパークラスのメソッドが呼べたら、サブクラス側の
整合性が保てなくなる可能性があるから。スーパークラスのメソッドはサブクラス側で
super.func() と明示的に呼んでやらないと実行されません。
990デフォルトの名無しさん:2006/02/11(土) 19:39:23

>980
次スレ立てて。
991デフォルトの名無しさん:2006/02/11(土) 19:41:07
>>987
>あなたと、C++ を理解したがってる人にとっては有益な情報かもしれないが、
>Java のことだけを考える人には全く無価値な情報であると考える。

あと一言、
私の質問がC++プロパーの内容なら兎も角、本質的にjavaの質問です。
あなたの批判するような、質問者にのみ価値のある質問は私の質問に限ったことではありませんし
そもそも、このスレでは回答者の利益になる質問のみオーケーという規則でもあるのでしょうか?
992991:2006/02/11(土) 19:44:23
>>989
上で書いた通りです。
>答える側の知らない言語を引き合いに出しても
既に書いた通りC++の例は例えに出したに過ぎません。
C++を知らなければ拘る必要はないのですよ。
自分の知らないことに抵抗感ばかり示さず、すこしは大人になってください。
993デフォルトの名無しさん:2006/02/11(土) 19:46:02
>>992
うんこは黙ってろ
994990:2006/02/11(土) 19:47:35
>980いないっぽいので立てた。
http://pc8.2ch.net/test/read.cgi/tech/1139654818/
995デフォルトの名無しさん:2006/02/11(土) 19:47:57
>>993
てめえは鼻くそでも食ってろ
996デフォルトの名無しさん:2006/02/11(土) 19:48:35
>>995
仲良くしよーぜ
997デフォルトの名無しさん:2006/02/11(土) 19:48:53
>>991
>>992
低脳プログラマうぜーよ
そもそもお前の質問は参考書読めば分る超初心者ような内容だろ
一々ツマラナイ内容で何レスもつけてるんじゃない
998デフォルトの名無しさん:2006/02/11(土) 19:49:03
あっち池
999デフォルトの名無しさん:2006/02/11(土) 19:49:42
CからJavaへ移行中のひとのスレ
http://pc8.2ch.net/test/read.cgi/tech/1136453898/
1000デフォルトの名無しさん:2006/02/11(土) 19:49:49
>>998
>>996へのレス
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。