トップページ⇒tech
1001コメント321KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/02/25(土) 23:38:06
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals を使え。

前スレッド
【初心者】Java質問・相談スレッド81【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1139654818/

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

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/

次スレは>>980あたりで。
0446デフォルトの名無しさん2006/03/04(土) 18:41:57
そういやこういうのは宿題スレへ誘導せなあかんかったような・・・
まぁいっか。5分くらいで作ったので性能のほどはシラネ

private static char[] hankaku =
("ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz"
+ "0123456789").toCharArray();

private Random rand = new Random();

public String getRandomString(int length) {
char[] value = new char[length];
for (int i=0; i<length; i++) {
value[i] = hankaku[rand.nextInt(hankaku.length)];
}
return new String(value);
}
0447デフォルトの名無しさん2006/03/04(土) 18:59:03
変数名の一部に変数名を使いたいのですが、可能でしょうか?

for(int i=;i<10;i++){
String test_i
}

変数名の一部に変数名を使うというのは
例えばこれで、test_1、test_2・・・が10個宣言されるようなイメージです。
例えばの話です。
0448デフォルトの名無しさん2006/03/04(土) 19:08:45
>>447
そういう場合は配列がいいかと
String[] testArray = new String[10];
for(int i = 0; i < 10; ++i)
{
testArray[i] = "ぬるぽ";
}
0449デフォルトの名無しさん2006/03/04(土) 19:14:20
Mapじゃあかんのかね?
HashMap<String, String> map = new HashMap<String, String>();
for (int i=1; i<=10; i++) {
map.put("test_" + i, "String_" + i);
}
System.out.println(map.get("test_3"));
0450デフォルトの名無しさん2006/03/04(土) 19:35:18
>>445
getComponent()の引数なのですが、私の環境に
合わせて決め打ちとかしてしまってよいものなのでしょうか。
0451デフォルトの名無しさん2006/03/04(土) 19:39:18
べつにボタンのテキストを見て検索とかでも問題はないでしょ
コンストラクタのなかで特定しちゃいなよ
0452デフォルトの名無しさん2006/03/04(土) 20:32:49
>>451
その方法はちょっと考えたのですが、ボタンのテキストって
環境依存とかしないものなのでしょうか。
0453デフォルトの名無しさん2006/03/04(土) 21:34:21
>>451
setApproveButtonTextなんかでテキストを変えられるようだが。
0454デフォルトの名無しさん2006/03/04(土) 22:21:28
>>448
>>432
0455デフォルトの名無しさん2006/03/05(日) 00:03:19
>>442
0〜0x1f はコントロールなので抜きな。

for (int i = 0; i < 8; i++)
 System.out.print((char) (Math.random() * (0x10000 - 0x20) + 0x20));
System.out.println();

でも、本当はこれではダメ。というのはサロゲートな文字があって、
char 2 つないと1文字を表現できないから。
0456デフォルトの名無しさん2006/03/05(日) 00:04:55
>>444
半角文字? そりゃいかんな。Unicode 2.0 にはたしかに HALFWIDTH の
文字はある。あるのだがどちらにしろ環境依存だ。画面にどういった幅で
出るかは予想できない。
0457デフォルトの名無しさん2006/03/05(日) 00:08:14
>>455
お前それ自分で試した?
0458デフォルトの名無しさん2006/03/05(日) 00:09:35
半角英数字のどこが環境依存なんだろう・・・
0459デフォルトの名無しさん2006/03/05(日) 00:17:19
MS WORD で表示すると A も A も同じ幅。
0460デフォルトの名無しさん2006/03/05(日) 00:23:54
>>444,446,455
手を動かすくらいならこれでいいじゃん。
ttp://jakarta.apache.org/commons/lang/api/org/apache/commons/lang/RandomStringUtils.html#random(int, java.lang.String)
0461デフォルトの名無しさん2006/03/05(日) 01:09:26
キーイベントが上手く取得できないんですけど、何がまずいのやら。
期待する動作はキー入力で文字が出る予定なんですけど。
コードは大体下のような感じです。長いんでかなり省略してます。
フレームにはボタンとリストが張り付いてます。

class MyFrame extends JFrame
{
 コンストラクタ{
 MyKeyAdapter ka = new MyKeyAdapter();
 this.addKeyListner(ka);
 }
}

private class MyKeyAdapter extends KeyAdapter
 public void KeyPressed(KeyEvent e){
 System.out.println("キーイベント");
 }
0462デフォルトの名無しさん2006/03/05(日) 01:17:39
質問です。
ボタンをクリックしたらラベルの色を変えて
2秒その色を維持してからまた色を変えたいのですが
以下のコードではうまくいきませんでした。
ボタンをクリックしてもラベルの色が赤にならず
ただ、2秒待ってから緑になるだけでした。
うまくいく方法を教えてください。お願いします。

class TestFram extends JFrame{
JLabel label1;
JButton button1;

public TestFram(){
//省略
button1.addActionListener(new
ActionListener(){
public void actionPerformed(ActionEvent event){
label1.setBackground( Color.RED);
try{
Thread.sleep( 2000 );
}catch (InterruptedException e) {
System.out.println(e);
}
label1.setBackground( Color.GREEN );
}
});
//省略
}
}
0463デフォルトの名無しさん2006/03/05(日) 01:22:09
>>462
正解は「Threadに投げる」です。
0464デフォルトの名無しさん2006/03/05(日) 01:26:41
>>463
ありがとうございます。できそうです。
0465デフォルトの名無しさん2006/03/05(日) 02:04:46
>>461
×KeyPressed
○keyPressed
04664612006/03/05(日) 02:22:57
>>465
指摘どうもです。

自分のやり方だとキーイベントを取得できるのが、キーボードフォーカスを
持っているもののみだそうで。JFrameはキーボードフォーカスを持てない
のでイベントが送られてこない様です。
どうしたものか。
0467デフォルトの名無しさん2006/03/05(日) 02:42:39
キーボードフォーカスのメソッドをオーバーライドしてtrueを返せばおk
0468デフォルトの名無しさん2006/03/05(日) 03:25:23
>>467
ありがとうございます。
isFocusableをオーバーライドしてtrueを返すようにしたら
初回表示時はキーイベントを取得できました。
しかし、JFrameに貼り付けてるボタンや、リストを一度選択
するとJFrameにはフォーカスを戻すことができません。
後、特定のキーはフォーカスがボタン、パネル関係なしに
JFrameで処理させたいんですがどのような方法が考えられますか?
0469デフォルトの名無しさん2006/03/05(日) 04:20:43
内部のボタンやパネルを設定するときにaddNotifyを呼ぶと
上位のコンポーネントにキーイベントが伝わるはず。
0470デフォルトの名無しさん2006/03/05(日) 04:28:39
>>469
遅くにありがとうございます。近いうちに試したいと思います。
0471デフォルトの名無しさん2006/03/05(日) 09:34:17
>>468
特定のキーのキーボードストロークを取得して、
ActionMap と、InputMap をWHEN_IN_FOCUSED_WINDOW
で関連付ければいい。

0472デフォルトの名無しさん2006/03/05(日) 11:00:15
Javaで作られたイカしたテトリス知りませんか?
0473デフォルトの名無しさん2006/03/05(日) 11:03:56
イカれたテトリスなら知ってる。
0474デフォルトの名無しさん2006/03/05(日) 11:37:55
サーブレットの勉強してるんですが、トムキャット上では出来るようになったんで
実際のサーバー上で実行してみたいんですが、サーバーにはFTPでクラスファイルを
送ればいいんですか?
0475デフォルトの名無しさん2006/03/05(日) 11:42:20
>>474
おまいの使ってるサーバはサーブレット動くの?
サーブレットやJSPが動くところなぞ、そうないぞ。
0476デフォルトの名無しさん2006/03/05(日) 12:17:38
>>475
それ以前にJavaが実行できるサーバがないかと。
>>474
だから自前で用意してるサーバと仮定して、FTPでもなんでもいいです。
要はwebアプリケーションの階層構造とアクセス権がそのままならいいので。
.warファイルなら、Tomcatのwebappに放り込むだけ。
0477デフォルトの名無しさん2006/03/05(日) 12:34:20
そんな知識もない無能が実際のサーバーにうpしようとしてんのか?
サイバーテロでも起こす気か?
0478デフォルトの名無しさん2006/03/05(日) 12:47:07
>>452
idで識別しとけ。
0479デフォルトの名無しさん2006/03/05(日) 12:51:12
1:Nのクライアント−サーバをRMIで実現する際の構成としては以下のような
感じで良いのでしょうか?

クライアント(クラスA) →(RMI呼出) リモートクラス(クラスB) →(Socket通信) サーバ(クラスC)

クライアントからクラスBのメソッドを呼び出し、Socket作成してクラスCと通信。
サーバ(クラスC)内で要求待ち無限ループを行い、要求があれば処理して結果を返却する。
0480デフォルトの名無しさん2006/03/05(日) 14:20:18
Swingで、JPanelのpaint(Graphcis)をオーバーライドして

private Vector<Element> elements;

public void paint(Graphics g) {
 for(Element e : elements) {
  e.draw(g);
 }
}

こんなかんじで各要素を描画してるんだけど、
elementsの要素が増えてくると重くなるのはわかるんだが
さらに増えると急に動作が軽くなるのは何で?
Vectorクラスの特性?Graphicsの特性?
0481デフォルトの名無しさん2006/03/05(日) 14:22:55
妖精の属性
0482デフォルトの名無しさん2006/03/05(日) 14:24:00
>>480
Graphicsのせいだけど
そんなに描画するならBufferedImageのレイヤーにしたほうがいいよ
JLabelをクリックさせたりするなら別かもしれんけど

てかSwingでpaintをオーバーライドすんなや
0483デフォルトの名無しさん2006/03/05(日) 14:30:32
>>482
トンクス

>てかSwingでpaintをオーバーライドすんなや
なんてリスナー(?)使ったらいいのか教えてくださいませ
0484デフォルトの名無しさん2006/03/05(日) 14:31:16
paintComponent
0485デフォルトの名無しさん2006/03/05(日) 14:38:14
>>484
ありがと〜
0486デフォルトの名無しさん2006/03/05(日) 15:29:15
C/C++いっさいなし、Javaだけで開発されたOS - JNode
http://pcweb.mycom.co.jp/news/2006/03/03/341.html
0487デフォルトの名無しさん2006/03/05(日) 16:28:45
公式サイトからJDK落とせないんですけど、ただのサーバーダウンですか?
0488デフォルトの名無しさん2006/03/05(日) 16:39:57
>>487
確認してみたところ、

Notice: We're Offline for System Upgrades

だってさ。
0489デフォルトの名無しさん2006/03/05(日) 19:42:22
Javaのリフレクションにテンプレートが絡んでくると
ものすごくめんどくさいコードにならない?
04904892006/03/05(日) 19:59:16
たとえば

new Vector<Rectangle>();

を、Vector.classとRectangle.classと
Class.newInstance()を使って書くとどうなりますか?
0491デフォルトの名無しさん2006/03/05(日) 20:45:34
BitSet a = 00101010(2)
BitSet b = 00111110(2)
であるときaが全てbに含まれていると証明できる高速な演算はありますでしょうか
実際にはもっと馬鹿でかいbit配列なのですが、下記のコードでは実用に耐えられませんでした
BitSet c = (BitSet) b.close();
c.and(a);
return b.equals(c);
0492デフォルトの名無しさん2006/03/05(日) 21:17:54
BitSet に intersects ってメソッドがあるみたいだが
0493デフォルトの名無しさん2006/03/05(日) 21:21:16
それは触れてればOKってだけのもの
1101000
0001000
でtrueになるはず
0494デフォルトの名無しさん2006/03/05(日) 22:32:07
>>491
その馬鹿でかいbit配列は何ビットくらいなの?
0495デフォルトの名無しさん2006/03/05(日) 22:38:32
255bit程です。
0496デフォルトの名無しさん2006/03/05(日) 22:41:41
255bitって、扱い方間違ってねーか?w
0497デフォルトの名無しさん2006/03/05(日) 22:41:59

Javaマルチスレッドのサンプルコード説明などを見ると、以下のようなカウンタクラス(Count)において、
カウンタの値(count)を スレッドセーフにするには、 countUp()をsyncronized宣言する。もしくは、
countUpメソッドの内部をsyncronizedブロックで囲むといった 説明がされているように思います。

public class Counter {
 public static int count;
 public static void countUp() {
 int n = count;
 何らかの処理;
 count = n + 1;
 }
}

たしかに、上記を1000スレッドから実行し、実行後のcountの値を参照すると、期待される結果(1000)
では無く、もっと少ない値が返されます。
同期処理の定跡に従って、countUpをsyncronized宣言すると、最終的なcountは1000になってくれるので、
それはそれで良いのですが、一方で、 加算処理をインクリメント演算子に書き換えると、syncronized
宣言するまでもなく、countは期待通りに1000になってくれます。

public class Counter {
 public static int count;
 public static void countUp() {
  ++count;
 }
}

インクリメント演算子の実態は、count = count + 1 といった処理なのだと思いますが、このような1行処理であれば、
syncronizedを宣言するまでも無く、スレッドセーフになってしまうものなのでしょうか?
0498デフォルトの名無しさん2006/03/05(日) 22:48:44
>>497
1.
>  int n = count;
>  何らかの処理;
>  count = n + 1;
2.
>   ++count;

2は count = count + 1 になる。
1は count = n + 1 と見えるのだが。
0499デフォルトの名無しさん2006/03/05(日) 22:50:22
>>496
全てフラグですので間違ってはいないかと。
new boolean[255]より高速に出来て欲しいのです。
0500デフォルトの名無しさん2006/03/05(日) 22:53:46
>>498
レスありがとうございます。

1の場合、変数nと変数countの実体は別。
2の場合、変数countの実体は同じもの。

同じ変数を操作しているので、2の場合は問題は生じない。
と考えればよいのでしょうか?それとも的外れですかね。。
0501デフォルトの名無しさん2006/03/05(日) 22:56:38
>>499
そりゃ、メモリを犠牲にすれば早くもなるだろう
0502デフォルトの名無しさん2006/03/05(日) 22:58:55
>>501
どっちも消費メモリは同じくらいでは?
boolean[255]とlong[4]の違いですよ
0503デフォルトの名無しさん2006/03/05(日) 23:05:23
255bitって言ったら、値にして2の255乗ですよ?
現在のIPアドレスといえば、8bitを4ブロックに分けた32bitってのがあるが
値にして約43億。その値だけでもかなりのものなのに
0504デフォルトの名無しさん2006/03/05(日) 23:08:11
long4つで何を騒いでるの?
0505デフォルトの名無しさんNGNG
実行中のプログラムから自分自身を新しく作るにはどうすればいいのでしょうか?
例えばAを実行している時に違うウィンドウでAを実行するようなことなのですが。
0506デフォルトの名無しさん2006/03/05(日) 23:19:54
>>503
そもそも消費メモリの話しをしてるのになぜ値になるのかと。

別に491は255bitのフラグを扱うだけで255bitの整数を扱うと言ってる訳じゃないし
0507デフォルトの名無しさん2006/03/05(日) 23:59:16
>>499
BitSetのソースを見る限りでは、それほど遅い処理には思えませんでした。
BitSetを継承して、期待する処理を行うメソッドを追加するのはどうでしょうか?

>>500
実装依存だと思うので、明示的に同期処理をしたほうが無難だと思います。
# 2の演算がアトミックであれば、問題ない
0508デフォルトの名無しさん2006/03/06(月) 00:15:46
>>499
俺も一応試してみたけど別に遅いとは感じなかったけど…
499が言ってた実用に耐えられないというのはこれぐらいの処理時間で?

long start = System.currentTimeMillis();
while(count < 10000){
//ランダムに生成した500ビットのフラグa,bの比較
  BitSet c = (BitSet)a.clone();
  c.and(b);

  if(a.equals(c)) break;
  count++;
}
System.out.println(count + "回処理を実行しました \n1回の処理時間: " + ((double)( System.currentTimeMillis() - start ) / count) + "ms" );

出力(例)
10000回処理を実行しました
1回の処理時間: 0.0016ms
0509デフォルトの名無しさん2006/03/06(月) 00:22:47
>>507

疑問ついでに、同期処理関連でvolatile演算子について調べていたのですが、
参考になるサイトがありました。結局、volatile演算子もあてにはならない
ようなので、507さんのおっしゃるとおり、明示的に同期処理すべきとのこと
でした。

http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000466.html

0510デフォルトの名無しさん2006/03/06(月) 00:37:20
>>508
1000000ループで使っていました。
その後もいろいろ試してみたのですが
下記のコードの効率が良さそうでした。

a.xor(b);
boolean result = !a.intersects(b);
a.xor(b);
return result;

これ以上は本格的にビット演算学ばないと向上しなさそうですね
ともあれありがとうございました。
0511デフォルトの名無しさん2006/03/06(月) 00:45:50
>>505
  class A extends Thread {
または
  class A implements Runnable {
としておいて
  A a = new A();
  a.run();
じゃだめなの?
0512デフォルトの名無しさん2006/03/06(月) 00:49:09
>>491
return b.and(a).xor(a).isEmpty();
とどっちが速い?
0513デフォルトの名無しさん2006/03/06(月) 00:51:43
>>509
おせっかいな細かい訂正を。
volatileは、演算子ではなく、(フィールド)修飾子です。以上。
0514デフォルトの名無しさん2006/03/06(月) 01:02:25
>>512
xorを2度すると元に戻るという法則でcloneを避けたほうが効率的
ビット演算そのものより、newをさせない手法のが結果的に高速
0515デフォルトの名無しさん2006/03/06(月) 02:15:48
>>497
> カウンタの値(count)を スレッドセーフにするには、 countUp()をsyncronized宣言する。もしくは、
> countUpメソッドの内部をsyncronizedブロックで囲む

半分しかあってない。public なフィールドが不気味
同期には、排他制御の他に原子性や可視性に注意する。

>>507
> 結局、volatile演算子もあてにはならない

言語仕様 ver.3 (Java 5.0 以降)では、
volatile や finel 等のメモリモデルの改善がなされているので注意する。

> http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000466.html
> volatileは実際には実装されていない場合があり、その場合は機能しない。
そんなの Java じゃないクマー
0516デフォルトの名無しさん2006/03/06(月) 02:43:34
>>515
publicのままだと、他のクラスからcountを書き換えることができるから、
まずいかもしれないということでしょうか。

private static int count;
public static getValue() {
  return count;
}
とすることで、原子性と
0517デフォルトの名無しさん2006/03/06(月) 02:44:49
すいません途中で書き込んでしまいました。

publicのままだと、他のクラスからcountを書き換えることができるから、
まずいかもしれないということでしょうか。

そうすると、、、

private static int count;
public static getValue() {
  return count;
}

とすることで、原子性と可視性に気をつけたことになるのかな?
05185152006/03/06(月) 02:44:49
脳内フィルタリングしてたが

> http://www.kab-studio.biz/Programing/JavaA2Z/Word/00000466.html

volatile 修飾子つけると、++ や -- が排他的に演算できると書いてあるが、
そうだったっけ?
0519デフォルトの名無しさん2006/03/06(月) 02:59:43
>>516
簡単にフォーリングっぽく言うと、

原子性は、double と long はとにかく同期しないとだめということ。
2バイトで構成されるであろうこれらは、
1バイトだけ変化したとんでもないモノが読めてしまう可能性がある。

可視性は、読み取り側も同期しないといけないこと。
ここで、同じオブジェクトのロックを取得することが重要。
static メソッドの synchronized は
そのクラスオブジェクトのロックを取得するシンタックスシュガー
0520デフォルトの名無しさん2006/03/06(月) 03:00:55
>>519
>簡単にフォーリングっぽく言うと、
フィーリングだ フォーリングってなんだorz もう寝る
0521デフォルトの名無しさん2006/03/06(月) 03:10:01
>>519
そうすると、countがlongの場合、こうなのだろうか。。

private static long count;
public static syncronized long getValue() {
  return count;
}

マルチスレッドで動作する読み取り側は、
以下のようにカウンタ値を操作すればよい?

Counter.countUp();        // カウンタを上げる
long l = Counter.getValue();  // カウンタ値を取得する。
0522デフォルトの名無しさん2006/03/06(月) 03:48:40
>>521
long でなくとも、countUp および getValue は synchronized にし、
フィールドは直接触れないようにするべき。

ただし、例えば GUI 上に進捗状況を表示するために読み取るなど
遅延がそれほどクリティカルではない場合は、
(long や double でない限り)読み取り側の同期をせずスループットを優先する
という方法もあるかもしれないが、
まあ、そんな微妙な(危険な)方法はプロファイラを見てからの話だろう。

要は、

>>497
>たしかに、上記を1000スレッドから実行し、実行後のcountの値を参照すると

どうやって参照してるかいな と突っ込みを入れたかっただけ
0523デフォルトの名無しさん2006/03/06(月) 08:50:14
>>519
> 原子性は、double と long はとにかく同期しないとだめということ。
> 2バイトで構成されるであろうこれらは、
2バイトじゃないぞ。
0524デフォルトの名無しさん2006/03/06(月) 10:06:46
ほー、longの読み取りはアトミックじゃないんだ。
じゃあ、intの読み取りは必ずアトミック?16bitのVMでも?
0525デフォルトの名無しさん2006/03/06(月) 10:19:37
16bitのVMって言語規定とVM規定に違反しないか?
0526デフォルトの名無しさん2006/03/06(月) 10:27:03
>>525
16bitのVMがあってもいいけどintの読み書きがアトミックじゃないと違反する
0527デフォルトの名無しさん2006/03/06(月) 10:27:51
>>524
http://www.y-adagio.com/public/standards/tr_javalang2/memory.doc.html#28733
0528デフォルトの名無しさん2006/03/06(月) 14:39:41
うちの Athlon 64 は x86_64 版 Java VM で動いている時は
1回の処理で書けてるかな?

まあでもそのうち 128 bit CPU なんて出てきたら 64 ビットは
一回で書けてもあまり効率よくなくなっちゃうんだろうなあ。
0529デフォルトの名無しさん2006/03/06(月) 16:07:39
JNIのスレが無いのでここでJNIについて質問です。
CからJAVAをJAVAからCを呼ぶようなプログラムは可能ですか?
JAVAとCをクロスして呼ぶとJNIの関数で異常終了を起こしてしまうので
宜しくお願いします。
05305292006/03/06(月) 16:14:50
わかりづらいので補足です。
JAVA側でnative宣言したC側の関数を実行し、C側ではCall***Method関数で
JAVA側を呼ぶという事をすると異常終了しまいます。
0531デフォルトの名無しさん2006/03/06(月) 16:18:08
昔 Java → C → Java で呼ぶプログラム作ったけど (JDK 1.2, 1.3, 1.4) なんとも無かったけどな。
C 側で UTF-8 ⇔ Shift_JIS 変換する必要があったって面倒なので Java のメソッド読んだ。
0532デフォルトの名無しさん2006/03/06(月) 16:18:34
>>530
普通に呼べる。

★お前らJavaはJNIで組もうぜ★
http://pc8.2ch.net/test/read.cgi/tech/1033795664/
0533デフォルトの名無しさん2006/03/06(月) 17:05:30
Jakarta Lucene+Senで日本語検索処理を試しているんだけれど、
同じ組み合わせでやってる人いますか?

インデックス作成対象のファイルがSJIS以外の場合の検索って、
どうすんだろ・・・?
05345332006/03/06(月) 17:21:08
自己解決した。
0535デフォルトの名無しさん2006/03/06(月) 20:19:09
Java コンソールでvを押すと強制終了するのは仕様ですか?ブラウザはIE6.1
Java VM: Java HotSpot(TM) Client VM (1.5.0_06-b05 mixed mode, sharing)
0536デフォルトの名無しさん2006/03/06(月) 20:34:07
そんな仕様だったかなあ?
とりあえず '?' を入力してみな。ヘルプ出ると思うから。
05375352006/03/06(月) 20:45:01
?を入力しても何も起こりません。
vを押すとhs_err_pidXXX.txt(XXXは毎回異なる数字)というファイルがデスクトップに作成されます。
ブラウザ起動から1度もAppletを使用していないときにコンソールでvを押すと強制終了するみたいです。
0538デフォルトの名無しさん2006/03/06(月) 20:54:37
現在、Javaアプレットを使って、
xmlファイルを作るプログラムを作っています。

jre1.3だとちゃんと動作するのですが、
jre1.4で実行した時、下記のようなエラーが発生してしまいます。
java.lang.NoClassDefFoundError: org/apache/xerces/framework/XMLParser

xmlを作成・更新するクラスの中で、jre1.3とjre1.4で使えるクラスに差があるのでしょうか?
あと、両方で動作するようにするにはどうすればいいのでしょうか?
0539デフォルトの名無しさん2006/03/06(月) 21:13:32
>>538
>xmlを作成・更新するクラスの中で、jre1.3とjre1.4で使えるクラスに差があるのでしょうか?
大きな声で、Y e s !
1.3→1.4のとき、XMLパーサが組み込みになりました。ただしXMLライブラリは、crimsonというものです。
エラーメッセージではXerces-Jを要求しているみたいですね。
たぶんCLASSPATHに指定されているのでしょうが、残念ながら組み込みが優先されてしまいます。
そのようなときは、「-Djava.endorsed.dirs=Xercesを置いたディレクトリ」をjavaコマンドの引数に
つけてください。
0540デフォルトの名無しさん2006/03/06(月) 21:18:34
>>537
あれ? 違ったかな? 'h' かも知れない。
ていうか、ヘルプを出すには何かを押せっていうのが Java Console の上の方に出てない?
0541デフォルトの名無しさん2006/03/06(月) 21:29:16
配列作るとき、毎回ArrayListとか使ってるんだけど普通だよね?
[]←これ全然使わない。
後々何か追加したい時があるかもしれないってどうしても思うでしょ。
よっぽど変更は無いって自信がない限り []←これ使わないでしょみんな?
0542デフォルトの名無しさん2006/03/06(月) 21:32:04
>>541
ものによるな。
0543デフォルトの名無しさん2006/03/06(月) 21:33:35
俺は追加があると確定してるもの以外は配列派。
0544デフォルトの名無しさん2006/03/06(月) 21:35:56
たしかにものによるな
ゲームとかだとCollectionはHashMapくらいしか使わなくなる
逆にアプリとかだとプリミティブはintとbooleanくらいしか使わない
0545デフォルトの名無しさん2006/03/06(月) 21:40:57
>>543
おれも。
ArrayListも無理やり[]にして回す。
■ このスレッドは過去ログ倉庫に格納されています