【初心者】Java質問・相談スレ52【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
以下のエラーが表示されて、途方にくれているあなたは、下のページへ。
「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path%2Cclasspath
前スレッド
【初心者】Java質問・相談スレ51【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1091666193/
/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNG0155145
NGNGありがとうございます。
> >>これってどこにインスタンスが出来るんでしょうか。
> ヒープ領域にDriverクラスのClass型インスタンスが出来るぐぼへほはぁえろえろ。
うーむ、私の脳味噌では理解不能。
>>どうしてインターフェースのメソッドが叩けるのでしょうか。
> executeQuery(sql)が返してるのは、ResultSetを実装したインスタンス
> であり、型がResultSetなだけなんでぐぼへほはぁえろえろ
そのインスタンスの元のクラスって何でしょうか?
0156デフォルトの名無しさん
NGNGResultSetインタフェースを実装したクラス。
JDBCドライバごとに違う。
ConnectionもStatementもすべてドライバごとに違うよ。
0157145
NGNGへー。つまり
Class.forName("org.gjt.mm.mysql.Driver");
であれば、このDriverのインスタンスが
Connection con も
Statement stmt も
ResultSet rs も
このドライバークラスから来たんですか。
これって目で確かめる方法ってあるんでしょうか?
質問厨でスマソ。
0158デフォルトの名無しさん
NGNGClass.forName("org.gjt.mm.mysql.Driver");
を探す
0159デフォルトの名無しさん
NGNGClass.forNameは、下記のとは別。
それはある種類のドライバーをクラスをロードして、その種類のドライバーを
使用可能にする為だ。
ResultSet rs のインスタンスはそのインタフェースの動作ルールに
基づいて、その使用ドライバーが作成したオリジナルインスタンスだ。
確かめたいのならrs.getClsaa().getName()とすれば、そのドライバーの
オリジナルインスタンスのクラス名が出る。
0160153
NGNG真面目な質問なんですが。
誰か分かる方いませんか?
0161デフォルトの名無しさん
NGNGVisualBasic.NETで書かれています。
0162デフォルトの名無しさん
NGNG0163swテー
NGNGjdbcはClass.forName("ドライバ名")でインスタンス化できることはわかるんですが
そこで動的にclasspathを設定してやる必要があります
アプリケーションを中断せずに変更する方法はありませんか?
ちなみにSystem.getProperties()やsetProperties()でkey=java.class.path
にフルパス(ドライブ名から.jarまで)を設定してあげると、表示では変わったことになりますが、
実際にはパスは通ってないのかClass.forName("ドライバ名")でClassNotFoundExceptionが発生します
同じフルパスを実行時に-classpathで設定するとうまく行きますが実行中に行いたいです。
現在は選択されたドライバのフルパスを保存して動的にバッチファイルを生成、実行し
選択画面と処理画面を二つに分けていますが(二つのアプリケーションにしている)一画面で行いたいです。
Eclipseで環境変数を追加することができるなら方法はあると思うのですがわかりませんでした
どなたかわかる方いましたら教えてください
0164デフォルトの名無しさん
NGNGURLClassLoader使えば簡単だよ。
0165デフォルトの名無しさん
NGNGとりあえず、
abstract Opai とabstract Manko
クラスを作りました。
それらを継承して、BigOpai , FixedMankoクラスを作ってそれぞれPeroperoListenerを実装して
LoliWomanBodyクラスに委譲したのですが、おっぱいを舐めた時のリスナーイベントの挙動がうまくいきません。
何故かおっぱいを舐めてもMankoクラスも反応してしましまいます。
なにかいい解決方法を教えてください。必要ならばソースもうpします。
0166デフォルトの名無しさん
NGNG話はそれからだ
0167swテー
NGNGやってみます
ありがとうございます。
0168デフォルトの名無しさん
NGNG画像ですか?java3Dでまだガクガクのポリゴンでダサいんですが・・。
マンコがBODYから浮き上がってますし。
0169デフォルトの名無しさん
NGNG萌え要素がない奴は却下
0170165
NGNGswingみたいにlook&feelだけ萌えに出来る予定です・・。
0171デフォルトの名無しさん
NGNGとりあえずお前は148な
0172トリビアの伊豆見
NGNGJDBCドライバでおまじないのようにClass.forName()しなきゃいけないのは、
単にDriver実装クラスのクラスイニシャライザがDriverManager#registerDriver(Driver)
を呼び出しているから、というだけの話。
別のタイミングで同じ事をするようにすれば、Class#forName()を呼ぶ必要はない、
って知ってた?
0173デフォルトの名無しさん
NGNGJTableのsetRowWidthを呼び出しても、行の幅(高さ)がかわりません
なにか他のAPIも呼び出す必要があるのでしょうか?
0174173
NGNGWindows2000でsetRowHeightを呼び出すと、行の高さが変わるのですが、
WindowsXPでsetRowHeightを呼び出しても、うまく機能してくれません。
このような不具合ってあるのでしょうか?
0176デフォルトの名無しさん
NGNGオセロのような格子を描画するアプリケーションを作ろうとしてます。
JPanelを用意してpaintComponent()に50X50ピクセルの四角形を(0,0)を基点にして
8X8描くようにしてます。
またアプリケーション本体としてJFrameのcontentPaneにJPanelをはりつけました。
このとき、JFrameの大きさをsetSize()で400X400(パネルが50X50ピクセルで8X8だから)
にしたのですが、格子全体が表示されません。いつも420X420くらいにしないと全体
を表示できません。
JFrameの大きさをパネル全体が描画できるようにするにはどのように設定すれば
よいでしょうか。
0177デフォルトの名無しさん
NGNGサーブレットに関してなんですが、アクセスしてきたのがPCか携帯かによって
ページを振り分けるにはどのようにしたらよいのでしょうか?
ヒントだけでも結構ですのでどなたか宜しくお願いします。
0178デフォルトの名無しさん
NGNGヘッダーのブラウザ見て振り分けれ
0179デフォルトの名無しさん
NGNGrequest.getHeader("User-Agent")
request.getRemoteAddr()
request.getRemoteHost()
0180177
NGNGレスどもです。
自分もどっかに参考になるのはないかなぁって色々探してるんですけど
下のページの内容とかは使えそうですかね?
http://interstage.fujitsu.com/jp/technical/tips/tip000033_03.html
http://msugai.fc2web.com/java/servlet/dispatchForward.html
http://msugai.fc2web.com/java/servlet/sendRedirect.html
0181デフォルトの名無しさん
NGNG資料くらい自分で読んで精査しろや
0182デフォルトの名無しさん
NGNGappletviewerだと見れるのに
ブラウザじゃ見れません。
環境はこんなです
test.html < ここにアプレット起動かいてる。
test.class
lib/test.classで使用しているclassが少々
img/test.classで使用しているgifが少々
appletviewer test.html だと起動します。
test.html(httpdでサーバとして立ち上げて実行しても)
IEの下のバーに。
class test not found
いわれます。
appletの矩形領域は灰色表示されています。
何が悪いんでしょうか?
0183177
NGNG(´・ω・`)ショボーン はい、がんばります…
0184182
NGNGttp://www.horae.dti.ne.jp/~yoji/TamaJava/faq.html
Sunは、1997年にMicrosoftが契約に反してJavaの一部を許可なく改変しているとして訴訟を起こしました。その後、和解しましたがMicrosoftは自社製品で最新版のJava技術を使用するライセンスを失いました。
Microsoftは、古いバージョンのJavaを使い続けることは認められていますが、 Windows XPの発売前にMicrosoftはJavaVMソフトウェアをWindows XPと Internet Explorer(IE)から削除することを決定しました。
JAVAアプレットだめぽ
0185デフォルトの名無しさん
NGNGそんなメソッドってあるのでしょか?
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNG指定した時間停止するのではなく3秒間だけ実行という感じにしたいのですが
それでできるのですか?
0188デフォルトの名無しさん
NGNG別スレッド起動して、3秒スリープさせて、スリープ終了後にnotifyで知らせてもらったらどうか
0189デフォルトの名無しさん
NGNG0190デフォルトの名無しさん
NGNGそれは古い情報ではないだろうか。
結局、色々あったすえにWinodwsXPにも、今はJavaVMがインストールされているかと。
VMがもし入っていないのなら。
class test not foundなどとすらも表示されないのではなかろうか。
>>182のエラーの原因は、1.1.8相応のVMを使用するように設定されたブラウザで、
1.4用のアプレットを実行したせいではなかろうか。
targetオプションを使ってみては?
0191184
NGNGjavac -target 1.1 *.java
で、MSのブラウザ対応形式でコンパイルできる。
ヨカター
0193189
NGNG0194デフォルトの名無しさん
NGNG> 結局、色々あったすえにWinodwsXPにも、今はJavaVMがインストールされているかと。
これはダウト。
セキュリティ修正のために、MSJVM がインストールされている場合のみ修正版がダウンロードできる。
Microsoftのサイトから新規に MSJVM をダウンロードするのは無理。
WindowsXP のパッケージには MSJVM は入ってないし、
プリインストールPC も Sun の JVM 入れてるほうが多いと思われ。
0195190
NGNGありがとう。
俺、SUNがマイクロソフトと和解して
お互いに協力しあうことになったというニュースを勘違いしてたっぽい。
>>189
JPanelのサブクラスを作ればできるのではなかろうか。
paintComponentを上書きすればいいのではないだろうか。
このところSwingの質問が多いけど流行ってるの?
それとも全部同じひとが質問してるの?
0196デフォルトの名無しさん
NGNGJLabel使えばいいんじゃないの?
0197デフォルトの名無しさん
NGNGJavaFAQとかも見てみたんだけど、
いまひとつメリットが理解しきれない。
DQNにもわかるような解説のあるサイト、ないですか?
0198デフォルトの名無しさん
NGNGサイトは知らないが、java.utilのソースを見てみたらいいかも。
Collection関連ね。
0200デフォルトの名無しさん
NGNG俺XPだけど普通に動いてるよ
>>176
pack使え
各コンポーネントが収まるサイズを計算してフレームのサイズが決まってくれる
その際各コンポーネントには推奨サイズを設定すること
ついでにいえば格子ならJTable使った方がらくかもしれんが
初心者には勧めにくいか
0201デフォルトの名無しさん
NGNG以下のサイトでも参照してくれ。
http://support.microsoft.com/default.aspx?scid=fh;JA;lifean12
0202デフォルトの名無しさん
NGNG}
みたいな感じで定義するstaticメソッドを使う際、
クラス名.doStaticMethod()
と呼び出しますけど、staticメソッドというのは、
インスタンスが1つのみってことなんですか?
いや、インスタンスを生成可能なクラス内に
staticメソッドがあるとしたら、
そのクラスのインスタンスを複数作っても、
呼び出されるstaticメソッドは、1つのみってことなんでしょうか?
仮にその場合、並列動作している他の複数スレッドから
同時に呼ばれた場合などは、コンフリクトします?
0203デフォルトの名無しさん
NGNGstaticメソッドは、インスタンスとは無関係だよ。
だから、クラス名.メソッド()という呼び方をしても、
インスタンスの入った変数.メソッド()という呼び方をしても
動作は全く変わらん。
staticメソッドの内部でクラス変数を読み書きしている場合は、
同時アクセスでコンフリクトする可能性がある。
0204デフォルトの名無しさん
NGNGなるほど。ありがとうございました。
ソース書いて試してみます。
0206145
NGNG> >>155
>
> JDBCドライバでおまじないのようにClass.forName()しなきゃいけないのは、
>
> 単にDriver実装クラスのクラスイニシャライザがDriverManager#registerDriver(Driver)
> を呼び出しているから、というだけの話。
>
> 別のタイミングで同じ事をするようにすれば、Class#forName()を呼ぶ必要はない、
> って知ってた?
うーむ、もう少し分り易くおねがいぽ。
0208デフォルトの名無しさん
NGNGJDBC 1.0の糞仕様をいまだにひきずってるだけ。
誰が見ても糞仕様だよ。
0209デフォルトの名無しさん
NGNGDriverManager#registerDriver(Driver)呼べば事足りると思ってる厨がいるみたいだけど、
信用してはいけない。
ドライバの種類によって独自の初期化処理をやってたりするから、
糞仕様でもすなおにClass.forName()使っとけ。
0210デフォルトの名無しさん
NGNGあaびーbしーcでー
という文字列から、あ、びー、しー、でーを取り出すには
どうしたらいいんでしょうか?
あabしーc
など、日本語の部分が無い場合もヒットするようにすると、
Pattern pattern = Pattern.compile(".*a.*b.*c.*");
Matcher matcher = pattern.matcher("あaびーbしーcでー");
でマッチするのは分かるのですが、そこから必要な要素を抽出する
方法がわかりません。どう書けばいいのでしょうか?
Perlだと
$a = $1; $b = $2;
みたいな感じですが…。
0212デフォルトの名無しさん
NGNGPattern pat=Pattern.compile("[^abcd]+");
Matcher mat=pat.matcher("あaべーbしーcでーd");
ArrayList texts=new ArrayList();
while(mat.find()) {
texts.add(mat.group());
}
動的配列textsに取り出した文字列が格納される・・・・・
0213デフォルトの名無しさん
NGNGmat.find()で部分シークエンスを見ていって、mat.group()で一致部分を
取ってくるという事ですよね
それならPattern.compile(".*a.*b.*c.*");とすると、aとかbとかも
一致部分に含まれてしまうから、必要部分だけを抽出することはできない
という事でしょうか?
0214212
NGNGす、すいません。質問の意味がよく分からないのですが・・・・
212は、210で与えられた課題、文字列からあ、べー、しーを取り出すのを
回答したのです。
質問の本質は何なのでしょうか・・・
0215デフォルトの名無しさん
NGNGMatcher matcher = pattern.matcher("あaべーbしーcでー");
if(matcher.matches()){
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
System.out.println(matcher.group(3));
System.out.println(matcher.group(4));
}
0216デフォルトの名無しさん
NGNGああ、凄いそれです
要するに区切り文字で区切られた文字列から必要な要素のみを抽出したかっただけでして
abcだのわけ分からんこと書かなかったら良かったですね
08/27 22:00 ほげ,ひげ,はげ
Pattern pattern = Pattern.compile("^[0-9]+/[0-9]+ [0-9]+:[0-9]+ (.*),(.*),(.*)$");
Matcher matcher = pattern.matcher("08/27 22:00 ほげ,ひげ,はげ");
if(matcher.matches()){
month = matcher.group(1);
day = matcher.group(2);
hour = matcher.group(3);
min = matcher.group(4);
hoge = matcher.group(5);
hige = matcher.group(6);
hage = matcher.group(7);
}
てな感じで…。これで合ってますよね?
つかgroup()て0じゃなくて1から始まるんですね
どうもありがとうございました
0217デフォルトの名無しさん
NGNGImageIO.read() でbmpファイルが展開できません。
Javaでbmpファイルを表示するにはどうすれば
よいのでしょうか?
0218デフォルトの名無しさん
NGNG1.4まではbmp標準対応してないです
1.5からは標準で読めるように
ImageIOで少し検索すれば対応フォーマットとかすぐわかるところだろうに
ちなみにbmpを扱う方法はいくつかある
が、この質問レベルから見てたぶん理解は無理
0219デフォルトの名無しさん
NGNGttp://homepage1.nifty.com/7/
↑こういったページから
「ビギナー向け〜」
と言う文字を取得など
0220デフォルトの名無しさん
NGNG上記の書き方で実行した場合には
0*0の結果である0がきちんと表示されるのですが、
計算結果を改行して表示させようと上記の1文を、
System.out.println(0*0\n1*1) ;
このようにしたら「¥92は不正な文字です」と言われてしまうのですが、
計算結果を改行表示させる為にはどうしたらよいのでしょうか?
どなたかご教授くださいませんでしょうか…
0221デフォルトの名無しさん
NGNGなんでそんなことしたいの?
>>220
System.out.println(0*0+"\n"+1*1);
文字列は+で連結
0222デフォルトの名無しさん
NGNGこんにちは
現在ホームページを作成していましてアプレットを使用します。
そのアプレットの機能をあまり多くの人に同時に使用されるとサーバーに
負担がかかってしまうため、アプレットの中にスレッドで待ち行列を作ろうと
思っています。
ここで質問なんですが、同時に訪問者が3人アプレットを起動したとして
その待ち行列は機能するのでしょうか?
(複数のブラウザで上記のスレッドは機能するのでしょうか?)
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNGもう一度msjava.dllを入れるにはどうしたら良いでしょうか
0225デフォルトの名無しさん
NGNGおそらくサーバーへの送受信によって自身の動作を
逐一決めるという「特殊」アプレットを用いてると思われますが
アプレットに待ち行列を作るのではなく、サーバーの方に
作ってください。
0226デフォルトの名無しさん
NGNGJFC、とりわけ誰もが最初にはじめやすいイメージ関連を理解して
少しお調子に乗ったバカの一つ覚え君が、得意気になって回答してるってのが
ありありとわかるレスだなw
0227デフォルトの名無しさん
NGNG0228デフォルトの名無しさん
NGNGどのクラスで解決できるのでしょうか?
初歩的な質問で申し訳ございませんが、
よろしくお願いいたします。
0229デフォルトの名無しさん
NGNGここで解決できるかと
http://www2s.biglobe.ne.jp/~yuuki_ki/java_date1.htm
0230デフォルトの名無しさん
NGNG例えば以下のPerlコードのような事がやりたい時、Javaではどう実装しますか?
my $foo = "foo";
my $bar = 123.456;
my @hoge = (0, 1, 2, 3); # 長さ固定
my @tako = (0, "a", 1, "b"); #長さが動的に変化する
my %aho = ('key1' => 'var1', 'key2' => 'var2'); #長さが動的に変化する
my @data = ();
push(@data, ($foo, {
'bar' => $bar,
'hogeref' => \@hoge,
'takoref' => \@tako
'ahoref' => \%aho,
})); # 何回pushされるか不明
$は変数、@は配列、%はハッシュ、\はリファレンス
pushは配列の最後にリストを追加します
動的配列はVector、ハッシュはHashtableで表すのが一般的なのかなぁとは想像できるのですが、
リファレンスと無名ハッシュをJavaではどう書くのかがさっぱりわからないのです。
0231デフォルトの名無しさん
NGNGクラスFooを定義してそれを配列に突っ込め
ArrayList data = new ArrayList();
Foo foo = new Foo(123.456, hoge, tako, aho);
data.add(foo);
0232デフォルトの名無しさん
NGNGSimpleDateFormatを使えばおK
Date d = new Date();
SimpleDateFormat f = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z", Locale.US);
System.out.println(f.format(d));
0233デフォルトの名無しさん
NGNGどうもです
リファレンスって使わないんですね
0234デフォルトの名無しさん
NGNG別に配列でもいいけど、
PerlとちがってJavaは型制限がきついからね。
キャストとかかえってめんどう。
0235デフォルトの名無しさん
NGNGJavaでは、intとかcharとかの基本型以外
すべて
Perlでいうリファレンスです。
0236デフォルトの名無しさん
NGNG動的配列はArrayList
ハッシュはMap
リファレンスはオブジェクト型の値そのもの
無名ハッシュは
Map $variable = new TreeMap() {
{
put("name", "suzuki");
put("s○x", "male");
・
・
}
};
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNGそんなもんしらねーよ
0240デフォルトの名無しさん
NGNGオーバーライドしたメソッドはRuntimeExceptionをthrowできますか?
0241デフォルトの名無しさん
NGNG>ImageIO.read() でbmpファイルが展開できません。
JAVADOCのJAVA ImageIOの所(C:\j2sdk1.4.2_05\docs\ja\guide\imageio\index.html)
の下の方にJava Advanced Imagingと書かれたリンクがあるからそこから
ttp://java.sun.com/products/java-media/jai/index.jsp
へ飛ぶ。上の方に
Java Advanced Imaging Image I/O Tools 1.0_01-rc is now available.
とあるから更に飛ぶ。すると、
Reader-writer plug-ins are supplied for the BMP, JPEG, JPEG 2000, PNG, PNM, Raw, TIFF, and WBMP image formats.
と有るから、ここからダウンロードしてインストールすればOK
0242デフォルトの名無しさん
NGNGRuntimeException のサブクラスと Error のサブクラスは全てのメソッドで throw できる。
0243デフォルトの名無しさん
NGNGthanks
じゃあゼロ割のArithmeticExceptionとかも
全てのメソッドでthrowできるってことですね
0244デフォルトの名無しさん
NGNG0245219=143
NGNG143の質問の仕方だと誰も食いついてくれないので・・・
本来の目的は、143の為替の価格
(ttp://www.forexwatcher.com/quotes.htm)
を取得したいんです。
Yahooファイナンスはhtmlのソースで更新してくれ
取得が容易なんですが更新頻度が目的に満たないので、
アプレットの表示内容を取得する方法を聞いてみました。
出来ませんよね。
0246デフォルトの名無しさん
NGNG人の作ったアプレットを?
取得できるようにしてあれば取れるけど。
作った人に聞くか解析でもしてみれば。
0247デフォルトの名無しさん
NGNG0248222
NGNGもうひとつ質問させていただきます
アプレットを呼び出す記述をrun()で囲むと(Jsp、Servlet側)、
その記述はアプレットの中でも有効なのでしょうか?
0249220
NGNG深夜にありがとうございました。
しかしそこでまた疑問が生まれてしまうのですが、
(1) System.out.println("おはよう。\nこんにちは。\nこんばんは。");
上記の文では「¥n」はただそれだけで改行の役目を果たしているのに(結城本からの引用です)
(2) System.out.println(0*0+"\n"+1*1);
こちらの文ではなぜ「\n」だけで改行をしてくれないのでしょうか?
(1)では""の中に全ての文字列が収まっており、
(2)では\nという改行する為の文字列を間に挟んでいるカタチだから…なんでしょうか?
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNG入門書でも読んでから始めたほうが良い
0252デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています