1 :
デフォルトの名無しさん :
04/03/11 01:17
2 :
デフォルトの名無しさん :04/03/11 01:21
削除依頼出してくる
java.awt.Imageクラスの変数を Image img; と宣言して img = getImage(getCodeBase(),"test.jpg"); 抽象クラスのImageを継承せずにこのように使うのはなぜなのでしょうか? アプレットクラスがImageクラスを継承しているのでしょうか? APIドキュメントを読んだのですがいまひとつわかりませんでした。 クラスの変数をnewしないで使うの?って所から疑問に思って調べると 抽象クラスだし継承しないの?とも思ったり どなたか教えてください。
そのメソッドは Image を継承した、なぞのクラスのインスタンスを返してくれてる。 別になんの違いも無い。 せいぜい new するプログラムを書いたのが君自身ではないというだけだ。 OS やら VM やらによって、 画像を管理する最適の方法があるため、 Image のサブクラスを具体的に標準APIに用意するだけでなく、 ランタイム内部などに隠蔽するほうが都合がよい場合がある、という説明で納得いくか? >クラスの変数をnewしないで使うの? ここは君の誤解がある気がする。クラスと変数とインスタンス、それぞれの意味が正確にわかっているか?
>>3 drawStringで、
img.getClass().getName()
を表示してみると、
>>4 のいうなぞのクラスの名前がわかるよ。
OS Xだと
apple.awt.OSXImage
だね。
>>4 丁寧な説明ありがとうございます。
>ここは君の誤解がある気がする。クラスと変数とインスタンス、それぞれの意味が正確にわかっているか?
本を再度確認してみました。使い方間違えてました。ご指摘ありがとうございます。
>>5 やってみました
sun.awt.windows.WImage
とでました。
昨日から調べていたのですが分からず
入れ込んでいたので気持ちが落ち着きました。
ありがとうございました。
URLEncoder/URLDecoderについて質問です。 Windows上で、IEで非ASCII文字列をURLEncodingした時、Shift-JISの2バイト目が [a-zA-Z0-9*_-._]に含まれる場合、IEは2バイト目をその文字に変換するようなの ですが、これをDecodeするにはどうすれば良いのですか? 例えば、”(”は、URLEncoder.encode("(","SJIS")で %81%69 に変換されますが、 IEでは %81i に変換してしまいます。 これをURLDecoder.decode("%81i","SJIS")とDecodeしようとしても?i となってしまうの ですが。
SJISURLDecoderを自分で作る。
>8 そうするしかないんですか・・・・ 作るのはそんなに難しそうではないんですけどね。 とほほ
URLDecoder文字コード指定できるだろ。 URLDecoder#decode(String s,String enc) UTF-8が本来使われるべきってだけで。
あー、失礼、問題をちゃんと読んでなかった。
サーブレットだったらどっちも気にしなくていいんだけどね URLEncoder/Decoder単体なら自作しないといけなかったはず
>12 EUCだけに限定することができたらそうだね。
12の後半は意味不明ですけど。
エンコードのキャラクタセットがわかっているのは必須だとして
サーブレットでのgetParameterが綺麗にやってくれるということをいっただけ
MS932だろうがEUCだろうがUTF8でも同じ
java.net.URL〜を通常のアプリから使う場合はそのままだと
>>7 の用途に使えないので自作しないとダメだと言っただけ
>15 あっ、それなら納得。 13は EUCだけに限定してしまえば、複数バイト文字のどのバイトも [0-9A-Za-._*]にぶつからないから、7の問題は起きないという話。
こんなに下がってるから見つからなかっただろ
今パソコンでカードゲームが出来ないかと思いjavaを勉強してるのですが 私のしたいことが出来ず悩んでます。そのやりたい事とはカードにカーソル を持って行くとカードが拡大しクッリクすると効果や名前が出てくる とゆう事をやりたいのですがどうにも出来ずここ居る人達に 教えてもらいたいと思い書き込みしました。どなたかやり方を教えては くださいませんでしょうかよろしくお願いします。
厨な質問でスマソ。 WinシリーズにM$のVMが入った状態で SunのVMをインスコしたら競合とかしますか? 完璧な互換性があるのなら、ちゃんとSunを使いたいし。 M$版を消したほうがいいのかな?ヤバそうな気もするけど。
Winシリーズ・・・
>>19 ほとんどの人はMSのVMが入ってる環境の上にSunのが入ってると思う
全く問題ないよ
一応VM自体バージョン複数いれれるし
>>18 カーソルの位置からカードの拡大処理すればいいだけでは?
この辺はjavaだろうがCだろうがVBだろうが同じ
もっと具体的に何が出来ないのかかいてもらわないと
なんともいえない
ついでにいうとゲーム製作板に「JAVAでゲーム作成」ってのがある
>>19 完全な互換性ならない。ただIEのメニューか
コントロールパネルでどっちのVM使うか
切り替えられる。だから一応MSのも残しときな。
ありがとうございます。さっそく行ってみます
>>23 Javaを勉強中の人がそういった芸の細かいゲームをJavaでいきなり
書くのはかなり無謀な気がするが...どうなんでしょうね。
ゲームみたいなものは瑣末なTipsを一杯知らなければ実際的なもの
は出来ないしそれでいてJavaを勉強するのは逆にそういった細かい
ことを意識的に排除しながら勉強しなければモノにならないし...
つまり二律背反なわけですよ。(Javaははっきりいってゲームには
向きません)
最適な言語かどうかはわかりませんが、HTMLでやってみられたら
どうでしょうか?つまりWebページ上で動作するわけです。
失敗しても得られるものは結構ありますよ。
Java がゲームに向かないといっておいて HTML を勧めると来ましたか!!!!
26 :
デフォルトの名無しさん :04/03/12 02:56
コマンドプロンプトで cd C:\作業フォルダ\JavaHello\アプリケーション編 入力したんですが、指定されたパスがみつかりませんとでてしまいます・・どうしてでしょうか・・?
>>28 CLASSPATHは消せ。
PATHはどうもJREを指してるようだが、JDKはダウンロードしたかい?
JDKのbinディレクトリを指定すればOKだ。
>>28 あと、PATHの最後には「;%PATH%」と加えとかないと、
システムが使うコマンドが見つからなくて妙なことになったりするぞ。
>>30-31 おそくなってすいません。わざわざ深夜に回答ありがとうございます。
いまからためしてみまつ
すいませんやはりjavaファイルが開くだけなんですが・・・ JDKのbinは Program Files→Java→j2re1.4.2_04の中に入ってるんですが設定はこれでいいですか? tp://strawberry.atnifty.com/cgi/up/src/up0257.jpg
JAVA初心者です。 JAVAのソースをコンパイルして、実行した瞬間に、 Exception in thread "main" java.lang.NoClassDefFoundError: org/xml/sax/helpers/DefaultHandler というエラーが出て実行できません。 set Classpath=.;c:\Program Files\Starbase\StarGate SDK\Lib\starteam54.jar ;c:\Program Files\Starbase\StarGate SDK\Lib\starteam54-resources.jar このクラスパスが競合しているらしい、というのは、Webで見て分かったのですが、回避法が 出来ません。 どうしても分からず、藁をもすがる気持ちで書き込みました。
>>24 どのへんがゲームに向かないのかいってみろよ
なんにせよservletにしたらもっと大変だと思うんだけど
コンパイルの仕方が間違ってマスタすいませんでした。
>>36 構造化言語を使う場合、思いついたアイデアみたいなプログラム断片を、
貼り付けていく感覚でプログラム作っていけない罠。構造物を作るように
綿密な計画のもとに行わなければならない罠
十分計画してかなりきつく絞ってからやる必要がある。Javaの場合その最右翼じゃないか?
ゲームなんて、実践と試行錯誤の過程の思い付きの塊を洗練したものが
生命だからそういうやり方だけで通したら死んでしまうね。
(ゲームだからといって構造化言語を排除するのも間違いだけど)
OC4jについて詳しいヒトいますか?
単純に、GUI周りを作るのが面倒、 ネイティブAPIを直に触れない(JNI除く)ので OS依存の凝ったことをしようとするとつまずく(Windowsでタスクトレイに表示とか) といった話でいいんじゃないか。
ゲーム開発ってオブジェクト指向いれるとすごい楽ですよ。 私もしばらくオブジェクト指向なんていらねーとかいいながら Cでガリガリ書くことが多かったのですが、javaはらくちんです。 C++くらいの中途半端なのは下手するとかえって見にくくなっただけ だったことも多かったですが。 アイデアをそのまま実装していくのもjavaは楽ですよね? 何も考えなくてstatic mainからstaticなメソッドを呼び出すだけで Cと変わらない開発が可能です。 むしろ、ゲームで一番大事なまず絵を表示してみようなどといった部分が javaは楽ですのでとっつきはいいほうだと思いますが。 フルスクリーンや解像度変更、フリップ処理などはDirectXより初期化が 非常に楽なのもポイントです。 別に言語はなんだっていいのです。javaだけ苦手ということはありません。 VBだろうがVCだろうがお金かかるのでむしろタダで開発環境が手に入る、 しかも統合環境もSDKとセットでついてくるしろものです。 Winで開発して何も考えなくてもLinux上でうごくゲームというのもなかなかいいものです。
43 :
デフォルトの名無しさん :04/03/12 12:06
44 :
デフォルトの名無しさん :04/03/12 12:08
> 何も考えなくてstatic mainからstaticなメソッドを呼び出すだけで > Cと変わらない開発が可能です。 こんな馬鹿が > ゲーム開発ってオブジェクト指向いれるとすごい楽ですよ。 こんなこと言い放つとはおこがましい。 馬鹿さ加減を知れ。
45 :
デフォルトの名無しさん :04/03/12 12:11
>40 居たとしたら何なんだよ。 言いたいことは一発で言え。
>>41 最近のゲームはタスクトレイに入れらんないと成立しませんか。
>>44 >>42 のあれは「オブジェクト指向とか関数(!)とかよくわからん」という人の為に
レベルを下げて書いたものじゃないか?
>>44 あれは何も考えずにシンプルに実装する場合のたとえだ
それがいいものとは思ってないが
ゲーム開発初心者にはjavaが無理だという反論だ
つーか、あげてる時点で俺つられてるんだろうけどな
>49 読ませる文章を書く方が悪い。
つーか、44は、全体の文脈を理解せずに 一部分だけ取り出したら叩ける部分を 見つけて喜んで叩いただけじゃないのか?
>>50 おそらくあなたの言いたいのは「行間」でしょう。
「文脈」は無条件に読むべきものですよ。
「文脈を読む」とはあまり言いませんね。「文脈を理解する」ですね。こりゃ失礼
54 :
デフォルトの名無しさん :04/03/12 13:01
>53 書き込む前に自滅するなよ(w 「あすを読む」でも見て人生やり直せ(w
釣りがいるようなのでみなさん無視の方向で
56 :
デフォルトの名無しさん :04/03/12 13:18
プログラムっていうのに興味があります。 でもプログラムってどんなことなのかわかりません。 難しいですか?たとえば中学を卒業したててで、県立高校入試くらい は9割取れる、つまり中学数学はだいたいできてた高校入学者が、 大学受験の数学(数1Aと数UB)をやるのと比べて、どっちが手間が (時間と勉強量)かかりますか?
>56 プログラムは簡単。 数学も簡単。 でも、恋の方程式は解けない。
58 :
デフォルトの名無しさん :04/03/12 13:23
数学が簡単な人にはプログラムも簡単、って事ですね? ありがとうございました。 でも、恋に方程式なんてないと思うよ。
>>56 数学は大体できます。国語とどっちが手間がかかりますか?
といっているようなもん。 どちらが難いかだって?
数学できる奴は国語が必ずできる(もしくはその反対)か?
んなもん人それぞれ。
60 :
デフォルトの名無しさん :04/03/12 13:36
>>56 難しいかどうかなんて気にするヤツはプログラムやるな。
>>58 >数学が簡単な人にはプログラムも簡単
数学が簡単な人にできるのは、
数学を扱うプログラミングだ。
そうでないものはどうだか分からん。
62 :
デフォルトの名無しさん :04/03/12 15:15
oc4j使って サーバが出力するエラーメッセージ↓ をログ上に書き出したいんだけど java.lang.Exception at SmfViewHHead.service(BBB..java:93) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) StackTraceをStringに変換するような裏技ってないですか?
>>62 Exception e = new Exception();
StringWriter s = new StringWriter();
PrintWriter w = new PrintWriter( s );
e.printStackTrace( w );
w.flush();
String str = s.toString();
>>33 すげー遅レスだけど、変数値に書くのは、JDKのbinのパス。
おまいの言ってる場所にあるのだとしたら、
.;c:\program files\java\j2re1.4.2_04\bin;%PATH%
と入れないといけない。
でも、そのパスっておそらくJRE(ランタイムのみ)のパスに見えるんだけど、
javac.exeもちゃんとその中にある?確実なのは、javac.exeを検索して、
見つかったフォルダをそのまま変数値に入力することだと思うけど・・・。
>>61 哲学科卒業の漏れはどんなプログラミングができまつか?
無神論的実存主義が漏れの卒論ですた。
>>65 こじつけていえばオブジェクト指向プログラミングかな
実存があるまえに定義を用意しなきゃならんが
でもビジネスソフトウェアなら実世界に物理的実存があって
個々の関係性があって
仕様を通ってコンピュータ内部に物理的実存にたいする定義ができあがって
かつ関係性もしくは論理そのものにも定義があがって
インスタンス生成することで物理的実存にたいする定義に対する論理的実存ができあがり
かつ関係性もしくは論理そのものに対する論理的実存ができあがるっちゅー
あのな、やる前にあーだこーだ言う前にまずやってみろよ。
ごめん。氏んでくる。
>>67 >>68 ありがとうございまつ。
自分のプログラマとしての方向性が決まったような気がいたしまつ。
75 :
デフォルトの名無しさん :04/03/12 22:56
現在処理を実行しているクラス名を取得したいと考えています。 mainなどstaticメソッド以外であれば、 this.getClass().getName(); とすることで、クラス名を取得できるんですが、staticメソッド中では thisを使用することができないため、上記の方法が使用できません。 他に方法はありませんでしょうか? どなたかよろしくお願いします。
>>75 直接クラス名いれるしかなかったと思う
class Hoge {
static Class hoge = Hoge.class;
}
あるいはプリプロセッサで
>>75 staticメソッドはオーバライドされないので、
処理を実行しているクラス名が動的に切り替わることはありません。
ですから、これで十分です。
class AClass{
static void func(){
LogManager.getLogger().info("処理を実行中のクラスはAClassです");
}
}
>>76-77 なるほど、やっぱりクラス名をベタ書きで行うしか方法はありませんかぁ…
クラス名を直接書き込むという方法でやることにします。
どうもアリガトウございました。
79 :
デフォルトの名無しさん :04/03/13 02:36
ZipOutputStreamをつかいたいんですがZipEntryの名前に日本語を使うと文字化けしてしまいます この場合どうしたらいいんでしょうか File file = null;FileOutputStream fos =null ;ZipOutputStream zos =null; try { file = new File("data.zip");fos = new FileOutputStream(file);zos = new ZipOutputStream(fos); zos.putNextEntry(new ZipEntry("ファイル名.txt"));zos.write("中身".getBytes(), 0, 4); zos.putNextEntry(new ZipEntry("filename.txt"));zos.write("contents".getBytes(), 0, 8); }catch(Exception e){System.err.println(e);} finally { try {zos.close();}catch(Exception e){} try {fos.close();}catch(Exception e){} }
>>80 ありがとうございました。ダウンロードしてつかってみたらうまくいきました
>>78 1.4以降になるけど、
System.err.println(new Throwable().getStackTrace()[0].getClassName());
みたいなやり方もある。
83 :
デフォルトの名無しさん :04/03/13 10:21
String型の配列の重複判定処理を作ってみたのですが、 あきらかに重複が含まれている場合でも、重複判定されないでループを抜けてしまいます。 System.out.printlnの出力を見る限りでは判定対象になっていると思うのですが 何処か間違っているでしょうか? よろしくお願いします。 ↓コードです。 while(cplist[index] != "END"){ '配列の最後に格納した「END」で判定 index2 =index + 1; while(cplist[index2] != "END"){ '配列の最後に格納した「END」で判定 System.out.println(cplist[index]+"=="+cplist[index2]); if (cplist[index] == cplist[index2]){ JOptionPane.showMessageDialog(this,"重複あり","確認",JOptionPane.WARNING_MESSAGE); } index2 =index2 + 1; } index = index +1; }
84 :
デフォルトの名無しさん :04/03/13 10:23
すみません。コードが見にくくなってしまったので再掲載します。 while(cplist[index] != "END"){ '配列の最後に格納した「END」で判定 index2 =index + 1; while(cplist[index2] != "END"){ '配列の最後に格納した「END」で判定 System.out.println(cplist[index]+"=="+cplist[index2]); if (cplist[index] == cplist[index2]){ JOptionPane.showMessageDialog(this,"重複あり","確認",JOptionPane.WARNING_MESSAGE); } index2 =index2 + 1; } index = index +1; }
>>84 Stringで同値かどうかの判定がしたけりゃ
java.lang.String#equals(Object) 使え。
あと配列の終端は length 使えば判定できるだろ…
86 :
デフォルトの名無しさん :04/03/13 11:54
ゲームのメニューみたくマウスがその範囲に入ったら画像を切り替えるようなものをつくりたいのですが、 どういったクラスをつくり、MouseListenerをインプリメントすればよいのでしょうか? swingでやりたいと思っています。よろしくお願いします。
>>85 equalsで解決しました!
ありがとうございます。
>>86 JDKに入ってるSwingSetってサンプル見るといいよ
特にButtonDemoのイメージチェックボックスとComboBoxDemo
89 :
デフォルトの名無しさん :04/03/13 15:16
>>88 SwingSet見当たらないです・・・(つД`)
>>89 [JDK_installed_dir]\demo\jfc\SwingSet2 を探してください。
[JDK_installed_dir]\demo\jfc\SwingSet2\src にそのソースがあります。
JDKインストール時のデフォルト設定では demo が選択されたと思うけど、
それを選択してないとかって可能性もあるかも。
(その場合は demo ディレクトリが無い)
91 :
デフォルトの名無しさん :04/03/13 15:35
demoディレクトリなかったのでJDK入れなおします。 ありがとうございました!
92 :
デフォルトの名無しさん :04/03/13 15:46
Swingでawtのchoiceにあたるのはなんですか?
JComboBox
94 :
デフォルトの名無しさん :04/03/13 16:23
javaで作られたフリーソフトが集まってるようなサイトって無いでしょうか? ベクターには無いみたいでした。
95 :
デフォルトの名無しさん :04/03/13 16:37
>>93 どうも。
それとJLabelは単一行しか文を掲載できないみたいですが
複数文できるJLabelのようなものありますかね?
>>94 sourceforgeでjavaで検索しる。
>>95 JLabel でも複数行表示できるのは常識。使う前に SwingSet のデモを見ろ。
>>95 "<html>1行目<br>2行目</html>"
こんなのをセットすべし。
>>98 HTML使えるんですね!
これは初めて知りました。
ありがとうございました。
100 :
デフォルトの名無しさん :04/03/13 18:41
iアプリをエミュレータで作成して実機に落としたいのですが。(Doja2版) 開発に当たってcpuはペン2位がちょうどよいでしょうか? まさかそれよりもっと前?
sun.jdbc.odbc.JdbcOdbcDriver の直訳を知りたい。 サンの、ドライバクラスをロードするということらしい のですが、このへんの理解でいいでしょうか?
>>75 SecurityManager#getClassContextでも可能。
ただしprotectedなので、適当に継承するなり色々・・・
jdk1.4のThrowable#getStackTraceに近いことができる。
103 :
デフォルトの名無しさん :04/03/13 23:00
>>98 99じゃ無いのですが、HTMLが使えるなんてビックリです。
これってどの程度使えるのでしょうか?
表とかフレーム分けとかハイパーリンクもできたりするのでしょうか?
104 :
デフォルトの名無しさん :04/03/13 23:01
C:\j2sdk1.4.2_03\demo\applets\DrawTest>java DrawTest ってやると、ウインドウの閉じるボタン(×ボタン)を押しても閉じてくれないんですけど、 どうすれば閉じるようになりますか?
106 :
デフォルトの名無しさん :04/03/13 23:22
キーを離すと画像がある程度動いた後止まる、というプログラムを作りたいのですが どうもうまくいきません。 //無名内部クラス使用 public void keyReleased(KeyEvent e){ int k = e.getKeyCode(); if(k == KeyEvent.VK_RIGHT){ for(int i = 1;fue1 > 2;fue1 -= i){ //int型変数fue1の値は16 cx += fue1; repaint(); } fue1 = 2; } } (中略) //paintメソッド内 //chargazoは定義済みのImage型変数 g.drawImage(chargazo,cx,64,this); forループを使って連続repaintをし、どんどんちょっとずつ動いていく様を表示しようと 思ったのですが、なぜかいきなりforループが終わった後の結果が表示されてしまいます。。 なぜでしょう?そしてどうしればいいのでしょうか?
108 :
デフォルトの名無しさん :04/03/13 23:42
>100 好きなのを使え。 どうせ何を使っても実機は機種によって実行速度がまったく違うから、 エミュレータ上での動きは何のアテにもならない。
>>101 藻舞さんの聞きたいことが本当は、
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
なんだと想像してみると、その辺の理解でいいです。
JDBCドライバはstaticイニシャライザとかで、クラスが読み込まれたときに、
DriverManager#registerDriverを使って自分自身を登録するようになってまつ。
>>78 常にDynamicProxyをかぶせるようにして、InvocationHandlerでtargetのClassを
拾ってしまうという手もありますが。
つうか、DynamicProxyってみんな使わないの?Loggerと組み合わせるなら最高のAPI
だと思うんだけど。
むう、誰か・・・。 マリオっぽいのを作ろうとしていて、そのあの滑る感じを出したいんすけど。
>>106 AWTのイベントスレッドの外でrepaintを何度か送るんだ。
分かる?別スレッドにする。
> //これ考えたやつはばかだなあ。 デフォルトであらゆるイベントリスナーを実装してないだけ。 理解できない奴も相当馬鹿だと思うけど。
>>112 あ、そうなんすか(汗
むうー。
>>113 す、すみません 分からないっす・・・
イベントスレッドの外でrepaintを送るとは??
具体的にどういうことなのでしょうか。
>>106 Runnable r = new Runnable(){
public void run(){
for(にょろにょろ){
repaint();
}
}
};
new Thread(r).start();
こんな感じにしてみ。
これだと毎回スレッド作っちゃうから
そのイベントを待ってて動く1つのスレッドか
プールされたスレッドを使うと効率よいけどね。
>>116 ループ内の処理を別スレッドでやれ、ということ
SwingSetのColorChooserDemoが参考になるかもしれない
119 :
デフォルトの名無しさん :04/03/14 18:50
質問です。 今読んでいる参考書には「staticなメンバは継承できない」と書いてありました。 けれど、以下のようなプログラムを作ってみると、実行することができました。 class Test1 { public static int i = 10; } public class Test2 extends Test1 { public static void main(String[] args) { System.out.println(Test2.i); System.out.println(i); } } どう考えても、Test2のクラスにTest1のstaticなフィールドiが継承できてるとしか思えません。 Test1.iでなければ参照できないのなら話は分かるのですが、 Test2.iでも参照できていることに混乱しています。。 もし分かる方がいらっしゃったら、ここのところについて詳しく教えて頂きたいです。
>>119 http://www.y-adagio.com/public/standards/tr_javalang2/classes.doc.html#21831 > 8.2 クラスのメンバ
> クラス型のメンバは,次のとおりとする。
>
> ・直接的上位クラス(8.1.3)から継承されたメンバ。
> ただし,直接的上位クラスをもたないクラスObjectは除く。
> ・任意の直接的上位インタフェース(8.1.4)から継承されたメンバ。
> ・クラス本体(8.1.5)で宣言されたメンバ。
>
> private宣言されているクラスのメンバは,そのクラスの下位クラスによって継承されない。
> protected宣言又は public宣言されているクラスのメンバだけが,
> そのクラスが宣言されているパッケージ以外のパッケージで宣言されている下位クラスによって継承される。
>
> コンストラクタ,静的初期化子及びインスタンス初期化子は,メンバではないので,継承されない。
> > コンストラクタ,静的初期化子及びインスタンス初期化子は,メンバではないので,継承されない。 コンストラクタってメンバじゃなかったんだねぇ… java.lang.reflect.Constructor extends java.lang.reflect.Member だったりするんだけど。
>>120 ありがとうございます。
(継承できるってことが)理解できました。
123 :
デフォルトの名無しさん :04/03/14 20:27
すみません、オブジェクト型の配列のソートについて教えてください。 フィールド変数に int i を持つオブジェクト hoge の配列、 hoge[]について、 hoge[]をint iの大きさに応じてソートするメソッドなどありませんでしょうか。 どなたかご教授ください。よろしくお願いいたします。
>>123 java.util.Arraysを見てみそ。
>>123 java.util.Arrays#sort(Object[],java.util.Comparator)
>>124 さん、
>>124 さん
ありがとうございます。
みてみたのですが、よくわかりませんでした。。(すみません。。)
sort(Object[] a, Comparator c)
だと思うのですが、 Comparator cに何を入れれば、
指定したフィールド変数(この場合は、int i)で比較してくれるのでしょうか。。
>>126 new java.util.Comparator(){int compare(Object o1,Object o2){return ((hoge)o1).i-((hoge)o2).i;}}
>>128 なにやらエラーが出てしまって、まだできてないのですが^^;
Comparatorのcompareメソッドを実装して使う方法は理解できました。
これでできると思います。
ありがとうございました。
131 :
ひよこ名無しさん :04/03/14 21:21
Javaを扱う際の例外処理について質問なのですが、 catch ブロックで掴む例外というのはExceptionで 全て事は足りるのでしょうか? いまいち例外クラスの使い方が良く分かりません。
>>125 ,128
int[]のソートならComparatorいらないでしょ。これで十分。
int[] ia = {10, 40, 20, 1, 5};
Arrays.sort(ia);
とぅられるもんか!
>131 「例外」ならExceptionでOK。 「エラー」の場合はExceptionでは捕捉できない。 しかし、ミソもクソも一緒にExceptionというのはあまり感心できるプログラムではないと思う。
>>130 さっきできました。ほんとありがとうございました。
>>132 int型のフィールド変数での、
object[]のソートだったのです。分かりにくくってすみません^^
誤読により死亡…
>>134 感心できないどころじゃなくて、糞プログラムになるからやめろと伝えよう。
これ以上バカを増産しないように気を配って欲しいものですなぁw
>>131 Exceptionをcatchしてしまうと、RuntimeExceptionのサブクラス
(NullPointerException、IndexOutOfBoundsExceptionなど)をまとめて
捨ててしまうことになるので、バグの発見が遅れる可能性が高くなる。
>>137 catch ってのは Exception を捨てるためにあるんじゃないんだけどね。
catchしてもどうにもならないExceptionは。「catchしない」が一般的。 拾っても状態回復できないなら、普通ならアプリ落すでしょ。 よくわからなかったら、そのまま丸投げしとけ。
>>138 それを理解できる奴は不必要にExceptionのcatchなんてしないだろ?
141 :
ひよこ名無しさん :04/03/14 23:27
なるほど。回復出来るものと回復出来ないものがあるのですか。 大変勉強になりました。 丸投げするというのはその関数を何らかの原因となるException (関数内で起こり得りそうなもの)をthrows で宣言しておいて catchブロックは付けないような形にするということでしょうか? また別な質問になるのですが、状態回復出来ない場合のデストラ クタの処理は加えた方が宜しいのでしょうか?
>141 好きにすれば良いんじゃないの? 後始末をする必要があって、後始末するまでの猶予があるならば、付けておいた方が何かと都合がよい。
Java にはデストラクタはありません。
>>139 まあそうだけど、スタックの最初あたりなら、全てのExceptionをcatchしてた方がいいよね。
捕まえたところでログ吐くくらいしかできないけど、それすらしておかないと
後でエラーの原因が分かりにくくなるし。
というのを、最近JavaでGUIアプリ作って思った。
>>144 それは「必要な場合」に入るね。
reflection系の場合みたいにthrows Throwableって場合は、
嫌が応にもcatchせざるをえない場合もあるわな。
この場合はinstanceofとかで判断しつつ、丸投げ、自分で始末を決めにゃならん。
int型の数字をchar型の文字列としたいときは どうすればいいんですか。
147 :
デフォルトの名無しさん :04/03/15 07:58
>146 「char型の文字列」というのは存在しませんから無理です。
Javaで生成できるスレッドに、メモリの上限までなどのリソース的な上限以外に 仕様的な上限はありますか?
if(a == b) { return true; } return false; こんな処理をメソッドにする人がいるんですが、どうすればいいでしょう。
a, b が private ならそこそこ意義がある
152 :
デフォルトの名無しさん :04/03/15 11:02
package A; import java.awt.*; import javax.swing.*; /* <applet code = "Sample" width=100 height=100> </applet> */ public class Sample extends JApplet { パッケージに入れた状態でappletviewerを起動させるとエラーが起きてしまいます。 どのようにすればエラーが起きないんでしょうか?
どんなエラーが?
154 :
デフォルトの名無しさん :04/03/15 11:09
java.lang.NoClassDefFoundErrorとでます。
>>150-151 お前らの言いたいことはわかるんだが、そのメソッドはpublic staticで、ユーティリティクラスにあるのよ。
どこのバカが再利用するんだよ、と。
>>156 んー再利用というより、読みやすさだな。
条件文が何らかの意図を表しているなら、
コメントつける代わりにメソッド名で何をしているのかを明示してやる。
いや、冗長になるし、メソッド呼び出しのオーバヘッドも増えるから、
ほどほどにすべきだけど。
158 :
デフォルトの名無しさん :04/03/15 11:31
return a==b;じゃだめなの?
> 条件文が何らかの意図を表しているなら、 > コメントつける代わりにメソッド名で何をしているのかを明示してやる。 そう言うのじゃないんですよ。 汎用的なユーティリティクラスにあるんですよ。 compareIntみたいなメソッド名で。 もう、ダメすぎ。
>>159 >compareIntみたいなメソッド名
に不覚にもワロタ。もしかして、addInt、substractInt、leftBiggerThanRightなんかもある?
「みたいな」が重要
163 :
デフォルトの名無しさん :04/03/15 11:55
servletが読み込むプロパティファイルってどこにおけばいいんですか?
164 :
デフォルトの名無しさん :04/03/15 11:56
165 :
デフォルトの名無しさん :04/03/15 12:00
166 :
デフォルトの名無しさん :04/03/15 12:59
スーパーマリオっぽいゲームを作ろうと試みているのですが、 スーパー正男等のゲームは、矢印キーを押すと すぐにキャラが動き、そのまま押し続けていてもどんどん動いてくれるのですが keyPressedメソッドを使用しても、 一回押してからちょっと間が空いてからしか動いてくれません・・・。 ● (→キーを押した) ● (→キーを押し続けている。が、この少しの間で反応しない) →→→● (→キーを押し続けている。このように少し間が空いてから動く。) どうすればこの「間」を無くす事ができるでしょうか?? (これってゲ製作技術板かな・・・しかしここはレスが早いからこっちの方がいいんだよなあ・・)
>>163 アプリ固有のだったらWEB-INF配下とかでいいんじゃない?
>>166 問題なくすぐにうごくけど?
どっかおかしいんじゃない?
イベントがちゃんとすぐに動いてるかどうかSystem.outでいいから出力しなされ
>>168 あ、スミマセン ちょっと訂正が・・・。
→●
(→キーを押した。キー処理一回分はすぐに動くが・・・)
●
(→キーを押し続けている。が、この少しの間反応がない)
→→→→●
(→キーを押し続けている。このように少し間が空いてから動き出す。)
要するに、
→→→→→→●
ではなく、
→●
●
→→→→→●
みたいな・・・。最初の一歩はすぐに動くんす。
>>169 アクションゲームなら
・キー入力 -> 動く
とかするより
・キー入力 -> キー状態変更、
別のスレッドで キー状態確認 -> 動く
とかしたほーがいい。
それキーイベントで処理してるからだ 昔のinkey$思い出してしまった 押したときtrueで放したときfalseにセットするクラス作って処理しなされ
それは OS やらハードウェアやらでやってるキーリピートだろ。Java とかんけーねー。 KeyTyped をただ使ってるとそうなるんだよ。 テキストエディタでキー押しっぱなしにしてみろよ。 KeyPressed/Released を工夫して使え。
>>169 keyPressedの度に動かすんじゃなくて、
keyPressedされたら、keyReleasedが呼ばれるまでずっと動かし続けてたらダメ?
かぶりすぎ、ひねりなさすぎで染んできます。
>>172 ほー、そうなんすか・・・押しっぱなしにしてしばらく止まるのを変える方法はないかなーとか思ってました。
>>170-171 >>173 ウオッファ なるほど!!
それでは、Runnableを使用してキーを押したらtrueになり動作する、
みたいなプログラムを組んでみます。
ありがとうございます!
>>175 かぶったまま死ぬのはイヤだったので、ちょっと調べてみた。
キーイベントの発生はプラットフォームで微妙に違うみたいなので、
Linuxとかでも動かすなら以下が参考になるかも。
http://pc2.2ch.net/test/read.cgi/tech/1062271447/589-593 Windowsではキーを押したらpressed、離したらreleasedと呼ばれるみたいだけど、
Linuxではキーを押してる間はpressedとreleasedが交互に呼ばれるらしい。
前述の方法だけだとLinuxでは動いて止まってを繰り返しそうなので、
リンク先の590の言ってる方法を参考にした方がいいかも。
誰がLinuxとかSolarisとかで動かすかよって話ならゴメン。
OnKeyDown・・・って、ここはJavaスレか。
俺javaのゲーム作ったけど
>>176 の指摘する問題に出会ってないな
ふつーにLinuxでも同じようにキャラがうごいていたよ
キーリピートのタイミングで動いてるだろうから問題にはなりにくかっただけなのかな
ちと確認してくるかー
質問なんですが、 Dimension d = size(); ってどういう意味ですか? size()ってなんのクラスのメソッドでしょうか? メソッドからクラス名を調べる方法は無いのでしょうか?
>>178 うは、そうなんですか。漏れも実際に確認したわけでなく、
読んだ記憶を元に引用してきただけなので・・・。
もう、漏れいいとこなし。生まれてきてスマン。
チンコもかぶったまま芯で来ます。
>>179 >size()ってなんのクラスのメソッドでしょうか?
その文が書いてあるクラス(か、そのスーパークラス)のメソッド
>メソッドからクラス名を調べる方法は無いのでしょうか?
APIドキュメントの索引を調べたら?
>>181 Dimensionクラスにはsize()というメソッドが無いのですが・・・。
setSize()ならありますが、その親クラスにもありません。
Dimension d = size();はどういう意味ですか?
this.size(); super.size(); とか言えば伝わるか?
>>179 > メソッドからクラス名を調べる方法は無いのでしょうか?
ユニークなメソッド名なら逆引きできるけど、
size() みたいなどこでも使われる名前じゃ無理。
Dimension d = size(); なのに、なんでsize()メソッドがDimensionクラスにあると思うの? そのコードが書いてあるクラスのメソッドかスーパークラスのメソッドだろ
>>180 たしかにおしっぱなしでreleased呼ばれてる
でもすぐに次のpressedが呼ばれてるんで
ほとんどの場合問題なく動いてるようだ・・・という感じかな
厳密なupdownの動作は難しいというか、これLinux自体の問題?
それともXwindowsystemの問題?BSDとかどーなんだろ
>>180 リンク先の594のBugは3件とも見られなくなってるけど、
以前見たときは、Xが送ってくるキーイベントだから、
Java側からは押しっぱなしなのか本当に連打してるのか判断できんとか書いてあった。
>>183 わかりません、すみません。
聞く人周りにいないので、ヒントでいいから教えてもらえますか?
>>185 そうですね、考えてみればDimensionクラスな訳ないですね。
XWindowシステムが欠陥というわけかい? キー押した離したってのが取得できないって ゲームとか今まで無かったんかねぇ MacOSXはこのへんは大丈夫なんかね
>>189 >>183 の言ったことでわからないとすれば
javaの勉強を一から始めた方がいい
かりにここをだましだましで突破したとしても
そのあとわからないことだらけかと
javaというかobject指向の基本というか
192 :
デフォルトの名無しさん :04/03/15 19:34
>>189 何もオブジェクトを指定せずにsize();と書いた場合、
this.size();のthis.を省略したものと解釈する。
そのクラス自体に、sizeメソッドが無い場合は親クラスのを呼び出すので、
super.size();
扱いとなる。
thisやsuperが何を指すかがわからない場合はぐぐれ。
>>189 そのクラスはもちろんコンパイルはできてるんだろうな?
そうだったらまずは
Dimension d = size();
が書いてるソース内で検索しる。そこになかったら(多分ないんだろうけど)
そのクラスの宣言のところを見てextends Hogeとか書いてあったら、その
Hogeクラスの中を検索する、そこになかったらHogeクラスの宣言をみてextends
SuperHoge と書いてあったら(以下略)
ここまで書いてわかんないならもうやめれ。
eclipse使ってたらメソッド名選択して右クリックで「宣言を開く」すれば一発
だけどな。
>>192 ありがとうございます。
何となく分かりました。
でもアプレットのサイズを取得しても、HTMLで表示出来るのは、
<APPLET CODE = "ーーーー.class" WIDTH = 100 HEIGHT = 100>
で書いてある大きさだけなのでは?
動的にアプレットサイズを変えられるのでしょうか?
変えられないとすれば、なぜ
Dimension d = size();
とする必要があるのでしょうか?
>>194 ちみはアプレットのサイズかえたら
コンパイルし直すべきという人かい
>>190 うーん。欠陥なのかな。この辺Xlibとかプログラミングしてる人いたら、
どうなってるのか解説お願い。
漏れもJavaなら全部同じくイベントを扱えた方がいいと思うんだけど、
>>176 の594読むと、Javaの開発陣はそう思ってないみたいだし。
Hello Worldを実行すると、DOSプロンプト画面が一瞬しか表示されず ソース編集画面に戻ってしまうのですが C言語で言う、getcharのようなプログラムを一時的に停止する関数ってありますか? 使用環境はVisual J++です。 よろしくお願いします。
>>198 なんかほんとつい最近も全く同じ質問がでてたような
あとVisualJ++を必ず使わなければいけないとかじゃないかぎり
普通にj2sdk+NetBeans/Eclipseにしたほうが開発効率もいいと思うぞ
そのキーで停止って処理も必要ないし、MSVMじゃないと動かない
コードが出来る心配もない
>>199 いやぁ・・・Cは一応使ったことあるんですが
Javaは全くのドシロウトなもんで。
で、Java環境はVisual J++が研究室にあったので使ってみようかなと。
CもVisual C++で覚えたのでDOSプロンプトでコマンド打つのは抵抗あるんですよ。
>>200 いや、NetBeansやEclipseはコマンドラインベースじゃないぞ
完全フリーの統合環境
これらは何も設定しなくてもすぐに開発できる
>>202 そうですか、ありがとうございます。
そちらの方を試してみることにします。
204 :
デフォルトの名無しさん :04/03/15 22:52
205 :
デフォルトの名無しさん :04/03/15 22:55
質問させてください。 MIDPでプログラミングしているんですが、 一つのImageから指定いた領域を切り取って描画する (・・もしくは、別のImageのインスタンスを作成する) といったことを行いたいんですが、CropImageFilterは使用できません なにか手はあるのでしょうか?ご教授くださいm(__)m 要は、ゲームを作ってて、キャラクターの上下左右の向きの画像を一つのPNGファイルに書き込んで、 一つのImageのインスタンスで一つのキャラクター画像を管理したいだけなんですが、 上下左右の画像をそれぞれ別Imageのインスタンスで管理しなければダメですかね? 宜しくお願いします
206 :
デフォルトの名無しさん :04/03/15 22:56
getToolkit().createImageを使用したアプレットを、 HTML上で表示しようとしているのですがうまくいきません・・・・ なにやらステータスバーに 「error:java.lang.NoSuchMethodError:java/awt/Toolkit: method createImage(Ljava/lang/String;)Ljava/awt/Image not found」 というエラーが表示されてしまうのです。 ちゃんとjavac -target 1.1 aaa.javaという形式でコンパイルをしましたし イメージが見つからないということでもなさそうなのです。 appletviewerではちゃんと動くのですが・・・。どうすればいいでしょう。
>>204 合成文字とかサロゲートペアとか考える場合、だめ。
国際化とかをまじめに考えて無いならそれでもいいけど。
>>206 since 1.2 付いて無いから、APIリファレンスには何も書いて無いけど
java.awt.Toolkit#createImage(java.lang.String) は JDK 1.2以降に追加されたメソッドなので
JDK 1.2 以降じゃないと使えません。
209 :
デフォルトの名無しさん :04/03/16 01:32
すみません。 i-modeの絵文字(SJISバイナリコード)が含まれている文字列から、 指定されたSJISバイナリコードを検索する必要があります。 ヒットしたSJISバイナリコードを、 などのテキストコードに、 変換して文字列を返却するような処理を想定していますが、 一般的には、どのような処理になりそうでしょうか? こちらで想定しているのは、 (1) 文字列を getBytes("ISO8859-1")でバイト配列化する。 (2) 16進数で目的のバイトコードを検索する。 例) i-mode 絵文字 太陽(0xf89f)の2バイトコード 従い、1バイト目が0xf8 だった場合、2バイト目は0x9fか判定する形です ※効率が悪いでしょうか? (3) ヒットしないバイトコードは、そのまま別のバイト配列に格納していく。 (4) ヒットした場合は、xxxx 形式のバイトコードを格納していく。 (5) 最後に、バイト配列をエンコードしてStringを生成 ※(5)最後にバイト配列をエンコードするのは、全角文字などが含まれている場合、 バイト数が特定できない?為です。
Antの質問なのですが、 src/foo/*.java src/foo/bar/*.java dest/foo/*.class dest/foo/bar/*.class というディレクトリ構成で、src/foo/hoge.javaがsrc/foo/bar/huga.javaに依存しています。 hoge.javaとhuga.javaを同時に変更した場合、 <javac srcdir="src" destdir="dest"> のtargetでは先にhoge.javaをコンパイルしようとしてエラーになるので、huga.javaから コンパイルさせるために別のtargetで <javac srcdir="src/foo/bar" destdir="dest"> を作成しました。 huga.javaにはpackage foo.bar;の記述があるので問題なくdest/foo/bar/huga.classが できあがるのですが、Antはdestディレクトリにあるclassファイルをチェックしてしまうため、 このtargetでは毎回全ファイルのコンパイルが実行されてしまいます。 (本当はdestではなくdest/foo/bar/をチェックしてほしいのに) こういう場合はどんなビルドファイルを書けばいいのでしょうか。 それとも依存する場合はもっと他の書き方があるのでしょうか・・・
>>210 <javac srcdir="src" destdir="dest">
でいいはずだが。それで問題があるとすれば
記述に間違いがあるのかソースコードに間違いがあるのか。
どんなエラーメッセージがでたのささらしてくれればわかりやすいんだが。
>>210 除外集合って知ってる?
excludeやexcludefiles属性を使ってみるってわかる?
exclude="**/huga.java"
みたいな記述すればどの任意のディレクトリにあるhuga.javaを除外するよ。
>>211 antの日本語マニュアル読んだ?
そこに基本タスクとういう項目があるので
そこでjavacをクリックすればすぐわかると思うんだけどなあ。
ついでにfilesetタグとかclasspathタグのことも調べておくと便利だね。
214 :
デフォルトの名無しさん :04/03/16 12:26
JAVAではないんだが。JAVAスクリプトのほうなんですけど。 一定秒たつと、背景画像はかわるソースだれかおしえてくれませんか? 画像がずっとループするような感じで、スクリプトでもうしけないですけど。 JAVAの達人の人たなら作れるとおもって。おねがいします。
「やさしいJava」読んでいるんだが throw IOExceptionとかBufferedReaderが何かという説明が全く無い。 いきなり出てきて解説が何も無いのは、初学者は戸惑うばかり。
>>218 運が悪かったんだな。悪い本に当たったんだ。
前スレの最初でも悪い本に当たってとんちんかんな質問をしてた人がいたけど、
このスレの住人のお勧めの入門本ってなんでしょうか。
ちなみに、漏れは「独習Java」を推してみようかと思てます。
>>219 俺は、独習Java持ってるけど、おすすめできないな。
Java からプログラミングを始めた者でないと おすすめって出せないよね 残念
スレタイの【初心者】【大歓迎】って、どの程度の人を 対象にしてるんだろう・・・・・・・・・・・・・・・・・・・・・ やっぱ言語そのものの初心者かなー
>>222 N/MSX/Hu/XBASIC、C/C++、C#、そしてハンドアセンブル経験者で
javaは全くやったこと無い人が対象
たぶん
224 :
デフォルトの名無しさん :04/03/16 17:05
とりあえず結城本かエッセンシャルJavaから入れ。 話はそれからだ。
225 :
デフォルトの名無しさん :04/03/16 17:37
>>218 俺もその本でJavaはじめたがそこは無視していい
っていうか初心者にその説明しても分からんと思うし
まぁ他の言語経験してるならネットでしらべたら分かると思うけど
おれは「やさしいC」も持ってるけどCの場合はそこがscanfになってる
ただキーボードから数字やらを入力させたいだけ
>>208 アレ、-target 1.2でコンパイルしたら
確かに上記のエラーは無くなりましたが、「class not found」に・・・
まさかgetToolkit().createImageを使ったアプレットはIEじゃ動かないんですかァーッ!?
JCheckBoxでチェックボックスを作り、JBottunでボタンを作成しています。 そこで、ボタンが押された場合にチェックボックスの状態を知りたいのですが どうしたら良いですか? JCheckBoxのイベント処理にはインタフェース ItemListener で 処理できるのは知っていますが, これだとチェックボックスがチェックされるたびにリアルタイムで状態の変化を 検出してしまいますよね。 やりたい事は、ボタンが押されら、押された時点でのチェックボックスの状態を 知りたいのです。 JButtunの処理はActionListenerで行っています。ここでチェックボックスの状態を 取得したいのです。 よろしくお願いします。
>>226 JDK1.1.8 の API Doc を探し出しなさい
きっとどっかにあるから
>>227 JCheckBox#isSelected()
231 :
デフォルトの名無しさん :04/03/16 18:57
>230 無いものは使えないと言うこと。 何が無くて、あるかはAPIリファレンスを見れば一目瞭然 …というようなことを言われたのだよ。
>>231 マジですか。ではIEではgetToolkit().createImageを使用したアプレットは実行不可能という事に・・・。
グッハアァッ ありがとうございました・・・
「IEでは」とか連呼している時点で何も分かってなさそうだが・・・,まあいいか。
自分で分かってなきゃユーザにインストールさせるのも覚束ないしね
>>233-235 あ、プラグインってSwingのみじゃなかったんすか・・・うわー、モロに教本鵜呑みだ俺。
237 :
デフォルトの名無しさん :04/03/16 20:18
>236 その教本名を晒せ
吐き出しやがれこのぉ
( ・д・)つ☆ パンパーン
⊂彡☆))Д´)
>>206
誤爆?
>>237 「HTMLしか知らなくてもわかる いきなりJava2入門(塚越 一雄 著)」という本です。
あ、いや 一応他の言語もやったことあるんすけど、こういうキャッチなら相当わかりやすいだろうなと・・・
Javaプラグインを組み込めばSwingが使える、と書いてあったので「あーそうなんだ」みたいなノリで色々と。
その後は「新Java言語入門 シニア編(林 晴比古 著)」という本で、それなりの知識を付けたんすけど
今読み返してみると、前者の方Javaプラグインの説明が載っていないないなあ・・・
プラグイン、っすか。ググってみますです。
> Javaプラグインを組み込めばSwingが使える、と書いてあったので「あーそうなんだ」みたいなノリで色々と。 Javaプラグインを組み込めばSwingが使える、 と書いてあったならば、Swingのみっつーのは 鵜呑みっつーか単なる勘違いだよね。
242 :
デフォルトの名無しさん :04/03/16 21:10
>240 酷い本もあるもんだなぁ。 IEに標準で付いていたMSVMはJDK1.1.4レベル。 「プラグイン」と呼ばれているのは、JDK1.1.4でPure Javaと非互換のVMが跋扈し、 最新のバージョンのズレを問題視したSun Microsystemsが提供しているブラウザ内でのJava実行環境のこと。 これを使うとJDK1.2以降に追加された全ての機能が使えるよ。
HTMLとJavaを比べる事自体が間違ってる。 HTMLとJavaScriptならわからないでもないが
244 :
デフォルトの名無しさん :04/03/16 22:10
>243 間違った知識を持っているヤシが書いた本だからそういう風な組み合わせになったんだろ。 「レンジでチンしか知らなくてもわかる いきなりピロシキ入門」という感じがする。
たのむ、入門書でもちゃんとhtmlconverterの話を触れてくれ… jarファイルダブルクリックして起動で、GUIでポンポンとさわるだけでいいんだから面倒じゃないだろ。 「IEだとアプレットが動かない」「Javaはサポートされなくなった」などのデマはもうたくさんだ。
>>245 イマサラAppletのことを書くより、JavaWebStartの事を書いてくれる方がウレチイな。
>>246 JavaWebStartの方がずっとハッピーなのはそのとおりなんだけど、
JavaWebStartを使うにはサーバの設定が必要
(mime typeにapplication/x-java-jnlp-fileを返す必要がある、だったかな?)
なので、個人で使うには敷居が高い、かも。
要は、プロバイダに間借りしてるだけの自分のウェブサイトで
JavaWebStartが使えない可能性がある、ってこと。
ただし、これはホビープログラマがJavaアプレットを使っているという想定に基づいての
「敷居が高い」なので、あまり適切でないかもしれない。
サーバサイドJavaの入門書が売れてることを考えると、
業務で使うリッチクライアントとしてJavaWebStartを扱った入門書があったらいいね。
248 :
デフォルトの名無しさん :04/03/16 23:28
1.4.1で String aaa = "KKK"; byte[] b = aaa.getBytes("iso-2022-jp"); String bbb = new String(b, "iso-2022-jp"); これは成功するのですが、 なぜか以下の呼び出しで、例外が発生してしまいます。 Charset charset = Charset.forName("iso-2022-jp"); どうしてなのでしょうか?
250 :
デフォルトの名無しさん :04/03/16 23:43
質問です。。 諸事情でネットがしばらく使えなくて携帯から調べるのもちときついので… JAVAアプレットで画像を表示する方法は本に載ってたんですが…、JAVAアプリケーションで画像を表示させる方法が分からないんで教えてください。
>>249 ありがとうございます。java.nioとjava.langではサポートされるエンコードが
ちがうのですね。
そうすると、
String.getBytes()でサポートされているエンコード一覧を
得る方法はあるのでしょうか?
253 :
デフォルトの名無しさん :04/03/17 00:06
javac -target 1.2 Koki.java でコンパイルし、実行しようとすると 「load:Koki.classのインスタンスを生成できません。」 と出てしまいます。 しかし、普通にjavacでコンパイルしたらappletviewerで開けるのですが・・・。 問題点としては何が挙げられるでしょうか?
>>250 画像表示ってswingでてきとうにパネルでも配置して表示しておいて
それのペイントするだけでいいよ
つまりアプレットもアプリもかわらん
>>252 よくしらんけど、APIドキュメントに書いてないか?
スミマセン、アプレットの話です。 「実行」というのは、appletviewerで実行しようとした時の事です。
>254レスありがとうございます。 今日は遅いんで明日試してみます。。
>>257 HTMLConverterで変換したHTMLファイルでもappletviewerでも
同じように「load:Koki.classのインスタンスを生成できません。」 というエラーが出ます。
他には何か問題点がありますでしょうか??
>>247 Windowsがクライアントのほとんどだと考えると問題ない部分だ
mimeみてないIEが95%くらいのシェアもってるし
モジラとかでも(遠い記憶では)なんの問題なかった
>>236-245 あの本は初心者向けにはそれほど悪い本ではないよ。
いやなかったと言うべきか。説明などは大きく外したところもない。
詳細な点まではけして立ち入らないが、初心者がJava及び
オブジェクト指向の概観をつかむためにはいい本だったと思う。
だが出版年代が古すぎるので、これからあえて購入することは私はお勧めしない。
html云々は、あの当時はまだまだアプレットが(翳りを見せ始めていたとはいえ)
世の中に流布していたからだと思う。
メモ帳でhtmlを作成できる程度の知識があれば、Javaでプログラムを始めることができる、
そういう趣旨の本だったのではないかな。
ただ、塚越さんの本だから買ってはみたものの、
表題のhtml云々通り、プログラミングの経験がまったくない初心者向けという気はしたね。
>>240 のように他言語でのプログラミング経験がある人には、当時でもちょっと物足りないと思う。
>>220 良書の独習Cを読んでから独習Javaを読むとよく理解できる。
しかしあの本は物足りなさすぎる。
クローニングとかequals()とかについては詳しく載っていない。
264 :
デフォルトの名無しさん :04/03/17 13:27
str.equals("\")とやると怒られます。 \って何かあるのですか?
>>264 ユニコードエスケープの先頭か、エスケープシーケンスの先頭。
\ を使いたい場合は "\\" とか "\134" とかすれ。
266 :
デフォルトの名無しさん :04/03/17 13:51
>>265 サンクスです。
でも、ある文字列中なかの"\"を"\\"に変換する方法って何かありますか?
replase以外思いつかない。
>>253 クラスはpublicにしてる?
変なコンストラクタ定義してない?
げめん、間違い。質問読んでなかった
>>253 Javaコンソールを開いて、スタックトレースをコピペしてみちゃらん?
270 :
デフォルトの名無しさん :04/03/17 14:18
Java 初心者を脱したらつべこべ言わずにこれを嫁 BEST 5。 特に 1 は何回も嫁。 1: Effective Javaプログラミング言語ガイド 2: Java言語で学ぶデザインパターン入門 3: Javaの格言 4: リファクタリング 5: 実践J2EEシステムデザイン
>>266 方法はいろいろあるけどString#replace()でもいいよ。
文字列リテラルの中に\\と書きたければ、"\\\\"とするか
>>265 の言う通り"\134\134"とするか。
>>219 自分は
プログラム未経からCをちょっとだけかじって
JAVAに移ったんだが、そのときは「コアJAVA2 Vol.1基礎編」
をつかった。
ここで初心者が聞くクラスパス関係とかが結構書かれてるし、
サンプルが最初からオブジェクト指向を意識しているので、
JAVAを本気でやってみたいプログラム初学者にいいかもしれない。
今までアプリを2つ(ファイル操作、ゲーム・作成中)を作ったけど、
これ1冊でほぼ事足りてる。
問題は本のでかさと値段、
訳書なんで文章がそっけないところ。
273 :
デフォルトの名無しさん :04/03/17 17:08
>>256 解決法案
1:もう一回コンパイルしなおしてる
2:
アプレットをjarファイルから参照すると
同じディレクトリからの参照でデータやクラスをとってくるため
そのクラス自身のアドレスがわからない可能性がある
そのためパッケージがついているのならばそれをひとまずチェックすべし、
それでも無理なら、Objectクラスでそのクラスのある場所を探し当てれ!
274 :
デフォルトの名無しさん :04/03/17 17:09
>>269 >>273 アレ、なんか2回くらい再起動したら出来るようになりました・・・
1回再起動してもダメだったのに。PCの調子が悪かったのでしょうか・・スミマセンスミマセン
これからまたこのようなエラーが起こったときの為に参考にさせていただきますです。
ありがとうございました!
276 :
デフォルトの名無しさん :04/03/17 18:19
rss1.0から、item要素の下の要素のtextをすべて取り出して、表示したいのですが。
Namespace ns = Namespace.getNamespace("
http://purl.org/rss/1.0/ ");
Namespace dc = Namespace.getNamespace("dc","
http://purl.org/dc/elements/1.1/ ");
Element root = doc.getRootElement();
Element item = root.getChild("item",ns);
Element title = item.getChild("title",ns);
Element link = item.getChild("link",ns);
Element category = item.getChild("category",ns);
Element subject = item.getChild("subject",dc);
Element creator = item.getChild("creator",dc);
Element date = item.getChild("date",dc);
List allitem = item.getChildren();
↑
これで取り込んで、表示したいです。
System.out.println(item.getText());
System.out.println();では、できないのでしょうか?
「やさしいJava」の何章までやればいいの?
>>277 けちけちしねぇで全章やりゃぁいいじゃねーか。
279 :
デフォルトの名無しさん :04/03/17 20:45
Javaアプレットをブラウザで一度開き、エラーが出たのでブラウザを閉じました。 再編集してから保存・コンパイルし、もう一度ブラウザで開こうとすると なぜか以前のエラーが出たままの状態、以前と同じ状態のままのアプレットが出てきてしまうのです。 どうすれば初期化ができますか??
280 :
デフォルトの名無しさん :04/03/17 20:48
てst
282 :
デフォルトの名無しさん :04/03/17 22:47
プログラムを勉強し始めた大学2年生です。 JavaのプログラムないでとSAXのパーサーを呼んで 特定のXMLファイルから文字列を取得したいのですが、 本を調べてもSAXの解析中に表示する方法しか載っておらず困っています。「System.out.println( 取得したStringやvectorの表示 )」の所で取得した文字列を表示したいのですが、 パーサーのクラスをどうなおせばよいか分かりません。 申し訳ありませんが、教えていただけないでしょうか? public class MDI extends Frame { public static void main(String args[]) { public MDI() { .... try { SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser parser = spf.newSAXParser(); reader = parser.getXMLReader(); reader.setContentHandler( new MediaHandler() ); reader.setErrorHandler( new MyErrorHandler() ); } catch( Exception e ) { System.err.println( e.toString() ); } System.out.println( 取得したStringやvectorの表示 ); }
class MediaHandler implements ContentHandler { // パーサーの始まり public void startDocument() throws SAXException { } // パーサーの終了 public void endDocument() throws SAXException { ... } // XMLから値の取得 private String searchSrc( String qName, Attributes attrs ) { ... } .. }
saxわからないのならdom使えば?
>>282 class MediaHandler implements ContentHandler {
StringBuffer buffer = new StringBuffer();
void characters( char[] ch, int start, int length) throws SAXException{
buffer.append( ch, start, length);
}
...
こんな感じにすると全部の文字がパーズし終わった段階で
bufferに入ってるよな?もしあるエレメント内だけ、の場合
startElement, endElementもチェックして追加していけばいいだけ。OK?
>>285 どうもありがとうございました
うまく属性のみを取得してうまくいきそうです
ここまで教えていただいて恐縮ですが、取得したbufferを
MDI() に返す記述が分からないのですが教えていただけないでしょうか?
XML内のファイル名を取得し、MDI()で表示するというプログラムであるためにどうしても
MDI内で用いたいのです、申し訳ありません
287 :
デフォルトの名無しさん :04/03/18 09:23
ビットマップ画像の任意の座標のRGB値を取得するにはどうしたらいいでしょうか。 Image image = Toolkit.getDefaultToolkit().getImage("hoge.bmp"); まではなんとなくわかるのですが、ここから先が関連するクラスが多くてわかりません。 Imageはかなり抽象的ということなので、具体的なクラスに変換しないといけないと思うのですが・・・ よろしくおねがいします。
>>287 java.awt.image.PixelGrabber 使うとかすれ。
>>287 ((BufferedImage)image).getRGB(x,y)
こんなやりかたも
291 :
デフォルトの名無しさん :04/03/18 12:01
>>270 Javaの格言はネタが古いのがある。
クラスにfinalつければパフォーマンスあがるとか
いつの時代の話をしているんだってネタがある。
わかりやすく説明してはいるが。
どうせならJavaの鉄則やJavaの落とし穴なんかもいいんじゃないのか?
ほかに
JavaによるeXtreme Programming クックブック アジャイル開発のためのレシピ集
やテスト起動開発入門
はどうだろう。
>>289 それでもいーけど、BufferedImage じゃ無かった場合 ClassCastException 食らって終わり。
そこでGenericsを使うんですよ
標準API かメジャーなライブラリが提供されている、 定型様式への差込印刷に都合のいいものって何があるでしょう。 SVG を考えてたんですが複数行のデータを考えるとめんどっちい。
>>295 drawImageしたら透明色とか取れなくね?
考慮しないならそれでいーけど。
>>294 なんで印刷物にSVGなんだ? Apache FOPとかみたいなPDF生成するAPIと勘違いしているような。
>>296 いまさらM$JVMかってw 裁判で決着がついたことはもう考える必要なしと。
>>296 いまさら削除方向のMSVMの話されても
そもそも
>>287 が環境はなしてないし
デフォでMSVMで動かすという考え方は
いまさらWin16のアプリ書こうとしているのと同じ
あの、プログラミングじゃないんですが、 オンラインで戦車で戦うJAVAゲームで遊んでいます。 戦車の速度はみんな同じに決められています。 でも人それぞれパソコンとかの環境によって速度が違います。 速いほうが有利なので、JAVAゲームを速くする方法はないですか? JAVAゲームの速度とかは何が関係あるんでしょうか? おしえてください。よろしくおねがいします。
graphics2d.setComposite(AlphaComposite.Src);//で透過色もそのままコピー
>>286 reader.setContentHandler( new MediaHandler() );
ここを
MediaHandler handler = new MediaHandler();
reader.setContentHandler( handler);
こうして、
System.out.println( 取得したStringやvectorの表示 );
これをcatchの前にして、
System.out.println( handler.buffer );
こう。
XML上の特定の場所に書いてあるもの、ならXPath式の方が早いかも。
>>287 JDKのバージョンは?
ToolkitでなくImageIOで読んだほうがいいかも。
BufferedImage image = javax.imageio.ImageIO.read( ファイルかURL );
>>298 描画位置に tref しておいて、
defs に要素つっこめば差し込みできるからプログラミングも楽だなーと。
固定長ばっかりのはいまんとこそうしてるんです。
Batik は API で Printable も提供してくれるし。
>>301 javaに限らずオンラインで環境依存するゲームとはすごいな
ちょっと興味があるのでポインタほしいかも
作り方悪いだけかな 名前入力したりする画面ですら100%のCPU使用率とか トップページのバナーアニメでとんでもない重さとか SQLエラーが表示されているとか 個人サイトだろうからこんなもんか、であきらめるしかないかと
JDK 1.3 で プログレスバーのあるダウンロードモニタを作成しようと思い URLConnection#getInputStream()でInputStreamのインスタンスを取得し InputStream#available() と read() によって進捗状況を表示させようと思ったのですが JDK1.3ではURLConnection#getInputStream()を呼び出すと ダウンロードが完了するまでこのメソッドでブロックされてしまうようなのです。 InputStreamを取得できなければ受信バイト数も取得できないので 進捗状況を表示させることが出来ません。 なんとかして、JDK1.3でダウンロード中の受信バイト数を取得する方法はないでしょうか?
>>308 >JDK1.3ではURLConnection#getInputStream()を呼び出すと
>ダウンロードが完了するまでこのメソッドでブロックされてしまうようなのです。
ウソだぁ。そんなわけない。
>>306 そこのサイトの香具師にソースコード公開して貰うのはどうよ?
環境によってはメモリ増設で少しは早くなることもあるがw
311 :
デフォルトの名無しさん :04/03/19 17:11
JSP&ServletでEPWING形式の辞書検索プログラムを作っているんですが、 C言語用のEBライブラリに相当する機能でソースが公開されているJAVAクラスライブラリというと EB4Jだけしか無いのでしょうか? EB4Jでも十分満足してるので、無ければ無いでいいんですが 他にもあるならそっちも試してみたいと思ってます。
しょぼい質問ですいません。 SJC-Pに合格できるぐらいのレベルってどんなアプリが 作れるんでしょうか? 例えばこんなのが作れるよ〜、とかあれば教えて欲しいです。 取ったのは取ったんですが、どんなもおを作れば良いのやら… アイデアが浮かばないもんで… 下らん質問ですいませんm(__)m 諸先輩方よろしくです。
検定と実務は大きな隔たりがあるでな 国語100点とりましたが、どういった小説が書けるでしょうか といってるのと同じくらいあふぉな質問だ
合格したら作れるんではなく 作れるくらいの実力持ってるから合格するんだ本当は 合格してから人に聞いてどうする
PはJavaの基本的な言語仕様やAPIの知識を認定する為の試験だから Pが取れるレベルというのとアプリが作れるレベルというのは比較出来ない ナンセンスというものです
317 :
デフォルトの名無しさん :04/03/19 20:09
src.zipを解凍して、ソース中のコメントをmergedocで日本語化し、 デバッグオプションを指定してrt.jarを再構築すっと、 デバッグがこんなに快適になるとは思わなかった。。。
318 :
デフォルトの名無しさん :04/03/19 21:48
StringBuffer インスタンスと同じ文字列の別のインスタンスを作りたくて clone()を使ってみたんですけど、コンパイルでエラーが出ます。 Csv.java:167: clone() は java.lang.Object で protected アクセスされます。 sb = (StringBuffer)row.elementAt(j).clone(); これってどうしたら良いんでしょうか? また、一般的にあるインスタンスのコピーを作りたい場合ってどうするんですか?
319 :
デフォルトの名無しさん :04/03/19 21:59
>>312 作ろうと思えば何でもできる。
そう、OSだろうが3DMMORPGだろうが
Javaでは難易度が高いが
ウィルスやワームだって不可能ではない。
創作意欲が沸いてきたらまたこい。
>>317 src ってビルドしたら何個かエラーでるんじゃなかったっけ?
>>312 漢字検定に合格したらどんな小説が書けますかって聞いてるようなもんだ
>>318 何やってるんだそれ? rowはVectorか何か? もう少し説明がないとよく分からん。
確かStringBufferはcloneできなかったと思うから↓みたいにしたら?
new StringBuffer(row.elementAt(j).toString());
もしくは新しく空っぽのStringBufferを作ってそこに書き込む。
buf = new StringBuffer();
buf.append(row.elementAt(j));
>>318 java.lang.StringBuffer は jav.lang.Cloneable を実装してないので clone() での複製はできません。
new StringBuffer(sb.toString()); するなりしてください。
> また、一般的にあるインスタンスのコピーを作りたい場合ってどうするんですか?
あらゆる種類のインスタンスでコピーを生成できるような方法はありません。
たとえ implements Cloneableでも、Object#clone()がprotectedですので、結局 そのままじゃ呼べない場合が多いよ。 シャローコピー(フィールドの値のみコピー)をバシバシ作りたいクラスがあったら、 clone()をpublicでオーバーライドするとか、protectedであるclone()を呼び出す publicメソッド作ってくだされい。 ディープコピー(オブジェクト参照のフィールドが指すオブジェクトも全て複製)した いなら、Serialzableにして、1度バイトアレイにして作り直す手がありますね。 ですが、これはコピー対象のオブジェクトツリーすべてがSerialzableでないとだめぽ。 一方で、オブジェクトをコピーするくらいなら、同じプロパティでImmutableである オブジェクトを新しく生成する、と言う方針にしてしまう方がプログラムが単純にな ってよい場合も多いよ。性能要求がなければ、毎回newしてしまうようにしてしまう べし。
>一方で、オブジェクトをコピーするくらいなら、同じプロパティでImmutableである >オブジェクトを新しく生成する、と言う方針にしてしまう方がプログラムが単純にな >ってよい場合も多いよ。性能要求がなければ、毎回newしてしまうようにしてしまう >べし。 馬鹿なことを書いてしもた。同じプロパティのImmutableオブジェクトなら、コピー 生成する必要ないね。参照つかいまわせばよし。ゴメソ。
CSVを扱うクラスを作っています。 CSVファイルを読み込んだ内容を持つのに、 Vector にStringBufferを入れて行にして、 そのVectorをVectorに入れて表にしてます。 ファイルに書き出すときに、セルにカンマや改行が含まれてる場合、 ダブルコーテーションで括ったりするんですけど、 元の内容を壊さないようにコピーしたものを処理するためです。 new StringBuffer((row.elementAt(j)).toString()); で上手くいきました C の memcpy みたいのは無いんですね
>>326 >C の memcpy みたいのは無いんですね
なんでJava使うのですか?
>>324 > たとえ implements Cloneableでも、Object#clone()がprotectedですので、結局
> そのままじゃ呼べない場合が多いよ。
Cloneable を implements したら常に public Object clone() を実装しろ。
コレを守らないってのは同値比較しない Object#equals(Object) を
実装するのと同じぐらいダメダメ。
そこにJ なんでもない
>>329 なんで?選択肢があっていいじゃん。
Cloneableはサポートするけど、使用を許可する範囲は絞る、と言う使い方
があってもいいじゃんよ。
>>326 そもそも何で元の行をStringBufferで保持してるんだ?
普通に考えたらStringで保持しておいて,文字列をいじるときだけStringBuffer。
言われた事しかできない、決まったレールの上を走るだけの 満員電車に揺られる歯車には鳴りたくない
同値比較しない Object#equals(Object) を選択肢とかいって肯定するのか?
選択肢というのは選択したものが*有効*でないと意味がないんだよ。 無効なものは選択肢のうちに入らない。
んじゃなんでObject#clone()はprotectedナンデスカ?
>>326 そのVectorをVectorに入れて表にしてます。
new StringBuffer((row.elementAt(j)).toString());
このrowはどっちのVector?
>>337 Cloneable を implements したものしか clone() できないようにするために決まってるだろ。
Cloneable#clone() であるべきだがオブジェクトの複製はオブジェクト自体に強く依存しているから
インタフェースメソッドにすることはできないという事情がある。
>>339 そういえば、clone()のオーバーライドのしかたで
public Object clone(){
Hoge ret = new Hoge();
ret.aval = this.aval;
...
return aval;
}
見たいな書き方が横行している気がするんだけどさ、
なんでsuper.clone()しないんだろ?
まちがった、return ret;だ。 フィールドのディープクローン作業なしでいいなら、全てのクラスで public Object clone(){ try{ return super.clone(); } catch(CloneNotSupportedException e){throw new InternalError();} } でいいんじゃないかと。
>>341 オプソのソースとか、オイラのソバでよくみるんだけどさ、単なる
偶然かな。
>>340 super.clone() よりもコンストラクタを呼んでフィールドを設定したほうが速い。
ただ内部でコンストラクタを呼ぶとサブクラスを作ったときに問題が出るので サブクラスでも明示的に clone() をオーバライドしないといけない。 super.clone() としておけばサブクラスでいちいち clone() をオーバライドする必要はない。
現在、javaでサーブレットを作成していますが、今以下のような現象に悩まされています。 今、あるリクエストに対して、処理を施し、その結果をHTTPレスポンスで返す処理を 行っています。クライアントはブラウザではなく、Cのプログラムです。 しかし、あるタイミングでHTTPのレスポンスが帰らないという現象が出ています。 プログラムの構成は以下のとおりです。 1.クラインアト(C) | HTTP | +-->2.コントローラのサーブレット ここでデータの抽出を行ってその結果をオブジェクトにしてそれをfowardで データ返却用サーブレットに渡します。 | req.setAttribute(データの抽出結果オブジェクト) | +-->3.データ返却用サーブレット req.getAttribute(データの抽出結果オブジェクト)でコントローラのサーブレット からのデータを取得します。 各種処理後、res.getOutputStream().write()でレスポンスを出力しています。 (バイナリコードも返す必要があるので) 続く・・・
続き・・・ しかし、res.getOutputStream().write()で書き出した内容が吐き出されていないようです。 (エラーも発生していません) しかし、HTTPヘッダはクライアントには帰って来ています。 つまり、データ部(HTTPヘッダ最後の改行コードの後のデータ)だけがうまく吐き出されて いないようです。 この現象は毎回おきるのではなく、このコントローラのサーブレット自体 ある短い周期でクライアントから呼び出されるので、 たとえば、最初に呼び出されたサーブレットが実行している間に また新たな要求が同じサーブレットに来る場合があり、どうも そのような時にこの現象がおきるようです、。 ただこれも100%ではなく、10%ぐらいの確率です。 一番多かったのは、前の要求がデータ返却用サーブレットを実行中に 次の要求が、データ返却用サーブレット の実行に入ってきたときみたいな 感じに思えます。これも100%ではありません。 ちなみに,コントローラのサーブレット ,データ返却用サーブレット両サーブレット全体に synchronized をつければ、この現象は起きないようです。 続く・・・・
続き・・・ さきほど書いたres.getOutputStream().write()での書き出しですが、 実際は、データ返却用サーブレット の頭で //outは、データ返却用サーブレット のdopost()のローカル変数 ServletOutputStream out =res.getOutputStream(); というふうに、ServletOutputStreamまでのポインタ(?) (JAVAの場合=の場合ポインタ渡し? 値渡し?) をあらかじめ取得しておいて、最後の処理のほうで out.write(); out.frash(); out.close(); で書き出しています。 次の要求がまだ終わっていないデータ返却用サーブレットに処理が 割り込んできたことで、最初にとったoutの内容が変になっているのでしょうか?? 長文すいません。 御先輩方よろしくアドバイスのほどお願いします。
>>347 synchronized をつければ云々言ってるところからも
排他制御についてをちゃんとわかってないだろ。
ちゃんと排他制御しろ。
>>349 ありがとうございます。
synchronized の意味が100%でなくとも
少しはわかるような気がするのですが、
なぜ、synchronized がこの場合必要なのかわからないのです。
それはつまりsynchronized を理解していないかもしれませんが。。。
現象が100%であれば、納得いくのですが・・・・
synchronized をすべてにつけると、各要求が一度にいっぱいきた時
処理がまたされるわけで、できればそれは避けたく
今回質問させていただきました。
これでは質問する資格ないでしょうか?(^^;
>>350 すいません。追記です。
out.write(); で書き出している内容は
固定文字列でテストしています。
//メソッド外で定義している定数
static final String ABC = "abcdf";
out.write(ABC);
排他の影響で、out.write(); で書き出そうとするデータを
変数でテストしていると、クリア("")されている可能性もあると思われましたので
固定文字列で行っています。
おい。 待たせる必要があるときには待たせなければならないということを理解してるか?
>>352 ありがとうございます。
理解してないかもしれません。
この場合、待たせないと実現できないのでしょうか?
どうしてでしょうか??
うーん頭が混乱してきました。
すいません、 a = b++ って、bをインクリメントしてからaにbのインクリメント前の値を代入してるって事であってますでしょうか?
>>346 多分スレッドセーフになってないんだね。
よくわからないんだったらとりあえずSingleThreadModelをImplementすれ。
>>354 そんな質問するって事は、自分で試してないって事だな?
帰れ馬鹿
>>353 Servlet でインスタンス変数とかは使ってないんだよね?
>>353 セッションとかアプリケーションコンテキストとかでかぶってない?
359 :
デフォルトの名無しさん :04/03/20 13:34
>>320 JDK1.4.2_04のsrc.zipで試したけど、
xalanのパッケージを別途用意してビルドしたら、
エラーを1ファイル・4カ所くらいまでに抑えられた。
corba関連のThreadなんとかStack.javaとかっていう1ファイルだけ、
どうしてもエラーを解消できなかったけど、これだけ空クラスにして
無理矢理ビルド完了。
360 :
デフォルトの名無しさん :04/03/20 13:47
Basicの文字列を数値化するValやCdblに相当する関数をおしえて。 後、文字列をぶんかつする、Midに相当する関数を教えて。 美奈子のお願い!!
コンパイルが通らない・・・・。 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Lesson01 extends HttpServlet{ public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException, ServleException{ PrintWriter pw = response.getWriter(); pw.println("Hello World !"); } }
C:\Servlet>javac Lesson01.java Lesson01.java:2: パッケージ javax.servlet は存在しません。 import javax.servlet.*; ^ Lesson01.java:3: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.*; ^ Lesson01.java:5: シンボルを解決できません。 シンボル: クラス HttpServlet 場所 : Lesson01 の クラス public class Lesson01 extends HttpServlet{ ^ Lesson01.java:6: シンボルを解決できません。 シンボル: クラス HttpServletRequest 場所 : Lesson01 の クラス public void doGet(HttpServletRequest request,HttpServletResponse respons e) ^ Lesson01.java:6: シンボルを解決できません。 シンボル: クラス HttpServletResponse 場所 : Lesson01 の クラス public void doGet(HttpServletRequest request,HttpServletResponse respons e) ^ Lesson01.java:7: シンボルを解決できません。 シンボル: クラス ServleException 場所 : Lesson01 の クラス throws IOException, ServleException{ ^ エラー 6 個
363 :
デフォルトの名無しさん :04/03/20 13:53
364 :
デフォルトの名無しさん :04/03/20 13:55
>>362 javax.servletはJ2SEの標準ライブラリにはない。
J2EEかtomcatでもダウンロードしてservlet.jarをクラスパスに加えれ
がーん。。。。 tomcatはダウンロードしてtomcatのHELLOはできた。(右上に矢印とドライバの絵がでるやつ) J2EEは必須なの?
>>365 364の2行目の後半を100回書き取りして煎じて飲め
環境変数を下記のようにかえたがおなじコンパイルエラー CLASS_PATHの設定値 c:\jakarta-tomcat-3.3.2\common\lib\Servlet.jar
>>368 Servlet.jar → servlet.jar
ちなみに環境変数使うのやめれ。おすすめできない。
-classpathオプションとかせめてコマンドラインから
set classpath で一時環境変数使うとか。
とりあえず、入門書一冊買えよ
そもそも CLASS_PATH じゃなく CLASSPATH だろ
>>369 さん、
>>370 さん、
>>371 さんありがとうございます。
□Servlet.jar → servlet.jarになおした。
□CLASS_PATH → CLASSPATHになおした。
>>-classpathオプションとかせめてコマンドラインから
set classpath で一時環境変数使うとか。
そうなんです。入門書にはMS-DOSのウインドウを起動するごとにクラスパスを設定するやり方
として、とあるんですが、MS−DOSの画面が全画面になってしまい、
それをもとにもどすのにまた何時間もかかってしまった。
で、
c:\>startup
c:\>rem Servlet lesson (←これはいらない)
c:\SET CLASSPATH = %CLASSPATH%;TOMCAT_HOME%\lib\servlet.jar
とありました。
c:\>startup からやるとまた大画面になってしまうので3行目の
c:\SET CLASSPATH = %CLASSPATH%;TOMCAT_HOME%\lib\servlet.jar
からやったけどうまくいかない。
c:\>startup ですでにだめ。 C:\servlet>cd .. C:\>startup 'startup' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。
374 :
デフォルトの名無しさん :04/03/20 19:41
もう諦めたほうがいいよ 君には無理だから
startup ってのは Tomcat の起動スクリプトなんじゃないかい
うーん。 向いてないから諦めるけど、課題がでてやらなくちゃいけない。 で、 C:\> の次はどうすりゃいいんだ・・・。
>376 退学届を書けば宜し。
うーん。
わかりました。 月曜日に提出してきます。 みなさんありがとうございました。
ここにいるのは役に立たないクズばかりですね。 もういいです。
おいしい負け惜しみキター! 今現在クズ以下の人間がなにいっとるよ。 コレをばねに人生頑張ってください。
コピペにマジレス・・・いよいよ春本番か
何の課題か知らないが、もっと早めに講師の人に問い詰めるべきだったね。 こんなとこで訊くなんて、金の無駄遣いも甚だしい。
とりあえず、荒れるので書くのはやめるよ。 教えてくれた人ありがとう。 ではでは。
386 :
デフォルトの名無しさん :04/03/20 22:02
質問させてもらいます。 ImageIcon icon = new ImageIcon("001.jpg"); この場合、 001.jpg はどこのディレクトリに入れればいいんですか? 色々試したんですけどウィンドウが表示されるだけでどうしても画像が表示されません。 知っている方お願いします。。。
>>361 例えば、レーサードライバーが集うバーがあったとしよう。そこでは色んな
ヤツがいかにいいタイムを出すかでアツい議論が交わされていたりする。
コーナーリングでのシフトアップ/ダウンのタイミングや、どのエンジンは
こういう吹かし方をすればいい、などのハナシだ。
そこにお前がふらっとやってきて、道を右に曲がりたいのにクラクションを
鳴らしても右に曲がってくれない、などと大騒ぎしているわけだ。
誰もが最初は初心者なわけだが、もう少し真面目に勉強をしろ。
お前が聞いている問題は、どの教科書にも最初に書いてあることだ。
>>386 カレントフォルダかな。
new ImageIcon( this.getClass().getResource("001.jpg"))
として、.classと同じところに置くのが安全。
>>388 それを言うならクラスパス上なんじゃないかい
>>388 意味は分かりませんができました。
ありがとうございました。
>>389 それはブートストラップクラスの場合なんじゃないかい。
>>391 thisをロードしたクラスローダのパスからだょ
アプレットでgifアニメを表示したいのですが、自分の書き方だと 一回りアニメーションが行われたあと静止してしまうのです。 どのようなコーディングをすれば、繰り返しアニメーションが続くのでしょうか?
>>393 スレッドたててそこでループ
やさしい入門書にはたいがい書いてあるので、買って読んだほうが早いと思う
自分が持っている入門書には、スレッドについては10ページ程度しか 書いてなく、gifアニメには触れてないのでちょっと解決策が… paint()→repaint()→update()→paint()のようなループってことでしょうか?
もう一冊入門書を買ってくる。
HTTPレスポンスヘッダについて教えて下さい・・・・。
このベージは移動しました。
自動的に5秒後に自動的にリンクします。
ってやつはどうすれば・・・・?
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class move extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response)throws IOException, ServletException {
response.setContentType("text/html; charset=iso-2022-jp");
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location","
http://localhost:8080/first/newpage.html ");
//response.sendRedirect(response.encodeURL("
http://localhost:8080/first/newpage.html "));
}
}
399 :
デフォルトの名無しさん :04/03/21 14:36
String[] = {"aaa","bbb","ccc","ddd", などと書くときaaa→"aaa".と書くのが面倒なのですが、 自動で置換してくれるツールとかありますか?
401 :
デフォルトの名無しさん :04/03/21 14:46
>>393 手元だとgifで勝手にループするが。
うろおぼえだけど、たしかgifファイル自体にループするか
書くところがあったような。
Gifを何もしないで開くとちゃんとループしてくれるので、そのせんはたぶんないと思います。 処理が一つしかないので、スレッドをつくる必要性が分からないのですが…
アプレットを起動してから、HPをどれだけ移動したかカウントできる関数ってありますか?
407 :
デフォルトの名無しさん :04/03/21 21:58
JNIやコマンド呼び出し(System.exec)を使うのはナシで PureJavaでファイルのショートカットやシンボリックリンク(MACだとアライアス?) を扱うAPIはあるでしょうか?
>>404 GIFアニメってそれかよっ
勘違いしてたよスマン。394は忘れといて
ちなみにうちの環境でアニメーションGIFを表示させると
特に変わったことしなくてもリピート表示されてるよ
(なんかやたら速いけど)
>>405 java.net.Socket
のgetInetAddress()でそのシステムがどこに接続してるかわかるから、変わったら
数えるやつ作れば。
411 :
デフォルトの名無しさん :04/03/21 22:08
>>409 作ったり削除したり
あるファイルやフォルダがリンクかどうかを識別したりしたいです。
>>411 ソレってJavaVMの範疇じゃないから、扱えないような気がする。
そもそもショートカットやシンボリックリンクはソースの変更なしで
参照先を変えるためのものだしなぁ。。。すまん、力になれん。
>>407 今は無理だし、幾つかのOS固有の仕組みのようなものは
先々まで無理チャウかな。MSのショートカットはOLEだし。
>>411 そんな思いっきり環境依存するものが、Pure Javaの範疇にあるはずがない。
Pure Java==環境非依存
>>410 おお、ありがとうございます。
>>406 別に悪いことしようとしてるんじゃなくて、面白いものを作ってみたかったんですよ
すみません。ListにAddしてからListの中身をソートしたいのですが、 どうしたらよいでしょうか?
>>416 Collections.sort( List list )
Collections.sort( List list, Comparator cmp )
419 :
デフォルトの名無しさん :04/03/22 14:18
finallyの必要性がよくわかりません。 try { 処理1 } catch (NumberFormatException e) { 処理2 } finally { 処理3 } 処理4 と try { 処理1 } catch (NumberFormatException e) { 処理2 } 処理3 処理4 はどう違うのでしょうか。
>>419 処理2が「throw e」だった場合を考えてごらん
Javaってさ、 画面のスクリーンショットはとれないんですか? 画面のスクリーンショットを撮って JPGで保存する ってのをやりたいです。
java.awt.Robot#createScreenCapture
class getter { public static void main(String[] args) { for (int i = 1; i <= 10; i++) { System.out.print(i + "getキタ"); for (int j = 0; j < i * i; j++) { System.out.print("━"); } System.out.print("(゚∀゚)"); for (int k = 0; k < i * i; k++) { System.out.print("━"); } System.out.println("!!!!!"); System.out.println(""); } } }
普通にコピペするとエラーの山(・∀・)
425 :
デフォルトの名無しさん :04/03/22 17:35
PrintWriter pw = response.getWriter(); をした後って pw.flush(); pw.close(); をしないとダメですか?
>>420 ありがとうございます!
いろいろ実験してみます。
>>425 うんこして水流さないんだったら close しなくていいよ。
どっちも後で少し困るかも。
>>427 うんこなら次の人が流してくれるんでは?
>>427 Servletって自動洗浄じゃなかったっけ。
たしかに回り続けないね でも、アニメgifで動画やろうと思ったことないからなぁ こまかくフレーム制御とかできんし
VMに依存してるのかも。 Mac OS X10.3(JDK1.4.2)だと、 Safari、InternetExplorer、appletviewerの どれでも回り続けてる。
>>429 Servletはリクエストが終わってもプロセスは終了しない。
ゆえにファイル処理を close しないと、そのファイルがロックされて、次のリクエストにアクセス不能になったりする。
環境依存ですか…_| ̄|○ 自分のVMはJDK1.4.2なんですが、だめですね Java先生('A`)ノ
>>434 そうか、GCでcloseされるまで握りっぱなしか…
書いて直ぐ読むようなマヌケな処理じゃなきゃ問題ないよね?
>>429 自動洗浄で良さそうに思うぞ。
ServletResponseの内部的なストリームはリクエスト処理し終わった時に解放されて、
その上位に被さったフィルタを明示的にフラッシュ/解放する必要はなさそうな。
JSPコンパイラが吐いたServletコードのやり方が正解と思われ。
>>436 よくわからんけど、そのGIFファイルおかしいっすよ
ほんとだ それgifがおかしい 自分でつくったgifまわすと問題ない swingでボタンとかのアイコンにアニメgifセットすると勝手にずっとアニメーションしてるんですな なんかおもろい
>>438 ということはフラッシュ/開放は作法的に書くものであって
実際のメモリリークには関係ないってことですか?
public class Test { public static void main(String[] args) { String strTmp="c:\\aaa\\ccc\\vvv.jpg"; String strRet = ""; strRet = strTmp.replaceAll("\\",">"); System.out.println(strRet); } } なぜ、\を置換できないのでしょうか?? 教えてください。
ちなみに 以下がエラーです。 java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \ ^ at java.util.regex.Pattern.error(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.util.regex.Pattern.<init>(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.lang.String.replaceAll(Unknown Source) at Test.main(Test.java:20) Exception in thread "main"
ソース上の "\\" →プログラム内の "\" → regex 内では不正な文字。 ソース上で "\\\\" → プログラム内では "\\" → regex では "\" たぶん。しらんけど
>>444 なりました!!
ありがとうございます。
>>444 スレ違いだがシェルスクリプトの中でsedを使おうとして似たようなことになった
gifがおかしいというのは、どうやったら分かるのですか? あと、それを治せるソフトとかがあれば教えていただけると…(ry
そんなの Java スレで聞かれてモナー
>>447 アニメーションGIFを作成するソフトとか
フリーであるから、
それで中のぞいてみては?
一度GIFをばらして、再度アニメーションを作ってみるとか。
・・・gif・・・アニm・・・Mak・・・Winny・・・ゲフンゴフン
とりあえずFireWorksMX2004で作ったアニメGIFは問題ない そのアニメgifどうやってつくったかが問題だな
439さんや、440さんはどうしてgifがおかしいのか分かったのかな〜と思ったのですが… とりあえず、フリーのやつ探してみます。 gifはフリー素材からもらって来た物なので詳しいことは…
下のようなディレクトリ構造になっているプロジェクトルート/xxprojectから、 WEB-INF/libにあるaaa.jar、bbb.jarをclasspathに加えつつ、 jp.co.xxx.zzz.util.XXUtilを実行するには、javaコマンドをどのように打てばよいのでしょうか? /xxproject /WEB-INF /classes /jp /co /xxx /zzz /util /XXUtil.class /lib aaa.jar bbb.jar antのjavaタスクで <java classname="jp.co.xxx.zzz.util.XXUtil" classpath="WEB-INF/classes" > <classpath> <fileset dir="." includes="WEB-INF/lib/*.jar"/> </classpath> </java> とすれば走るのは確認できたのですが、素のコマンドではどのようにやればいいのやら、 皆目見当がつきません。
455 :
デフォルトの名無しさん :04/03/23 14:24
Timer timer = new Timer(); timer.schedule(new TestTimerTask(), 0, 5000); タイマーを使った場合スレッドが作られるんですが このスレッドの名前を取得する方法ってどうやるんでしょうか?
>>454 Antのjavaタスクのclasspath属性は、javaコマンドの実行時に -classpathオプションに使われます。
だからこんなかんじ(ただしclasspath要素に対応する指定が無いので不完全)。
java -classpath WEB-INF/classes jp.co.xxx.zzz.util.XXUtil
classpath要素はワイルドカードの展開を考えるとちょっと面倒だけど、
aaa.jarとbbb.jarだけでよいのなら一つ一つ指定すればいける。
java -classpath WEB-INF/classes:WEB-INF/lib/aaa.jar:WEB-INF/lib/bbb.jar jp.co.xxx.zzz.util.XXUtil
UnixやCygwinのシェルがつかえるならこんな方法も。
java -classpath WEB-INF/classes:`ls WEB-INF/lib/*.jar|xargs|sed 'y/ /:/'` jp.co.xxx.zzz.util.XXUtil
ディレクトリやクラスパスの区切り文字に「/」「:」を使うのか「\」「;」を使うのかは自分の環境に合わせて変えて。
>>454 まずはコマンドラインで「java」とだけ打ってみよう。
使い方が出るから英語を嫁。
話はそれからだ。
>>455 TimerがThreadのサブクラスなら
「timer.getName()」では?
java.util.Timerです。 getNameはないんです。
をぉ〜 そんなクラスが標準であったんか・・・ 知らんかった_| ̄|○ スマソ
リフレクションでも使わない限り無理なんじゃないかな。激しくJRE依存だけど。 それよりも、なんでそんなことをしたいかの方に興味がある。Timer#cancel()じゃ不満?
>>455 名前取得したいのならわざわざ無名クラスにする必要自体がないのでは?
タスクはTimertaskを継承して作るんだから自分で管理すれば問題ないよ
符号無しのbyteが存在しないということを知ったのですが、 どうにかbyteを元に作り出すことは可能でしょうか? unsignedbyte A; A = 250; A.toString(); など一般の変数型と同じ(上は間違えがあるかもしれませんが)ように 使いたいです。ご存知の方、ご教授お願いします。
>464 Timerが動いているかどうかを別から取りたいんです。 なんかいい方法ないかな?
>>465 符合無し byte 型に期待する機能による。
> unsignedbyte A;
> A = 250;
これがしたいだけならプリプロセッサ使うのが近道、かな?
Java のプリプロセッサに関しては探すんでも作るんでも好きにしてください。
468 :
デフォルトの名無しさん :04/03/23 17:21
質問です。 IDE から直接貼り付けられる GUI の Beans を作っているのですが、 デザイン時に動かしたくない処理があるんです。(←メモリの確保なんですが) Beans 側から今デザイン時かどうかを判定する方法ってないでしょうか。 NetBeans だと貼り付けられた時点でコンストラクタが呼び出されてしまうんですよね……
>>468 それよりも、GUIビルダが認識しないメソッドでその処理を行うようにしたら?init()とか。
>>465 符号なしの処理を期待するところだけshortとか使えばいいだけでは?
>>468 java.beans.Beans#isDesignTimeとかそういうこと?
>>466 Timer&TimerTaskでは動いてるかどうかは管理できない
外部から状態を取得したいと言うのは
TimerTaskのほうから通知してやるしかない
定期処理に使うTimer処理で動いてるのを別のタスクから
取得しに行くってのはあんまり必要な場面が思いつかないけど
>>456 ,457,463
よくわかりますた。
javaコマンドでの実行に成功しました。
…やっぱりantは便利だと知りますた。
統合環境は使わないのかな? ま、まずはコマンドライン覚えてからのほうがいいとは思うけど OJTという単語の元に好き勝手ぐちゃぐちゃになってる現実を見るとねぇ
>>438 HTTPレスポンスの出力ストリームのクローズは、サーブレットコンテナに任せる
のが基本。コンテナによっては、クローズ処理をサーブレット内で行わないように
推奨している場合もある。
ただしストリームすべてに当てはまる話ではない。自分でオープンしたものは自分
でクローズする、他人がオープンしたものは、クローズもそいつに任せるのが原則。
使用後クローズすることが明示されている場合はクローズするようにする。
>>467 ありがとうございます。プリプロセッサについては調べてみます。
しかし、作った符号なしbyte型で一般のbyte型と同じ機能が欲しい場合は
別の手順が必要ということですか?
javaの場合基本的な考え方がbyteはバイナリ、charが文字 intが数値演算用だからな cの用にバイト数とかで考えるようなものじゃない まぁ、そのせいでJNIなどのやりとりが面倒になってるのは確かだけどね 業務系だけなら符号付きかどうかはだいたい問題にならないけど 速度が欲しいときやJNIやると符号付きも欲しいんだよな じぇねりくすとか拡張forよりこっちがほすい・・・
質問です。 RMIを利用してクライアントとサーバー間で ファイルのやり取りをしたいのですが ファイルの送信状況(何%が送信済みなど)を取得することは 可能でしょうか? RMIを見る限り、メソッド間のオブジェクトのやり取りに しか見えないのでどこで送信状況を把握すればよいかわかりません。
>>478 「メソッド間のオブジェクトのやりとり」の状況を見ればいいんじゃないの?
>>478 RMI を利用してファイルをやり取りするというのが激しく謎。
>>455 TimerTask 内で Thread.currentThread().getName() でもやれば?
482 :
デフォルトの名無しさん :04/03/23 23:37
Appletでスレッドを使ったゲームを作ってみましたが、ブラウザウィンドウを2つ開くとゲームが倍速で動いてしまいます。 何故?
それスレッドでstaticやクラスインスタンス変数つかってそうだな servletでやってはいけないことがなにかというのと似ている
execcmd="java -classpath hoge huga"; java.lang.Runtime.getRuntime().exec(execcmd); とやって hoge/huga.class を呼ぶのはできたのですが、 huga.class の中でカレントにファイルを出力すると huga.class のカレントではなく呼び元のカレントに出力されてしまいます。 絶対パスを使わずにカレントディレクトリの移動はできないのでしょうか。 ピュアJavaにしたいのでバッチファイルやシェルスクリプトはナシの方向で よろしくおながいします。
>>484 Runtime#exec 使っててどこがピュア Java なのか。
というのはおいといて安直な方法だと
execcmd を "cd dir; java -classpath hoge huga" とすればいいでないの。
>>484 ,485
ワーキングフォルダは指定できるわけだが。
Runtime#exec( String command, String[] envp, File dir)
2番目はnullにするよろし。
>>485 >Runtime#exec 使っててどこがピュア Java なのか。
Javaアプリからそのマシン上で動くコマンドなら何でも呼べる、という
まぁランチャーみたいのを作ってるですよ。
File path=new File("hoge");
execcmd="java -classpath hoge huga";
java.lang.Runtime.getRuntime().exec(execcmd,null,path);
という形で自己解決できちゃいました。
>"cd dir; java -classpath hoge huga" とすれば
こっちの方が遥かに簡単。。。_| ̄|○
あ、、、ありがとうございますたw
・・・とか書いてる間に
>>486 さんもありがとうございました。。。
ワーキングフォルダを指定した場合は "-classpath hoge" はいらなかったです。。
490 :
デフォルトの名無しさん :04/03/24 02:56
すみません。教えてください。標準入力から文字を受け取り整数にしてSQLでデータベースにアクセスしたいのですがエラーがでて困っております。 import java.sql.*; import java.io.*; public class Hello{ public static void main(String args[]){ int a = 0; String s; try{ BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); s = buf.readLine(); a = Integer.parseInt(s); }catch(IOException e){ e.printStackTrace(); } try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection("jdbc:odbc:hello"); Statement stmt = con.createStatement(); String sql = "SELECT * FROM DB WHERE bangou= " + a +""; ResultSet rs = stmt.executeQuery(sql); →処理続く エラー内容 Exception in thread "main" java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:489) at java.lang.Integer.parseInt(Integer.java:518) at Hello.main(Hello.java:13)
> Exception in thread "main" java.lang.NumberFormatException: For input string: "" 入力文字列が空文字列だから数値としてparseできないって言われてる。
質問です。 Javaを配布するときに、 ClassやJarだと、ランタイムを入れないといけないし 初心者にはわかりにくいです。 なので、Windowsの実行形式(exe)に変換?する ほうほうってありますか?
public void assign(Command command) { synchronized (lock) { list.addLast(command); } notifyAll(); } public Command accept() { while (list.isEmpty()) { try { wait(); } catch (InterruptedException e) { ; } } synchronized (lock) { return (Command) list.removeFirst(); } } public void run() { while (!stopped) { Command command = accept(); } } なぜ止まるか指摘してくれませんでしょうか
実行部分はしょらないほうがいいですか? チェックとかしすぎで見難いと 別スレッド内でやつを捕まえて呼びたいんですがあ
>>493 前後がわからんから単純なミスなのか難しい問題なのかもわからんが、
以下のように run() の中にデバッグ出力を埋めてみれば何かわかるかも。
public void run(){
System.out.println("stopped="+stopped);
while(!stopped){
System.out.println("stopped="+stopped);
Command command=accept();
}
} // 見難くてもいいからソースに全角空白入れるのはヤメレ
>>492 前スレだったかで、JREと一緒に自分のアプリを配布する話してたよ。
解凍してexeを実行するだけでOKみたいな手軽な方法とか言ってたような。
不要なファイルを削ったJREと、java.exeをキックするexeを作るかDLするかして、
自分で作ったクラスと一緒に配布するみたいな話だった。
>>496 全角でインデント、見やすくていいと思うんだけど、ダメ?
>>498 親切にもコピペして実行してくれようとしている人に失礼でしょ
どっちでもいいや。エディタに 貼り付けてオートインデントにしても、 貼り付けて全角空白->半角空白の置換にしても 手間はほとんどかわらん。
四択か五択ぐらいのクイズのソースってどっかにあります?
>>499 そうか?全角を半角にもしくはタブにちょちょいと変換できる知恵もないやつに、
コピペして実行してもらって何が分かるんだ?ふつーは
>>500 みたいにするぞ。
504 :
デフォルトの名無しさん :04/03/24 12:57
public class A{ B b = new B(); } class B{ int foo; } class C{ //bar = A.b.foo; } こんな感じのことをしたいのですが、どうするのが一番なんでしょうか。
>>504 なにをしたいのかぜんぜんわからないのは漏れの頭が悪いせいか?
みんなわからないからレスがつかない
507 :
デフォルトの名無しさん :04/03/24 13:51
>>504 目的を提示せよ。
君の示したそれは手段(のできそこない)でしかない。
>>504 > B b = new B();
static B b = new B(); //アクセス修飾子は自分で適当なの付けてくらさい。
にすればいーとかそーゆー事ではなくて?
510 :
デフォルトの名無しさん :04/03/24 15:23
static public class A{ B b = new B(); } class B{ int foo; getFoo(){ return foo; } } class C{ bar = A.b.getFoo; }
>>510 90点
class C{
int bar = A.b.getFoo();
}
>static public class 今時のJavaは便利になったのでつね :-)
>>512 今も昔もトップレベルの class 宣言には static は付けられない。
514 :
デフォルトの名無しさん :04/03/24 16:11
>>515 つーかムキになんなよ。オートインデントぐらいエディタでみんな持ってるだろ
#使ってやる奴は優しい奴だ
動きのおかしいのは、試さずともソース見ただけで分かる。
貼られた内には原因が無い、ってときも、大抵分かる。
全角だろうが何だろうが、理牌して読みやすくしてくれさえすればいい。
ムキになってるんでなくて、ヒマだったからw
むしゃくしゃしてやった
バールのような物で作った
まさか、こんなことになるとは思わなかった
職業・塗装工
大変なことをしてしまったと思った
>>510 AにgetFooを書くんじゃなくて、Bに書くのか。
JDK1.3でServletとアプリケーションにてシリアライズなオブジェクトの通信を行いたいと思っています。 オブジェクトのサイズが大きくなることもあるので、ダウンロードの進捗率を表示させたいのですが ServetからObjectOutputStream#writeObject()を行って、 アプリケーションでURLConnection#getInputStream()を行うと ストリームをすべて受信するまでgetInputStream()でブロックされて 受信中のバイト数を取得できないのです。 JDK1.4ではブロックされず、InputStreamのインスタンス取得後にダウンロードを行えているようなのですが JDK1.3でブロックされずに取得する方法はないでしょうか?
>>525 getInputStream でブロックするってありえるのか?
>496 おっしゃるとおりです。すいません!以後気をつけます で、493の内容ですが、>496さんのご指摘の所はfalseでした。 いやむしろpublic void stop()でtrueにするの忘れてて常にfalseになってました それはまーいいとして。 多数のスレッドからリクエスト追加しても止まらなかったり。 1つから入れるとなぜか処理されなかったりと理解に苦しみます。 根本から勉強しなおしてきます。なんかそれっぽい本御存知でしたらご一報ください
>>525 つい最近同じようなのみたきがするが気のせいかな
>>529 そもそも493がどういったことやりたいのか
どうやってよばれるのかわからん
一つのソースファイルが肥大化してきて、テキストエディタでは辛くなってきました。 いくつかのファイルに分割したいのですが、よくわかりません。 単純にクラスごとに分けて.javaにすればいいわけじゃないんですよね・・。 どこか参考になるサイトはありますか?入門系のぺーを見たら、 「パッケージ」が近いと思ったんですが、読んでもよく分からず・・。
532 :
デフォルトの名無しさん :04/03/25 00:47
>>531 似た機能をカテゴリとしてまとめて、パッケージ分けして、
クラスごとに分けて.javaにしる。
まずはこれだけでも十分。
>>531 C++ なんかと違って一クラス一ファイルが基本だぞ。わかってるか?
>>531 まさかとは思うが、main() の中ですべてやってたりはしないだろうな?
私もzipファイルの中の日本語のファイル名に悩んでいます。 ZipFileをどうやって入手してどのようにJavaで使用するのか 教えていただけないでしょうか。よろしくお願いします。
クラスごとにわけて、って自分で言ってんだから ファイル内に併記してるだけだろ たぶん
>>535 私「も」って言ってるぐらいだから
>>79 以降の回答は読んでるんでしょうな。
それにしても論点が分かりません。
圧縮されてるファイルの日本語名の話かと思ったら入手という意味不明な単語。
1日悩んでからもっかい来て下さい。
あ、ごめん分かった。 zip ファイルは *.zip なファイルのことで、 ZipFile はライブラリのことか。脳が死んでた。」 Apache Project のページに行って、Ant の jar パッケージを拾ってきて、 jar ファイルへのパスをコンパイル時と実行時に classpath に足す。
539 :
デフォルトの名無しさん :04/03/25 11:37
PropertyResourceBundleをMapに変換するいい方法はないでしょうか? Javaの標準機能か、Jakartaもので。
540 :
デフォルトの名無しさん :04/03/25 11:46
初心者なのですがちょっと分からないことがあるので質問させていただきます。 JAVAでアプレットのコードを作成しコンパイルしました。 エラーはなく、クラスのファイルが作成されたので、htmlのコードを作成し MS-DOSからapplet viewer 000.javaと入力しました。 本にはapplet viewerプロパティファイルが読み込まれていません、と出ても 気にするなと書いてあったのですが、その後入出力の例外が発生しました。 と、書いてあって起動がしません。コードが悪いのか、htmlのコードなのか 入出力の例外が出るような処理は入れてないはずなのですが…、入れないからなのか。 分かる方宜しくお願いします。長文ですみません。
>>540 お前の頭が悪い
なんのExceptionが出るのかもかかないでお前以外の人間にわかるわけがないだろ
1. 数字から始まるクラス名など不可。 2. appletviewer には html を指定する。 3. なんで「入力しました」のとこ、applet viewer と単語で切れてるねん。 入力したもの表示されたものはできるだけ正確に伝わるようにコピペせい。
543 :
デフォルトの名無しさん :04/03/29 12:06
アプレットを実行するときに、Sunの環境だと普通に行えるのに、 Microsoftの環境だとNoClassDefFoundErrorが発生する不具合発生。 ↓ javacでコンパイル時に"-target 1.1"を明示的にオプション指定する。 ちなみに環境: OS WinXP SDKのバージョン v1.4.2_03 msjava.dllのバージョン 5.0.3810.0
544 :
デフォルトの名無しさん :04/03/29 12:15
いや、そうでもなかったか。
>>493 とりあえず、
while (list.isEmpty()) {
この部分でlistの同期漏れかな。
547 :
名無しさん@Linuxザウルス :04/03/29 14:57
テキストからDOMツリーを構築しようとしています。 そのテキストに <root> <hoge>data</hoge> </root> ここにごみ こんな感じで「ここにごみ」のところに余計な文字が入っている場合に SAXParseExceptionが送出されてしまいます。(無視して構築したらぬるぽが発生) <root>タグ以下しかいらいないので、ゴミは無視したいのですが、 何か良い方法はないでしょうか?
>>493 493だと
return (Command) list.removeFirst();
この部分でnullポインタが返っていた可能性がある。
多分、下みたいにしたら大丈夫だと思う。
public Command accept() {
Command dest;
do {
try {
wait();
} catch (InterruptedException e) {
;
}
synchronized (lock) {
dest = (Command) list.removeFirst();
}
} while (dest == null);
return dest;
}
それと、スレッドの個数とlistのサイズによっては、
notifyAll()じゃなくてnotify()の方がいいかも。
初歩的質問すいません。 OutOfMemoryErrorってキャッチ出来ますか?
550 :
デフォルトの名無しさん :04/03/29 21:44
>>549 できます。が、回復させるのは多分無理なので、落すのがよさそう。
551 :
デフォルトの名無しさん :04/03/29 21:45
>>547 DOMのルールに違反しているので無理でしょ。
ゴミも含めてなんかてきとーなタグで囲っとけ。
552 :
デフォルトの名無しさん :04/03/29 21:49
>>493 notifyAll()したと気に、相手がwait()にはいってくれているとは限らん。
Javaのスレッドのコンテキストスイッチは、非常に何の脈絡もなくにいろん
なところで起こる。JVMアセで1ワードあれば同期ミスする可能性アリ。
javaって遅いような気がします。 VMごとコンパイルしてバイナリに出来ないのでしょうか?
>>553 ぐぐれば有償無償のコンパイラがすぐ見つかるだろう。
それらは起動時間は短縮してくれる可能性があるが
それ以上の過度の期待はしないように。
ガベージコレクションのオーバーヘッドは消せないからだ。
なぜなら、
ガベージコレクションの処理が不要になるように最適化されたコードを
そのコンパイラが出力することが可能ならば
SunやIBMのコンパイラにもそれができない理由はないからだ。
ただし
ガベージコレクション処理を実行ファイルに静的リンクするか
共通DLLやsoに追いやるかぐらいの自由度は残されているだろう。
http://www.pandora.nu/tv/src/img20040329235621.txt まだ途中で申し訳ないのですが、わからないことがあるので教えてください
上のソースで、Testを実行すると、なぜかウィンドウが表示されます
プロジェクトの中に入っているソースの中で、ウィンドウを表示させるのは
WinQuizboxだけなので、多分それが呼ばれたのだと思いますが、
それはTestで呼び出しているほかのどのクラスにも(もちろんTestにも)
WinQuizboxを呼び出しているところはありません
AlgorithmはWinQuizboxを継承していますが、引数つきコントラスタ
しか使っていませんし、もし引数つきコントラスタがよばれたときにも
空のコントラスタを用意しているので、WinQuizboxが呼ばれることがありません(と思います)
それでは、なぜウィンドウが表示されるのでしょうか
どのファイルが原因かわからないので、全部挙げます
//ちなみに違うファイルのものをひとつにまとめてあるので、
//インポート文とかは各クラスの上にあることをご了承ください
今見たらかなり見づらい… ご承知ください ついでに555げとズサー
557 :
デフォルトの名無しさん :04/03/30 00:11
>>555 Algorithmのコンストラクタ開始時に、暗黙のうちにsuper()が呼ばれるんだよ。
それを防ぐにはどうすればいいのですか
559 :
デフォルトの名無しさん :04/03/30 00:14
>>558 1.明示的にsuperクラスの別のコンストラクタ呼ぶ。
2.継承するのやめれ。
わかりました とりあえずAlgorithmでやろうとしたことを、WinQuizboxにやらせて、 どうにかしようと思います ありがとうございました
562 :
デフォルトの名無しさん :04/03/30 02:50
javaで、あるページにHTTPアクセスするにはどうしたらいいでしょうか?
HTTPアクセス出来るようにコードを書く
564 :
デフォルトの名無しさん :04/03/30 03:23
..
─、、 (゚皿゚ O) ガオー! / ̄/ >> | ̄| | | @/\ \@/ /'/ /'/ | | | | -┛ -┛
JVMの最大ヒープサイズを増やすには 何をどういじればいいのでしょうか?
すみません、教えてください。 読み込んだファイルをBlob型でテーブルに取り込もうと思っています。 FormFileからInputStreamに取得してBlobに値を変えたいのですがどうしたら良いでしょうか?
>>568 なぜヒープを増やすの?その理由によっては別の解決策があるかもしれないぞ。
>>569 Blob型って何?
>>570 配列に格納する時にOutOfMemoryErrorが発生してどうにもならない状態です。
格納する以外に実装法はないから
それが一番簡単かと。
572 :
デフォルトの名無しさん :04/03/30 17:35
XmlDocumentの内容をString型にする方法ってありますか?
>>571 >配列に格納する時にOutOfMemoryErrorが発生してどうにもならない状態です。
>格納する以外に実装法はないから
だからなぜそうする必要があるのか質問したんだが。
なぜ格納する以外に実装方法がないと言い切れるの?
そういう思想だとどんな言語でもメモリ不足になるよ。
もうちっと具体的に説明汁。
578 :
デフォルトの名無しさん :04/03/30 18:21
うーん、わかるように質問できませんが・・・。 環境変数について教えて下さい。 TOMCAT_HOMEとJAVA_HOMEはどちらが先に読まれるんでしょうか?
>>578 アプリケーションによる。としか言えないな。
最低限以下のことは書いてみて。
1. やりたいこと
2. 1をするために使用したソフト(JRE、サーブレットコンテナ、ライブラリを、バージョンも含めて詳しく)
3. 困っていること
うう・・、ありがとうございます。 1.サーブレットとJSP、MYSQLを使いたい(最終目標) 2.トムキャット3.3.1とJAVAはインストールした。(バージョンは沢山ある) 3.沢山ある・・・。 ■環境変数のドライブのCは大文字小文字区別するのか? ■トムキャットとアパッチの連携のさせ方(ネコと羽の絵を表示するところまではできた)
>>576 ありがとうございます。上のサイトは既にチェック済みだったんですが
FileInputStream input=new FileInputStream(file);
statement.setBinaryStream(2,input,(int)file.length());
を、FileInputStreamをInputStream使おうとしたらlength()は使えないとエラーが出てしまって混乱してました。
XmlDocument doc = new XmlDocument(); ByteArrayOutputStream out = new ByteArrayOutputStream(); ObjectOutputStream oout = new ObjectOutputStream(out); oout.writeObject(doc);//Exception oout.close(); このdocをStinrgに変換できない。例外が出てしまう。 どうやればStringにできますか?
>>582 例外の表示は読んだか?
意味がわからないのならここにコピーペーストすれ。
>>580 Javaで、DBを使用するWebアプリケーションを作りたい、
DBはMySQLを使いたい、っていうのがやりたいことかな。
・環境変数のドライブレターは大文字小文字の区別はなかったような気がする。
・Apacheとの連携はパフォーマンス上の理由から行うことなので、
JavaのWebアプリ開発の学習が目的であれば、
連携自体を目標にするのでなければしなくてもいい。
がんばりたかったらこの辺を参考にしてみて。
ttp://www.hellohiro.com/apacheservlet.htm これはLinuxでの設定だけど、jk2のコンパイルより後の設定はほぼ一緒。
それから、Tomcatを使うなら、特別な理由が無い限りは4.1系を使った方がいい。
ただ、3.3.1と微妙な違いがある(ディレクトリ構成が違う、invokerがデフォルトで無効など)ので、
手元の入門書との違いに煩わされたくないなら3.3.1のままでもいいけどね。
そういや3.3系は3.3.2が出たな。
>>584 さん、ありがとうございます。
どういうわけか、環境変数の設定で大文字のCではつながらなかった。
小文字のcではつながった。
(Win2000)ヴァージョンや環境が何通りもあるのでなんともいえないけど・・・。
で、質問が漠然としすぎていましたが、お答えの情報は役立てることにして、
少し勉強してためしてみてみます。
>>586 全角の「C」とかいうオチじゃないだろうなぁ…
おすすめの本教えてください。 他の言語が使えるので、「入門書」でないものをお願いします。
>>588 その「他の言語」が何か、「使える」度合いがどうだかで大きく異なる。
C でも、C なのか C++ なのか。まさか C# ではないと思うがどうなのか。
それで何を作ったのか。
Perl でも 4 と 5 では全然違うし。
JavaScript をやってたんなら構文以外は一切忘れちゃった方がむしろいいし。
これまで「Cをやってました」と言った奴でろくな奴はほとんどいない。
Javaで何をするかによる。 文法なんかは大したことないと思っているんだろ? ならどんなものを作るかによって参考になる書籍は違う。
もし仕事で使うなら、Servlet, JSP, Applet, J2ME となれば、話は全然違うし。 DB, XML などと絡めて考える際は Java かどうかなんてほとんど関係ない、 これまでどんなことをやってきたかによるわけだが、果たしてそれが分かっているか。 現時点で分かってないなら、「他の言語が使える」なんて、 「3歳まで岡山にいました」とかと同じで、ほとんど意味無い情報。
>>584 >>587 もはやスレ違いだが
Tomcatを今から始めるなら間違いなく4.1
3.x達よりは4.1の方が成熟度が高い(あたりまえ?)
それと設定ファイル周りが微妙どころか結構違う。
仕様策定に右往左往したらしいところが見て取れる。
ちなみに
3.3.1で動いたものを試しにに3.3.2で動かそうと思ってダメだった。
移行必須じゃなかったのでちゃんと調べてないので原因不明。
なんかうまくいかない・・・・。トムキャットが立ち上がっても何行もガーっと 表示されます。Embeded Tomcat:Startup time XXXXがありません。 全部0クリしてやり直すしかないのか? やっぱ3.3.1でやるってことは致命的にダメなのでしょうか? 入門書ではTomcat単体で必要十分なので最初はこれでいきたいんですけど・・。 「ユーザ変数の編集」(上段)と「システム変数の編集」(下段)どっち をかえればいいの? 総当たり戦(3通りまで) ↓ ユーザ変数:PATH c:\jdk1.3.1\bin システム変数:TOMCAT_HOME c:\jakarta-tomcat3.3.1 システム変数:JAVA_HOME c:\j2sdk1.4.0 ユーザ変数:PATH c:\jdk1.3.1\bin システム変数:TOMCAT_HOME c:\jakarta-tomcat3.3.1 システム変数:JAVA_HOME c:\jdk1.3.1 ユーザ変数:PATH c:\jdk1.3.1\bin;c:\j2sdk1.4.0\bin システム変数:TOMCAT_HOME c:\jakarta-tomcat3.3.1 システム変数:JAVA_HOME c:\jdk1.3.1 以上全部ダメ。
バカでした。すみません。 今まではPythonを使っていて、GUIアプリケーションを作ったりしていました。 Pythonのオブジェクト指向はなんちゃってオブジェクト指向であるということを最近知って Javaで本格的なオブジェクト指向を勉強したいです。 で、ついでに携帯用のアプリケーションを作ったりしてみたいです。
595 :
デフォルトの名無しさん :04/03/31 00:48
フォルダの「アドレス(D)]からコピペすりゃいいじゃん。 DIR "%PATH%" とかでちゃんとファイル一覧が見れるか?
EmbededTomcat: Init time 531 っつうのはなんですか?
>>596 ドキュメントも読めないのか?
読めないなら来るな。
598 :
デフォルトの名無しさん :04/03/31 10:54
Javaの初心者向けのおすすめ参考書ありますでしょうか? 独習買ったんですけどちょっと難しかったです。 Cはちょっとできる程度の者です。
C:\servlets>javac Lesson01.java Lesson01.java:2: パッケージ javax.servlet は存在しません。 import javax.servlet.*; ^ Lesson01.java:3: パッケージ javax.servlet.http は存在しません。 import javax.servlet.http.*; ^ Lesson01.java:5: シンボルを解釈処理できません。 シンボル: クラス HttpServlet 位置 : Lesson01 の クラス public class Lesson01 extends HttpServlet{ ^ Lesson01.java:6: シンボルを解釈処理できません。 シンボル: クラス HttpServletRequest 位置 : Lesson01 の クラス public void doGet(HttpServletRequest request,HttpServletResponse response) ^ Lesson01.java:6: シンボルを解釈処理できません。 シンボル: クラス HttpServletResponse 位置 : Lesson01 の クラス public void doGet(HttpServletRequest request,HttpServletResponse response) ^ Lesson01.java:7: シンボルを解釈処理できません。 シンボル: クラス ServletException 位置 : Lesson01 の クラス throws IOException, ServletException{ ^ エラー 6 個
JSTLからスタティックメソッドを呼び出す方法はないですか?
>>601 まず
>>1 を一通り実行してから質問すれ。
それすら出来ないなら来るな。
>>602 そうつれねぇこと言うなよ
な、いいだろ。今回だけちゃちゃっと教えてくれよ。
野菜スタティック
java初心者です。String型の変数に 代入されている文字の数を調べるにはどうすればいいのですか?
>>605 >>1 を一通りやってればすぐわかることだろ?
お前はSDKドキュメントも読めんのか?
ちなみにString#length()とズバリ答えを書かずにSDKドキュメントのURLを示したのは、 「次からはこれ見て自分で調べてね」という意図も含めてたんだが、伝わったかな…
・・・ 初心者なのでちょっと無理です。
何が?
/ / } _/ノ.. /、 / < } ry、 {k_ _/`;, ノノ パンパン / / } ;' `i、 _/ノ../、 _/ 入/ / `ヽ, ノノ / r;ァ }''i" ̄.  ̄r'_ノ"'ヽ.i ) ―☆ {k_ _/,,.' ;. :. l、 ノ \ ` 、 ,i. .:, :, ' / / \ ,;ゝr;,;_二∠r;,_ェ=-ー'" r,_,/ ☆ 【ラッキーレス】 このレスを見た人はコピペでもいいので 10分以内に3つのスレへ貼り付けてください。 そうすれば14日後好きな人から告白されるわ宝くじは当たるわ 出世しまくるわ体の悪い所全部治るわでえらい事です
614 :
デフォルトの名無しさん :04/04/02 13:05
こう書けばわかるかな。 Border innerBorder = BorderFactory.createCompoundBorder( BorderFactory.createLoweredBevelBorder(), BorderFactory.createEmptyBorder(5,5,5,5)); Border outerBorder = BorderFactory.createCompoundBorder( BorderFactory.createEmptyBorder(0,0,10,0), innerBorder); phaseIconLabel.setBorder(outerBorder); こういうローカル変数を定義しなくていいように、ということでしょう。
んーと、 >createCompoundBorder(Border outsideBorder, Border insideBorder) ここまでは分かってたんだけど。 三重かなるほど・・・。んー。 BorderFactory.createLoweredBevelBorder(), 外1 BorderFactory.createEmptyBorder(5,5,5,5))); 内1 BorderFactory.createEmptyBorder(0,0,10,0), 外2 phaseIconLabel.getBorder())); 内2 とすると。 画像に近い順に並べると、内1外1内2外2 って事でいいのかな?・・
>>617 一個目の複合ボーダー
外:BorderFactory.createLoweredBevelBorder(),
内:BorderFactory.createEmptyBorder(5,5,5,5)));
二個目の複合ボーダー
外:BorderFactory.createEmptyBorder(0,0,10,0),
内:phaseIconLabel.getBorder()));
二個目の複合ボーダの内側は一個目の複合ボーダーそのものなので
外:BorderFactory.createEmptyBorder(0,0,10,0),
中:BorderFactory.createLoweredBevelBorder(),
内:BorderFactory.createEmptyBorder(5,5,5,5)));
って事になる。
>>618 あー、なるほどそうか。だからgetBorderなのか。
理解できました。ありがとうございます。
>>617 phaseIconLabel.setBorder(
BorderFactory.createCompoundBorder(
BorderFactory.createEmptyBorder(0,0,10,0),
BorderFactory.createCompoundBorder(
BorderFactory.createLoweredBevelBorder(),
BorderFactory.createEmptyBorder(5,5,5,5))));
とかやってんのと同じ。
621 :
デフォルトの名無しさん :04/04/02 15:13
ユーザーが閉じるボタンなどを押し、用済みになった javax.swing.JDialogを破棄したいんですけど、何使えばいいんでしょ。
自己解決。 java.awt.Dialog.dispose()ね。
623 :
デフォルトの名無しさん :04/04/02 18:21
j2sdk-1_4_2-nb-3_5_1-bin-windows.exe をダウンロードしてインストールしようとしたら、何度やっても途中で止まってしまいます。 メモリが128MBしかないと無理なんでしょうか?
128MBだとインストールは出来ても使うのが難しいかもしれん。 Linux上なら16MBで十分動くのだが。
627 :
デフォルトの名無しさん :04/04/02 20:12
教えて下さい。 Javaの超初心者なのですが、先日、QuickTimeVRのファイルをHPに設置しようと Freeのアーカイブ(ptviewer.jar)を ダウンロードして記述したのですが、 モノクロの水玉模様の様なものがでるだけでQTVRファイルが表示できません。 どなたか詳しい方がいらっしゃいましたら詳しい設置方法教えていただけないでしょうか? プロバイダ参照: サーバのOS:UNIXサーバ パソコンのOS:MacX エディタ:ミミカキエディットとドリームウェーバーMX FTPソフト:NetFinder
629 :
デフォルトの名無しさん :04/04/02 20:28
>>628 ありがとうございます。
ただ、日本語で詳しく解説してあるページはご存じないですよね。
>>623 ファイルが壊れててインストールできなかった人が過去にいた
もう一度ダウンロードしてみれば
631 :
デフォルトの名無しさん :04/04/03 16:35
あの〜、javaについての本を買って今から勉強しようかと言う者ですが、開発ソフト(?)ってどこで入手できますか。 J2SDK1.4って奴が必要らしいのですが・・・ お願いします
jreの同梱の仕方を教えてください
Tomcatの同梱の仕方を教えて下さい
J2SE v 1.4.2_04 のダウンロード SDK Windows/Linux/Solaris SPARC 32 ビット/64 ビット ダウンロード ←これ Solaris x86 32 ビット
>>631 入門用の本を買えば、入手方法も書いてあると思われ。
java.io.FileWriterで改行を書くにはどうすればいいのでしょう try{ FileWriter writer=new FileWriter("test.txt",true); writer.write("改行テスト\nここで改行"); writer.flush(); writer.close(); }catch(IOException e){} こんな風にやっても改行されません。 FileWriterではエスケープシーケンスは使えないのでしょうか もし使えるとしたら原因は何ですか もし使えないとしたらどうすればいいですか
638 :
デフォルトの名無しさん :04/04/03 17:59
自分でJavaのゲームを作って、jarファイルにして 友達にjarファイルを送ったんですけど、友達が開いても どのプログラムを使うか聞いてきて開けないみたいなんです。 Javaの環境がない人でも遊べるようにするには、 どうしたらいいんでしょう???
>>637 エスケープシーケンスは使えるけど、DOS用の Cライブラリみたいに
「\n -> ネイティブの改行コード」みたいな変換はしない。
たぶん \r\n じゃないと改行コードとみなさないエディタとかで見たんじゃない?
ネイティブの改行コードが欲しいなら System.getProperty("line.separator") してください。
>>638 > Javaの環境がない人でも遊べるようにするには、
無理。
try{ FileWriter writer=new FileWriter("test.txt",true); writer.write("改行テスト"+System.getProperty("line.separator")+"ここで改行"); writer.flush(); writer.close(); }catch(IOException e){} これでうまくいきました ありがとうございました
>>641 BufferedWriter#newLine()を使うのが漏れは好き。
javaの勉強を始めて、1週間程度の超初心者です。 javacでコンパイルエラーが出る時、 「どのクラスの何行目に○○エラーがありますよ」みたく 具体的に指摘してくれないものなんでしょうか? (今はソースとにらめっこして確認しています)
皆さんありがとうございました
>>640 ちょっと言い方がわるかったです。。。
Javaの環境が無いというか、
ごく普通の人が遊べるようにするにはどうすればいいんでしょう?
普通jarファイルで遊べるものなんですか?
javaの時代がやってきました
javajava
>>645 JavaのVMを入れる。入れなきゃ動かない。
WinだったらMSJVMが標準搭載されている事もあるけど、裁判の関係
で外されちゃってる奴もあるし、MSJVMはベースバージョンが古いので
JDK1.2以降でサポートされたクラス/メソッドを使ってると動かない。
その場合はSunのJRE辺りをダウンロードして入れる必要がある。
649 :
デフォルトの名無しさん :04/04/03 19:04
符号無し数値の扱い方について質問があります。 1バイトの0xFFを255として扱うにはどうすればよいのでしょうか?
>>643 javac がエラーメッセージ出すからそれを読んでください。
>>649 int 等に昇格させて val & 0xFF するとかしてください。
ダウンロードは無事に終わりましたが、editerがどこにあるか分かりません。 notepad appで作成するのですか?
>>652 エディタなんか付属しとらんからnotepadでもフリーのエディタでも
好きなもん使え。
>>652 JDKにはエディタはついてない。
別途好きなのを用意汁。
>>650 あのう、エラーの個数しか出てないようなのですが・・・。
普通はどんなエラーメッセージが出るのでしょうか?
何度もすいません。
>>655 printlnのタイプミスならこんな感じだが。(^の位置はずれてるかも)
c:\work>javac hello.java
hello.java:3: シンボルを解決できません。
シンボル: メソッド prinln (java.lang.String)
場所 : java.io.PrintStream の クラス
System.out.prinln("hello, world");
^
エラー 1 個
c:\work>
>javac A.java A.java:2: シンボルを解決できません。 シンボル: クラス hoge 場所 : A の クラス hoge a; ^ A.java:4: 戻り値の型が void のメソッドからは値を返せません。 return 5; ^ エラー 2 個
何度もすいません。 皆さんがお使い&お勧めのフリーのエディターを教えていただけませんか?
>>658 窓の杜 か Vector で色々ダウンロードして試してみろ。
エディタの使いやすさなんて人によって違うから教えられん。
おれはxyzzyつかってるから、なおさらお前には勧められない。
おもったんだがSDKにNetBeansついてくるし(一番目立つところがそこだし) エディタがついてないというのとは違うような ただ、全くの初心者が環境設定できないままでも困るので 一度はコマンドラインベースでやっておいたほうがいいかな
>>656 ,657
どうもお手数をおかけしました。
そんなに詳細にエラーを指摘してくれるものなんですね。
実は当方macでして、環境に問題があるのかもしれません。
mac板のほうで聞いてみます。
ありがとうございました。
がちょーん Mac かい・・・ひょっとして OS9 か? OS9 用はたしか 1.1 ベースまでしか出てないよな。 かなりしんどいと思うなぁ
>>658 TeraPad とかどうかな
俺はかなり長い間お世話になった
Java や XML 以外では今でもなってる
コマンドライン引数から指定したディレクトリの中の入っているディレクトリ以外のファイルの名称を 取得したいんですが、list()だとディレクトリも取っちゃうので困っています。 なんか方法ありますでしょうか? ループさせてファイルひとつひとつをDirectory()とかで判断させるとかで、できるかな・・・。
>>662 そうです。OS9ですw
でも、勉強できるだけありがたいのでがんばってみます。
#1.1.8までしか対応してないらしいです
>>664 File[] files = dir.listFiles(new java.io.FileFilter(){ public boolean accept(File f){ return !f.isDirectory(); } });
>>651 非常にダサイんですが、そんなもんなのか
Socket経由で3バイト符号無し数値とか受け取らないといけないんですが
>>668 人にきておいてそんな反応かい
まじめに答えた
>>651 もかわいそうだな
javaで整数演算はすべてintでやるのが基本
3バイトだろうがなんにも問題ないだろうて
>>669 スマソ
もっとスマートに符号無し数値を扱う方法があるのかと思ってたので
>>665 漏れもJavaの勉強は、MacOS9+MRJSDK2.2で始めたよ。
OS9のjavacだとエラーは「Java Console」に
表示されるけど、改行とかが無茶苦茶で読みにくかったね。
MPWと組み合わせて使えばコマンドラインでコンパイルできて
エラーメッセージもちゃんと読めたと思う。
だけど、OS9もMPWもJDK1.1も今となっては過去の物なんで、
これからMPWとかの使い方を覚えたりするのは勧められない。
環境が許せば、Xに移行したほうがいいよ。
Pure Java開発でも、MacOSX10.3+Xcodeの方が10000倍
使いやすいよ。JDKも最新だしね。(長文スマソ.)
>>672 Java2がいるんじゃない?
あの、
>>666 で教えてもらったんですけど
いまいち仕組みが良くわかりません。
もう少しわかりやすく記述した場合、どんなになるんでしょうか?
ディレクトリ以外を選択するフィルタかませてるだけかと APIマニュアル読んでわからなかったの? わからないのならどこがわからないかかいてもらわんと
677 :
デフォルトの名無しさん :04/04/04 01:17
>>675 無名クラスのあたりがわからないのか?
{}のインデントをつけてみて
入門書の無名クラスのページを開くかググって
ソースとよくみくらべてみ?
>>676 いまいちわからなかったのは、FileFilterインタフェースなのかFileNameFilterなのか
また、それらをインプリメントなりインポートする必要があるのかどうか。
あと、メソッド内にメソッド埋め込んでるようにも見えるがそれが可能なのかどうか?
これくらいです。
>>677 2重カキコすんません。
無名クラスって匿名内部クラスのことでしょうか?
(本にそう書いてありましたが)
3重カキコすんません
自己解決できました。
ただ、
>>679 は同じかわかりません。
>>674 そういうときにGetJavaのリンクを自分のページに張るとか、
JavaWebStart対応にするとかすればいいのに
682 :
デフォルトの名無しさん :04/04/04 02:22
どっちでもOKでしょ。 正確さを最大にしたいなら anonymous class 以外はアウトにしなきゃいかんし。
すまん。ちゃんと読んでなかった。名無しクラスかぁ…
686 :
デフォルトの名無しさん :04/04/04 15:43
java コマンドで引数に、アスタリスク * を含んだ文字列を渡したいのですが、 実際に実行すると、実行したディレクトリ内に存在する、 パターンに一致したファイル名に変換されてしまいます。 何か解決する方法はありませんか? 例 java Test *.xml -> args[0] が、test.xml になってしまう。(test.xmlが存在する場合)
>java "Test*.xml" は?
688 :
デフォルトの名無しさん :04/04/04 16:03
>>687 java.lang.NoClassDefFoundError です。
てか、java Test*.xml なんてありえないだろ。 java hoge Text*.xml じゃねーの? だとしたら java hoge "Text*.xml" でできないか? これはjavaじゃなくてシェルの仕様依存だよ。OSなに?
ごめん、みまちがえてたTest がプログラム名なのね。 じゃ >java Test "*.xml" でどう?
>>690 OS は、WindowsXPです。
java Test "*.xml" は、やはり同じ結果でした。(内部にある拡張子 xml の何か)
>>691 ごめんなさい。
Eclipse で引数して実行した時だけのようです。
大変失礼しました。
>>686 java.exe は Unix とかと似た挙動にするため、
ワイルドカードを展開するよーになってる。
>>693 689のいうように、shellの話だろ?
Java(というか、実行されるプログラム)の世界に渡ってくる段階で
既に*は展開されちゃってる。
置換すれば?
>>694 Windows ではワイルドカードの展開は shell の役目じゃない。
697 :
デフォルトの名無しさん :04/04/04 20:20
最近Javaの入門書を読み始めた初心者なんですが、その入門書を読んでいて わからないところが2つでてきました。 1つは作業用クラスですmain()メソッドを持たないクラスなのですが これの書き方がどうすればいいのかいまいちわからないです。main()メソッド を含むクラスから先に書くのか、作業用クラスから先にかけばいいのか迷ってます。 2つめはパッケージを使う理由です。入門書にはパッケージを利用する主な理由は クラス名を一意に保つためである。とあるのですがこれはどういう意味なのでしょうか?
>>697 >1つは作業用クラスですmain()メソッドを持たないクラスなのですが
>これの書き方がどうすればいいのかいまいちわからないです。main()メソッド
>を含むクラスから先に書くのか、作業用クラスから先にかけばいいのか迷ってます
「作業用」という感覚が既におかしい クラスっつーかプログラムは全部作業のために作る
それともユーティリティクラスのことか?
とにかく、API は全部、main 持たないクラスなんだから、
それらと同じ位置付けになるように書けばいい
>2つめはパッケージを使う理由です。入門書にはパッケージを利用する主な理由は
>クラス名を一意に保つためである。とあるのですがこれはどういう意味なのでしょうか?
君自身がかたくなに「List」という名前のクラスを作成したいのであれば、
パッケージというものがなければ 標準APIとバッティングする
既に 標準 API では java.awt.List と java.util.List があるがパッケージが別なため両立できる
>>697 Main クラスから先に作れば?
User クラスとか自前で作ったとして、import しているパッケージに
同じ User クラスがあったらどうしよう。MyUser クラスなんかにしても
良いけどやぼったいからパッケージを使って同じ User というクラス名のものを
使い分ける。
初期不良 貧乏紙 さあ、つぎは?
-Djavaplugin.outputfiles.overwrite=false なんですが、いくつかのマシンで設定しても、一意のファイル名になりませんが、機能してるんでしょうか?
702 :
JPanelのpaintはだめ? :04/04/05 03:43
上手くいきません。JPanelのpaintでテキスト描画をしたいのですが、下のコードを実行するとクライアントエリアが真っ黒に塗りつぶされた状態になってしまいます。 DisplayArea をJPanelの派生ではなく、JComponentの派生にすると期待通りの結果になるんですが・・。JPanelはこういう使い方できないんでしょうか? ----------------------------------------------------- import java.awt.*; import javax.swing.*;; public class App{ public static void createAndShowGUI(){ JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); DisplayArea disp = new DisplayArea("あいうえお"); Container cont = frame.getContentPane(); cont.add(disp, BorderLayout.CENTER); frame.pack(); frame.setSize(200,150); frame.setVisible(true); } public static void main(String[] args){ createAndShowGUI(); } } class DisplayArea extends JPanel { private String message; public DisplayArea(String message){ this.message = message; } public void paint(Graphics g){ g.drawString(message, 20,20); } }
そういう使い方はできる。 黒い背景の上に黒の字を書いてるだけ。 public void paint(Graphics g) { g.setColor(getBackground()); g.fillRect(0, 0, getWidth(), getHeight()); g.setColor(Color.BLACK); g.drawString(message, 20, 20); } でもJRE1.5だとそのままでも表示できる……?
704 :
デフォルトの名無しさん :04/04/05 13:47
String変数っていったい何文字まで、格納可能でしょうか? 実行環境によって変わることは、分かっているのですが、忘れてしまい、 思い出せません。確かUNIX上は2万5千文字ぐらいだったような気がする のですが・・・WEBで調べても具体的な数値までは、かかれていなかったの で、別に知らなくてもStringBufferを使えばいいのでしょうが、どのよ うな理由で環境によって違いがでるのか、今後のためにも知っておきた いです。どなたかご存知の方、ご教授いただけますでしょうか?
今後のためを思うなら そんな長い文字列 String に入れるなってこった
>>704 理論上は
・割り当てたメモリの量
・int型の上限
の何れかが限界になる。普通は割り当てたメモリの量だね。
Serializeするときは 64k文字(32k文字だっけ?)が限界になると思った。
上限なんて気にしたことないw
>>704 > 思い出せません。確かUNIX上は2万5千文字ぐらいだったような気がする
これは文字列リテラルの長さの上限かな?
それだとクラスファイルの上限に縛られる。
>>708 クラスファイルの上限って64kバイトだっけ?
710 :
デフォルトの名無しさん :04/04/05 18:38
返信おくれました。皆様回答ありがとうございます。
>>708 文字リテラルではないです。
>>705 おっしゃるとうりです。
ただ、どうしても気になってしまいます。
>>708 ,
>>709 補足、日本語文字列ならリテラルはUTF8でclassファイルに格納されることは知っていたほうがいいと思う。
SJISやEUCに比べて最大1,5倍にふくれあがるからね。
( ゚д゚)おれも作ったアプリさらしていいですか?
MacOS9+MRJSDK2.2で勉強中の超初心者です。 パッケージした時の実行方法がどうにも分かりませんので、 どなたかお教えいただけないでしょうか? javacでclassファイルを吐き出すところまでは出来たのですが・・・。 Jバイナリで実行時、エラーメッセージが以下のようにダイアログで出力されます。 >メインクラス"ほにゃらら"が読み込めませんでした。 >そのファイルがclasspathの中にないか、 >クラスを使うスタティック・イニシャライザが >classpathの中にありません。
>>714 「Using JBindery」を読もう。
日本語すら読めないならやめれ
717 :
デフォルトの名無しさん :04/04/05 22:52
718 :
デフォルトの名無しさん :04/04/05 22:54
俺は止める
719 :
デフォルトの名無しさん :04/04/05 23:11
JPanelにJTableをaddしてみたのですが、 このパネル全体にテーブルが渡るような方法ありますか? おねがいします。
setLayout(new GridLayout(1, 1)); とかどうだろ。
普通にボーダーレイアウト使うんじゃないのか? あと根本的なところわかってないようだから こういうときはテキストエディタベースより逆にGUIエディタつかって 配置してみてどういうレイアウトができるか勉強するといい レイアウトをダイレクトにいじる場合はEclipseでVEより NetBeansのほうが動きがわかりやすいかな
>>704 String.javaを覗けよ。
Eclipseとか使えばJavaコアAPIのソースコードなんて簡単に読める。
724 :
デフォルトの名無しさん :04/04/05 23:46
>>720 ,722
レイアウトをセットしたらできました!ありがとうございます。
根本・・・たしかに分かってません。なんとなく感覚です・・・
GUIエディタ使ったことないんですけど、配置すると勝手にソース作ってくれるという解釈でいいですか?
ヌルポレイアウツ ツカッチャエ
>>726 それはナニでできてるんですかうんこ?
おしえてくださいうんこ?
>>727 ( ゚д゚)だいたいJavaです。コーデックとキャプチャは
ネイティブでしかできないのでネイティブです。
>>729 どこにJavaを使っているんだ?
拡張子がmsiだと怪しくて怪しくて。
JVMを使わずに動くソフトかよ。 ほんとにJava使ってるのか? Javaを使っているとはどこにも書いておらんし 「このソフトウェアは〜を含んでいます。」とは書いても このソフトウェアはJavaを含んでいますとは書いていない。 どういうことよ? ライセンスがGPLならソースコード公開されてはいない?
>>730 ( ゚д゚)MSIはインストーラで中身はプログラムです。
あやしいですか?
とてもね
exeよりはましか 100%PureJavaを目指すつもりは? インストーラだけJavaでないならJavaWebStart対応にすればmsiいらないと思われ。 それとも、JETコンパイラてネイティブに変換してるとか?
>>731 ( ゚д゚)JVMなしで起動してるわけじゃなく、内蔵してます。ソースの公開はしてないです。
うわなんか連投規制に引っかかるのとで質問まとめてお答えするようにします。
拡張子がexeやmsiよりもjar, jnlpのほうを信用してしまう。
Java使ってると書いてないのは、要するにJREをインストールしてなくても 同梱してるから大丈夫とか、そういうことなんだと思うし (ランタイム付きVBソフトのように) msiでインストールさせるJavaプログラムもある。 けど、両方兼ね備えてるのは見た事無いぞ。
JAVAのローカルで使えるリファレンスマニュアルって配布されてますか? 目次/キーワード/検索が使える様な・・・ VCやDirectXのヘルプの様な物があると言う事無しなんですが。
>>724 その解釈でいい
まずはダウンロードしてたちあげてみるがよろし
たぶん、テキストエディタベースでのGUIエディットはもうやるきしないだろうて
もちろん、イベントとかも自動生成してくれる
VBとかDelphi、BCBと同じようなものと考えればいい
>>735 だれかが投稿したあとにシフト押しながらリロードすれば連続投稿規制にかからねえよ。
それと、待てと言われたら20秒待ってから投稿すればいい。
JVMを内蔵? あのmsiファイルの中にJ2SE1.4が丸ごと入っているのか?
なわけないよな。
>>738 APIドキュメント落としてnamazuでも使うかEclipseでも導入しろ
>>737 > Java使ってると書いてないのは、要するにJREをインストールしてなくても
> 同梱してるから大丈夫とか、そういうことなんだと思うし
> (ランタイム付きVBソフトのように)
> msiでインストールさせるJavaプログラムもある。
>
> けど、両方兼ね備えてるのは見た事無いぞ。
Jakartaにいけばそういうのはいくらでもあるじゃん。Tomcatとか。
>>740 J2SE1.4が丸ごと?JDKがないと動かないとでも思っているのか?
なわけないよな。
お前のような馬鹿は発言する資格はないと思う。
やっぱこれからの時代はサーバのMIMEタイプにjnlpを登録して GetJavaのリンクも張ってJavaWebStartでしょ。
>>742 おいおい、Tomcatはインストーラ無しのがちゃんとあるだろ
>>743 揚げ足取りなんかしてないでもっとましなことをいえ。
>>725 は「JREをmsiに内蔵して配布している」という解釈でいいんだな?
インストーラ付きのTomcatは余計なアイコンが入るのでいらぬ
つーかTomcatってVMついて来たか?
>>737 Windows専用だからとりあえずそういうことができるわけか。
( ゚д゚)
>>734 それだとキャプチャする手段がないので。それらだけそれらだけネイティブです。
>>737 >> Java使ってると書いてないのは、要するにJREをインストールしてなくても
>> 同梱してるから大丈夫とか、そういうことなんだと思うし
おっしゃるとおりです。
>>740 すいません、OpenJaneでできますか?
VMは内臓です。
>>746 えっとどのレスでしょう、アプリに内蔵してます。
( ゚д゚)みなさんありがとうございます、もしなんかあればまた明日まとめてお答えさせていただきます。
754 :
デフォルトの名無しさん :04/04/06 09:33
>>754 http://javanews.jp/ にのってたね。
> The current version does not provide a security manager capable of handling Java (tm) applets.
> Applets have UNRESTRICTED access to your computer. This means they can do anything you can do,
> like deleting all your important data.
おそろしや。
現在のバージョンは実験で自作のアプレットで遊んだりしたらとっとと削除しといた方がよさげ。
756 :
デフォルトの名無しさん :04/04/06 10:24
JavaはもうすぐSunがサポート打ち切るから早めに脱出準備しておいた方がいいよ
>>756 今のうちに IBM JDK を検討したほうがいいね。
BEA JRockitはどうだ?
>>758 Windows 専用だし。しかもそれ VM じゃないの?
>>759 一応SDKだ。
しかし、CPU占有率が高いのでいただけない。
速いことは速いけど。
>>753 ( ゚д゚)JMF使ってます。でもJMFのキャプチャはVfWしか対応してないので
そこはJMF対応の独自実装でやってます。
762 :
デフォルトの名無しさん :04/04/06 13:07
Javaを使って先日、QuickTimeVRのファイルをHPに設置しようとFreeのアーカイブ(ptviewer.jar)をダウンロードして記述したのですがモノクロの水玉模様の様なものがでるだけでQTVRファイルが表示できません。 どなたか詳しい方がいらっしゃいましたら詳しい設置方法教えていただけないでしょうか? 環境は↓ サーバのOS:UNIXサーバ パソコンのOS:MacX エディタ:ミミカキエディットとドリームウェーバーMX FTPソフト:NetFinder
763 :
デフォルトの名無しさん :04/04/06 13:15
>>762 どなたか教えて下さい
よろしくお願いします
FTP ソフトなんか挙げてる時点で 誰も答える気起こさないと思う
765 :
デフォルトの名無しさん :04/04/06 13:56
>>762 >>627-629 日本語のページ検索すると1つそれらしいの見つかるけど、
それじゃダメなのか? それともGoogleの使い方知らないのか?
ところで、MacXって何?
767 :
デフォルトの名無しさん :04/04/06 14:05
>>766 おまえ死んだ方が良いね!
人のあげあしをとるのがそんなに楽しいか?
友達いないだろ!
>>751 スタンドアロンアプリならマルチプラットフォームを考えると言うことも多くないし
こういった一見javaにみえないアプリってのが現実的な線だね
すべてネイティブコードより移植性は高いと思うし、かりに環境固定でも
javaのプログラムの組みやすさと運用性考えるとネイティブコードガリガリより便利
サイズ的にwebstart部分削るくらいしかファイルサイズ押さえれないけど
ネイティブアプリでも数十メガあることも珍しくない現在では問題にはなりにくいかな
>>768 それってJavaでやる意味ないだろって感じがするんだが、どうなの?
>>767 あげあしと思うならそう思ってればいいさ。
でもここは一応プログラム技術板だしな。
OSの名前すら正確に書けない香具師の質問に
親切につきあってくれる人がどれだけいるだろうか?
javaであることの利点はやはりGCがある環境はもはやデフォだろうってところだな .NETよりはランタイムが少し小さいが、今Winフォームって動作状況どうなの? 去年の夏くらいにみたときはjavaのほうがGUI周りましだったんだけど このへんは好き嫌いはあるかもしれんがね ま、結局jarよんでるだけなのでLinuxとか使ってる人なら実行のしかたは すぐにわかるだろうし、Winユーザーでランタイムをいれてからこのファイルを起動しろと いうのは気軽さが無いというか 商用アプリならあまり気にならないかもしれないけど、同人レベルでは インストーラがあるってのがマイナスに取られることも多い exeをダブルクリックで起動だよ、というのは問題ないんじゃないの? あ、jniとか依存する部分なしでの話ね また、この考え方だとjavaは単なる一言語という扱いなのでとっつきやすい人も多いかと
ランタイムのインストールがないということは単なる一言語におちるわけで ランタイム必須の.NET(javaみたいに同梱だけで動くかによるが)より手軽さはある そうなると比較すべきはネイティブなバイナリなので 旧VB、VC、BCB、Delphiあたりとなるか でも、GCの存在とかを考えるとDあたりが一番の対抗馬となり それなりにおもしろいポジションになる データベースやXML、通信周りなどは得意分野だしね
質問なのですが、何か流れ無視っぽで…被っていたら|スレ違いだったらすみません。 Java でサイズ 0 のファイル作成(touch(1) 新規ファイル名と同等)を実現したいのですが、 可能でしょうか? write(0) はゴミが入ってしまいます…よね。 ストリーム取得はライブラリに隠蔽されており、java.io.In/OutputStream が取れる口だけが ある状態です。
>>773 File#createNewFile()
スレ違いっぽいが、他にスレ思いつかんので。 SunのDeveloper Network内の、bug Database(javaの)にログイン出来んのだが、なんかある? JRE1.4.2でアプレット動かす時のbugを調べたいんだが、、、
あぁ、ログイン出来んってのは、「内部サーバーエラー」吐かれる状態。 もちろん、IDとpassは正しい。 (メンテ画面にはログインできるので)
>>776 ログインできないね。Sun ダメポ。
>>774 さん
ありがとうございます。すみません。言葉足らずでした。
> ストリーム取得はライブラリに隠蔽されており、java.io.In/OutputStream
> が取れる口だけがある状態です。
なんですが、このライブラリが保存先のストレジを隠蔽して変えられるように
なっていて(その設定の一つとして、実際には java.io.File を使っている場合も
あり)、ライブラリの利用者側としては、java.io.OutputStream だけが取れる
口がある(java.io.File を直接は使えない)、と言う状態でした。
java.io.File#createNewFile() の中身を嫁ってことでしょうか…
779 :
デフォルトの名無しさん :04/04/06 19:46
各種検索エンジンの検索パラメータを解析したいのですが、 UTF-8、EUC-JPなどを判定するにはどのようにすれば良いのでしょうか?
>>778 Javaにそこまで求めるのがすでに・・・
>>768 ( ゚д゚)これの場合はキャプチャ部分だけ移植すれば
コーデックはコンパイルしなおしだけなのでポート簡単なんですよね、おそらく。
MacOSXで使いたいってメリケン人の方が実際いらっしゃるんですが。
782 :
デフォルトの名無しさん :04/04/06 21:12
GCをもっと早くするにはどうすればいいでしょうか?
あの。。。恥を忍んでお聞きしますが、InputStreamでURLを 指定して開いた時、アプレットのある鯖と同じ鯖にあるファイルしか 開けないのはセキュリティ設定の問題なのでしょうか。
>>778 javaの問題じゃなくライブラリの設計が悪いだけと思われ
ストリームはあくまでもread、write部分
やるとすればその呼び出し元が処理するだけかと
>>783 サンドボックスの制限
そうしないと悪意のアプレットで好き勝手に情報ばらまいたりしちゃうから
ほかにもクリップボードとか印刷とかいろいろ制限あるよ
webstartなら多少やわらげることができる
たとえばローカルファイルの読み書きに関して依然勝手に読み書きはできなくて
ダイアログを表示させて選ばせたものだけ処理できるし印刷も出来る
>>784 有り難うございます。 すっきりしました。
正直、数時間悩んだ(´д`)
ちなみにsocket等低レベルな所にもそう言う制限が掛かっているのでしょうか?
>>785 もちろんソケットレベルで
アプレットじゃないとだめなのか、webstartでいいのか、
それともアプリケーションのほうがいいのかよく考えるといいよ
ちょっと上でもでてきているとおり、ランタイム入れてない人にも
実行してもらえるのがjavaアプリケーションの利点でもある
787 :
デフォルトの名無しさん :04/04/06 22:30
JavaのGregorianCalendarクラスについて質問です。入門書に GregorianCalendar calendar = new GregorianCalendar(year,month,day); Date hireDay = calendar.getTime(); というのがあったのですがこれはなんのためにDateクラスに変換して いるのでしょうか?普通にSystem.out.print(get.Time());じゃ ダメなんでしょうか?
その本わからんのでその文章だけでは答えようがないぞ
789 :
デフォルトの名無しさん :04/04/06 22:37
プログラム的な質問じゃないんで申し訳ないんですが・・・ JAVAを勉強することになりまして、とりあえず何かしらのアプリケーションを 作りつつ学んでいこうと考えています。 どうせならJAVAの特性を生かしたアプリを作りたいのですが、JAVAの何がよい のかが良くわかってません。基本的にはプラットフォームに依存しないって特 性くらいは知っていますが、「プラットフォームに依存してはならないプログ ラム」の必要性もあんまり感じないし・・・ 他の特性で有効なことってありますか?
790 :
デフォルトの名無しさん :04/04/06 22:38
読んでるのはコアJavaなんですけどそれには GregorianCalendarとDateクラスを変換する場合に特に便利なメソッドと かかれています>getTime() setTime() 変換する理由がわからんです
791 :
デフォルトの名無しさん :04/04/06 22:54
>>789 通信ライブラリが充実。
ファイルやネットワ^クを通じたオブジェクトの受け渡しが楽。
スレッドがわりと簡単に作れる。けど再現性のないバグを作りやすい諸刃の剣。
オマケ
フルスクリーンアプリを作るのが実はDirectXより楽。
792 :
デフォルトの名無しさん :04/04/06 22:54
intの配列の中から、最大値を最速で求めるコードってどんなんですかね? int max = 0; for(int i = 1; i < intArray.length; i++){ if(intArray[i] > intArray[max]){ max = i; } } こんなのは、馬鹿正直?
Java の場合 JIT がどう効くかが重要だから JIT の種類を考えずに一概に最速といわれても答えようがない。 バイトコードの長さが短ければ速いってわけでもないしな。
>>789 >、「プラットフォームに依存してはならないプログラム」の必要性
あるのは必要性じゃなくて有効性だよ
サーバに配備(デプロイ)するサービスやら、ソフトウェアで利用したいライブラリが、
Win で運用してる場合も Unix で運用してる場合も皆が同時に手に入れられるってのはよろしくないか?
こことか
http://www.apache.org/ みてごらん。
>>790 >>787 の System.out.print(get.Time()); はSystem.out.print(calendar.getTime()); のこと?
だとしたら君の話は完全な勘違いを前提にしてるぞ。
calendar.getTime() が変換であって、
Date hireDay = calendar.getTime(); は変換結果を参照させてるだけだ
で、君の疑問を正しく表現したとき
「なんでいちいち変数を用意して参照させるのか」と問われても、
続きのプログラムがどうなってるかわからんと答えようがない。
多分単純に「分かりやすかろう」ってことだろうが、他にも理由がありうる。
俺ならソートして端を抜き取る。遅そうだけど。
DateクラスのtoString()を呼びたいんじゃないかと、想像してみる手巣ツ
String にバイトアクセスする方法を教えて下さい。 Cでいう、charにキャストして、バイトアクセスするみたいなことをしたいのですが、
>>799 これ何回もでてるけど
APIマニュアルよんだ?
すいません。。読んだつもりなんですが。。 StringBufferInputStreamをつかえばいいのかなぁ? なんておもっていたんですが、非推奨とあるし 悔しいけど解りませんでした。
>>799 もっとちゃんと読め。String クラスのところを読んでるか?
入門書らしく、GregorianCalendar(Calendar)クラスと Dateクラスの関係を示しただけでは?
もしかして、getBytes?
マニュアルでgetBytes()って見なかったか? まずバイナリで扱いたい場合、java内部はunicodeが原則なので なんのバイナリにしないといけないかということを考えないといけない デフォはそのプラットフォームの文字コード ほとんどの場合char配列で足りると思うけどね
Strint str = "貧乏紙"; Byte bt = str.getBytes(); 指定された文字セットを使用してこの String をバイトシーケンスに符号化し、結果を新規バイト配列に格納します。 指定された文字セットでこの文字列を符号化できない場合、このメソッドの動作は指定されません。符号化処理をより強力に制御する必要がある場合、CharsetEncoder クラスを使用する必要があります。 だって。。。
char 配列にするには toCharArray ってのもなかったか。
まじすいません、正直恥ずかしいです。。 StringReaderとかそっちのほうにめがいってしまって、 肝心のString見てませんでした。。。 ありがとうございました。
>>791 >通信ライブラリが充実。
>ファイルやネットワ^クを通じたオブジェクトの受け渡しが楽。
なるほど。ちょっとネットワーク関係にも弱いのですが、これを機会に何か
プログラムを考えて見ます。
>>795 確かに「必要性」→「有効性」ですね。ちょっと言葉間違えました。
異なるプラットフォームでライブラリを共有できるってのは面白いですね。
ちょっと思いつかなかったです。
お二方とも回答いただきありがとうございました(^^
サウンド周りも楽だといっておくか PCMはDirectXのセカンダリバッファガリガリ書くのを綺麗にラッピングしてる感じだし midiはソフトウェアmidi内蔵しているのでwinでもLinuxでも同じ音がでる ただし、winだけランタイムからsoundbank.gmが抜かれているのでアプリに添付することに注意
>>808 API 中に他のどんなクラスがあろうが、
String の内側からデータを引っ張り出してこなきゃならないんだから、
String に相応のメソッドがなきゃしょうがないのよ。
Doc 読む以前にこういうことに気が付くようになるといいんだけどな。
>>777 thx。こっちの環境の影響ではないと判って安心した。
ちなみに今日はOkな様だ。
814 :
デフォルトの名無しさん :04/04/07 13:27
質問よろしいでしょうか。 switch(data) { case 1: case 2: case 3: System.out.println("1 - 3"); break; case 4: System.out.println("4"); break; default: System.out.println("Else"); break; } このcase 1:から3のように、caseが連続している場合、 dataが1,2,3の時は"1 - 3"と表示されるということですか?
正解。試しにbreakはずして実行すると理解が深まっていいかも。
>>814 です。
ご回答ありがとうございました。
Java入ってないマシンと印刷資料で研修中なもので、実行して確かめられなかったのです。
DB上にあるデータ(EUC)の全角ハイフンをjavaで取得して content-type:charset=Shift_JIS のファイルに書き出すと化けてしまいます。 そこでjava側で str.replace('\uff0d', '\u2212');で全角ハイフンを置換しようと思うのですが これでも全角ハイフンをshift-jisファイルに書き出せません。 どうしたら全角ハイフンを書き出せますか?
>>818 文字コードにShift_JISを使わずにWindows-31Jを使うのはダメか?
Shift_JISといってもほとんどの場合MSのCPだろ javaで出力する場合は機種依存文字も出したい場合もあるだろうから eucやShift_jisは選択肢になりにくくてUTF8かMS932が一番現実的と思われ
shift-jisは変更出来ないです。 replaceで半角スペースに置き換えるしかないんですかね??
↑半角スペースじゃないや。 半角ハイフンの間違いでした。
825 :
デフォルトの名無しさん :04/04/07 16:28
Tomcatのこともここでいいですか? 実行時エラーの画面で HTTP????? 500 という感じで?になってしまっている個所があります。 htmlのソースを見ましたが?でした。 解決方法をご教授ください。 (エラーの内容は英字なので読めているので問題ないですが) よろしくお願いします。 Tomcat 5.x Windows 2000
>>825 文字コードの問題。正しく設定したまえ。
macでアプレットのクラスを実行するには、どうすればいいのでしょうか? htmlファイルを作るところまでやったのですが、 アプレットビューワらしきものが見当たりません。 入門書にはwinのやり方しか載ってないし・・・。 よろしくお願いします。
MacゆうてもOS9とOSXじゃ、全然ちゃうんやけど。
ブラウザ使えばいいだろ アプレットてのはブラウザで使うためのもんだぞ
日本語がおかしいな つーか pc5 って串規制ないの? 書き込めておどれーた
>>832 ブラウザ or Apple Applet Runner
834 :
デフォルトの名無しさん :04/04/07 21:35
Javaアプレットを作ったんです DOSでAppletviewer syokai.javaってやればちゃんと動くんですが 実際にHTMLでやってみると灰色のままでアプレットは開始しましたって なっていて画面にうつらないんです 何が原因か教えてください
>>834 IE 6.0 + MSJVM だったら、
ツール->インターネットオプション->詳細設定->Microsoft VM->Javaコンソールの使用(再起動が必要)
にチェック入れて再起動後、アプレット動かせ。
表示->Javaコンソール
でJavaコンソールが出るから、それでエラー出てる箇所を確認しろ。
もしくは jview -a applet.html でもいーけど(PATH弄ってないなら)
>表示->Javaコンソール >でJavaコンソールが出るから、それでエラー出てる箇所を確認しろ HTMLで起動したんですがJavaコンソールってやつでてこないんですが・・・・ DOSで起動しても出てこないし・・・
あ、すいません勘違いしてました(・∀・)
>>836 > ツール->インターネットオプション->詳細設定->Microsoft VM->Javaコンソールの使用(再起動が必要)
> にチェック入れて再起動後、アプレット動かせ。
の手順を踏まないと
> 表示->Javaコンソール
は出てこない。
キタ━━━━━━(゚∀゚)━━━━━━━!!!! ありがとですまじで助かりました
841 :
デフォルトの名無しさん :04/04/07 22:38
strutsのActionFormでIntegerをもたせています。 はじめにこのページにきたときは このフィールドが空なんですが、 一度サブミットしてvalidateチェック(サーバサイドのチェック)で もどってくると、0がフィールドにはいっています。 Integerフィールドに数値以外の文字がはいると0が入る仕様ですが、 これを0でなく""(空欄)にすることは可能でしょうか?
842 :
デフォルトの名無しさん :04/04/07 22:40
あげてすいません。Javaって将来性大丈夫なのですか? なんかMSが多額の出資金を出したってことで 買収されそうなんですけど?
釣り師キター
クマー(略
Strutsごっこしようぜー! 俺、アクションクラス〜! ↓お前はアクションフォームな!
846 :
デフォルトの名無しさん :04/04/07 23:20
よーし、じゃあ、俺からフォームビーンに、ログインIDとパスワード渡しちゃうぞ〜! それっ! ↓次のおまえは、フォームビーンな!
ダイナ使うからんなもんいらねーよーだ
ウルトラマンダイナ?
ちんこ蛇腹式
850 :
デフォルトの名無しさん :04/04/08 09:33
Macでプログラミングってできますか?
852 :
デフォルトの名無しさん :04/04/08 09:52
JAVAで日時を取得しSQLに格納したいのですがjava.text.SimpleDateFormatを使って1996.07.10 AD at 15:08:56 PDTと取得したとき、テーブル格納時はスペース含めた文字分だけとればいいのでしょうか?
>>852 テーブルの方、Date型で定義すれば?
>851 OS9なんですが、JAVA2をどこでダウンロードするのかわかりません。
OS9のJavaはJDK1.1.8までしかない。 OSXならJDK1.4.2が使える。
sqlで取得したdate型のカラムを ResultSet#getString()で取得するとどうなりますか? 正しく動作してるように見えるんですがダメですか?
>>858 そのまま出力するならいいけど。
ただSinmpleDateFormatとかでparseする場合、DBの設定によってフォーマットが変わるからあまりお勧めしない。
JAVAには符号無しの型が無いそうですが、byte型の負の数を、 short等の正数に変換するにはどう言った方法がありますでしょか。
>>860 byte a = -67;
int b = ( -128 ^ a ) +128 ;
0->0, 127->127、-128->128、-1->255 になる。
>>861 どもです。
Cのオバーフローを前提にした式をJAVAに移そうと思ったのですが、
ビットシフトを>>>でして、最終的なバイトを正にすれば良いのかと
思ったら、何か見当違いだった様なので、一から書き直す事にします・・
863 :
デフォルトの名無しさん :04/04/08 16:32
えっとJavaで音をならそうとしたんですが DOS上でAppletviewerで起動するなら音がなるんですが HTMLで起動してもならないんです Javaコンソールには NativeAudioStream: invalid file type. NativeAudioStream: invalid file type. ってでて何が悪いのかさっぱりです 分かる方お願いします 音源は.wavです
なんのライブラリ使っているのかとか環境かいてもらわんと
AudioClipってので再生させようとしています JDK1.3.1_10です
エラーがでている箇所のスタックトレースくらいのせてもらわんと
えっとスタックトレースて何ですか? あとエラーがでてる箇所がわからないんです・・・ Javaコンソールに NativeAudioStream: invalid file type. NativeAudioStream: invalid file type. ってでてるだけなのでどこがエラーだかわかんないです
>>860 byte b = -1;
short s;
s = (short) ( 0xFF & b );
>>867 VM が違うからじゃないか? 要するに
IE標準のVMなど、1.1 ベースだと .au しか鳴らせなかったはず
AudioClipというところからして
>>870 のいうとおりだな
1.3以上用ならjavasoundがあるのでそっちならwavとか自由に出せるけどね
えーとそしたら.wavならすのには AudioClipじゃなく何を使えばいいんですか?
874 :
デフォルトの名無しさん :04/04/08 21:19
.wavの圧縮率やビットレートを変えるにはどうすればいいのでしょう? ググってみたりVector行ったりしても全くそれっぽいソフトが見つからず・・・。 何か今それっぽい話題なので質問させて頂きましたです。
>>875 コントロールパネルのJavaアイコンをクリックして
IEが使うJavaがMS判になってないか確認してみ?
>>874 ぜんぜん関係無い。
ついでに言うと、.wavに圧縮率なんてない。
> wavに圧縮率なんてない。 馬鹿だw
DataSourceで質問です。下のコードで、ds2を取るところでNamingExceptionが出ることがあります。どこか悪いところはあるでしょうか? こんなクラスを作って、 public class Hoge{ private InitialContext ic = null; private DataSource ds = null; public DataSource hoge(String key){ ic = new InitialContext(); ds = (DataSource)ic.lookup(key); } public getDatasource(){ return ds; } } public class main{ public static void main(String [] args){ Hoge hoge = new Hoge("foo"); Datasource ds1 = hoge.getDatasource(); // ds1を使って処理。 Hoge hoge = new Hoge("foo"); Datasource ds2 = hoge.getDatasource(); // ds2を取るところでエラー } }
二度目の Hoge hoge = new Hoge("foo"); がよくコンパイル通ったな
>>881 あっと、そこは入力ミスです。
Hoge ho = new Hoge("bar");
に置き換えてください。
883 :
デフォルトの名無しさん :04/04/08 22:54
MediaTrackerのwaitForAllメソッドでイメージを読み込ませるのと同じように、 オーディオファイル(.au)を読み込ませる方法はあるのでしょうか? それとも、getAudioClipをすると自動的に読み込まれるのでしょうか?
public getDatasource(){ return ds; } の戻り値の型が不明。 public Object lookup(Name name)throws NamingException 例外: NamingException - ネーミング例外が見つかった場合。
javax.sound.sampledのライブラリを調べなされ。 ストリームからのロードを完了させてから実体化させる「Clip」を使えばオケ。
>>880 InitialContextって、そんなにポコポコインスタンスつくるものなんですか?
>>886 static で持って、1回だけnewするようにしたほうがいいでしょうか。
>884
入力ミスです。
>>880 ソース貼るときはさあ、コピペしろよ、ボケ
>>880 縮めるなら縮めるでコンパイルくらい通るものを貼れよ、ボケが
どこがエラーなのか人に見てもらおうって気持ちが根本的に欠けている
まあ 889 みたいな物言いするくらいだから人間性も知れているがな
>>891 てめーにゃ聞いてねーよ包茎チンカス
>>all
こんな童貞は放っておいてよろしくおねがいします。
また鎌倉の再来か
>>789 Javaの特性。
C++やC#よりバグが出にくいプログラミングが可能。
型安全性も高い。コンパイラのエラーチェックが厳重。
JVMのセキュリティチェックが厳重。
低レベル部分で余計な機能を省いているためJavaから他の言語への以降、コンバートが容易。
オブジェクト指向を素早く習得できる言語。
何も考えずに書けるかわりに、かゆいところに手が届かない。
>>892 >>all って all を敵に回したことに気づけ・・・
897 :
デフォルトの名無しさん :04/04/09 01:47
>>792 これってどうよ?
private final double[] vector;
public DoubleVector(double[] vector) {
this.vector = (double[]) vector.clone();
}
public double max() {
double max = (-1) * Double.MAX_VALUE;
for (int i = 0; i < this.vector.length; i++) {
max = StrictMath.max(max, this.vector[i]);
}
return max;
}
これにピボット操作を加えたらさらに高速化するかな
StrictMath.max (Math.max でも) 呼んでる時点で問題外
899 :
デフォルトの名無しさん :04/04/09 02:21
んじゃ、三項演算子だな。
double max = (-1) * Double.MAX_VALUE;
for (int i = 0; i < this.vector.length; i++) {
max = max > vector[i] ? max : vector[i];
}
return max;
>>892 無闇に怒りを表すレスをするな。そういうレスを嫌う香具師がいると答えようとする香具師らの気力が
失われる可能性がある。すでに失っている香具師もいるみたいだが。
それより、さっさとgetDataSource()の返り血の型を指定したか?DataSourceでよさそうだが。
>>899 だからそこは入力ミスだって言ってんだろ?無能が
ここには答えられる人はいないのか。
鎌倉キタ−−−−−−