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

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

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

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

以下のエラーが表示されて、途方にくれているあなたは、下のページへ。
「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath

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

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */

また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

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

次スレは>>980あたりでお願い.....
0002デフォルトの名無しさん2005/07/22(金) 09:46:15
l
0003デフォルトの名無しさん2005/07/22(金) 09:56:34
以下の様にクッキーからユーザ名を取得して、画面に出力すると、
なぜかいつも『JSESSIONID』という文字が出力されてしまいます。
この『JSESSIONID』はいったいなになのでしょうか。
宜しくお願い致します

Cookie[] ck = request.getCookies();
 if (ck != null) {
   for(int i = 0;i < ck.length;i++) {
     name = ck[i].getName();
     val = ck[i].getValue();
     if (name.equals("username")) name = val;
   }
 }
0004デフォルトの名無しさん2005/07/22(金) 10:05:35
>>3
> この『JSESSIONID』はいったいなになのでしょうか。
Servletコンテナがセッションを特定するために、
このリクエストに関連するセッションに付与したユニークなID。
0005関連スレ2005/07/22(金) 10:44:26
// 姉妹スレ(丸投げはこちらで)
★★ Java の宿題ここで答えます Part 52 ★★
http://pc8.2ch.net/test/read.cgi/tech/1119356753/ [j2ch]

// 関連スレ
【Java/C/PHP/D/他】統合開発環境Eclipse M17
http://pc8.2ch.net/test/read.cgi/tech/1114847888/ [j2ch]
NetBeans / Sun One Studio
http://pc8.2ch.net/test/read.cgi/tech/1056116495/ [j2ch]

JSF(JavaServer Faces)【.NET死亡?!!!】
http://pc8.2ch.net/test/read.cgi/tech/1059208396/ [j2ch]
【Java】Apache Jakarta Commons
http://pc8.2ch.net/test/read.cgi/tech/1094954163/ [j2ch]
Java低速GUI Swing 3
http://pc8.2ch.net/test/read.cgi/tech/1121700954/ [j2ch]
Java 高速GUI SWT 2
http://pc8.2ch.net/test/read.cgi/tech/1068349883/ [j2ch]
★お前らJavaはJNIで組もうぜ★
http://pc8.2ch.net/test/read.cgi/tech/1033795664/ [j2ch]

【Java】次世代Java・J2SE1.6の動向【Mustang】
http://pc8.2ch.net/test/read.cgi/tech/1081698555/ [j2ch]
Java系スクリプト言語Groovy
http://pc8.2ch.net/test/read.cgi/tech/1080052050/ [j2ch]

J2EEを語ろう
http://pc8.2ch.net/test/read.cgi/tech/1054997727/ [j2ch]
EJBは終わってる
http://pc8.2ch.net/test/read.cgi/tech/1036481443/ [j2ch]
000652005/07/22(金) 10:48:33
あ、URL にゴミついちゃった。on_
0007デフォルトの名無しさん2005/07/22(金) 11:30:42
HttpSession ses = request.getSession();   
ses.setAttribute("login",name);       
pageContext.forward("frame.jsp"); ←フレーム分割しているページを表示


あるページで、上記の様にフレーム分割しているページを呼び出すと、
5秒後くらいに(frame.jspの)表示が切り替わって、エラーが表示されてしまいます。
『<META HTTP-EQUIV="Refresh" CONTENT="秒">』とか書いてないのに勝手に切り替わるのです。
アドレス打ちで直接frame.jspを表示すると、表示は勝手に切り替わったりしません。
原因が分かる方がいらっしゃいましたら宜しくお願い致します。
0008デフォルトの名無しさん2005/07/22(金) 11:42:53
double[][] hoge = new double[n][m]; // n, mは正の整数
for (int i = 0; i < n; i++) {
 for (int j = 0; j < m; j++) {
  hoge[i][j] = getValue(i, j);
 }
}

のような感じでhogeにi, jを基にして得られたユニークでない正の実数値が入ってるとして、
その値の小さい順にソートして、基になったi, jを標準出力に表示するメソッド
void printHoge(double[][] hoge)みたいなのを作りたいのですが、どのように実装すればいいでしょうか。
よろしくお願いします。

↓こんな感じで…
i = 3, j = 100, value = 0.000001
i = 92, j = 9, value = 0.000023
…
0009デフォルトの名無しさん2005/07/22(金) 12:16:44
>>8
hogeの内容は変えずに、 iとjのペアを要素に持った配列を作って、
その配列をソートすれば良いのでは?
0010デフォルトの名無しさん2005/07/22(金) 13:17:18
>>8
 double[][] hoge = new double[n][m]; // n, mは正の整数
 for (int i = 0; i < n; i++) {
  for (int j = 0; j < m; j++) {
   hoge[i][j] = getValue(i, j);
   list.add( new Foo(i, j, hoge[i][j] ) );
  }
 }   
 Collections.sort( list );
 
 for (Iterator itr = list.iterator(); itr.hasNext();) {
  Foo elm = (Foo) itr.next();
  System.out.println( "i:"+ elm.i_ + " j:" + elm.j_ + " value:" + elm.val_);
 }
-------------------------------------------
public class Foo implements Comparable {
 
 int i_,j_;
 double val_;
 
 public Foo( int i, int j, double val) {
  i_ = i; j_ = j; val_ = val;
 }

 public int compareTo(Object o) {
  return Double.compare( val_, ((Foo)o).val_ );
 }

}
確かめてないけど。
あと細かいところで気になる人が多数居ると思うけど、面倒だから。
こんな感じだと思う。わざわざオブジェクト作るのかってはなしもあるし。
0011デフォルトの名無しさん2005/07/22(金) 13:18:50
う、printHoge()みたいにする必要があったのか。
それは自分で頑張れ。
0012デフォルトの名無しさん2005/07/22(金) 16:41:08
>>8のいうユニークってどういう意味だっけ。
数学的な意味でいってる?
一般的な意味はわかるが数学的な意味は忘れてしまった
0013デフォルトの名無しさん2005/07/22(金) 16:46:18
同一にならない、という意味かと>ユニーク
0014デフォルトの名無しさん2005/07/22(金) 16:53:52
>>12
プログラムやシステムに関わる者が"ユニーク"の意味がわからないのはやばいぞ。
0015デフォルトの名無しさん2005/07/22(金) 16:58:48
一般的な意味の方が判らない俺
0016デフォルトの名無しさん2005/07/22(金) 17:06:59
ユニークだな君は
って言われたら、「独特だな」「ひと味違うな」と言う意味に私はとらえるけど、
周りに聞いたら、「おもしろい」って意味でしょっていわれた。
仕事で意見言って、上司に真顔で
「実にユニークだ」
って言われても、君っておもしろいねってとらえるんかな。
おかしいだろ。
0017デフォルトの名無しさん2005/07/22(金) 17:09:52
16進数をASCIIに変換するのってどうやるの?
0018デフォルトの名無しさん2005/07/22(金) 17:10:57
一般的には「個性的」かな。良い意味でも悪い意味でも。
0019デフォルトの名無しさん2005/07/22(金) 17:14:40
>>17
聞きたいことはたぶんわかるが
もう少しちゃんと質問しろ。
0020デフォルトの名無しさん2005/07/22(金) 17:27:56
16進数をASCIIに変換するやり方を教えて下さい.
お願いします.orz
0021デフォルトの名無しさん2005/07/22(金) 17:34:38
>>20
もっとくやしく
0022デフォルトの名無しさん2005/07/22(金) 17:42:35
違うだろー。
丁寧に聞けっていってるんじゃないの?

System.out.println( (char)0x41 );
こういう事がしたいの?
0023デフォルトの名無しさん2005/07/22(金) 17:45:26
0x00 を '0' もしくは '00'と表示したいのかな。
System.out.println(Integer.toString(new Integer(x));

でいいのだろうか。
0024222005/07/22(金) 17:53:55
×丁寧に聞けっていってるんじゃないの?
○丁寧に聞けって言ってる訳じゃないんじゃないの?
0025デフォルトの名無しさん2005/07/22(金) 18:00:49
16進でString strに68747470が入っていて.これをASCIIに変換してhttpを得たい.
できますかね?
0026デフォルトの名無しさん2005/07/22(金) 18:07:55
>>25意味不明だが
この68747470はIPアドレスで、それから www.hoge.com とかのドメインが取りたいの?
0027デフォルトの名無しさん2005/07/22(金) 18:18:53
デフォルトコンストラクタとは、
「コンパイル時にコンストラクタが存在しないときに、コンパイラが自動生成するコンストラクタ」か
「引数をとらないpublicなコンストラクタ」のどちらでしょうか。
検索すると両方出てきて、どちらが正しいのかわかりません。自分は前者だと思っていました。
0028デフォルトの名無しさん2005/07/22(金) 18:24:02
>>25
もちろんできますよ。
・Stringから2文字ずつ切り出す方法
・2桁の16進数文字列をcharにする方法
・charを繋げてStringにする方法

どれがわからない?

0029デフォルトの名無しさん2005/07/22(金) 18:30:38
おまいすごいな>>28
httpを得たいってとこからよく推測する気になるな。
0030282005/07/22(金) 18:39:20
>>29
"68747470"と"http"を見ればすぐわかるだろ…
0031デフォルトの名無しさん2005/07/22(金) 18:43:59
いや、httpを得るってなんなのよ。
0032デフォルトの名無しさん2005/07/22(金) 19:28:52
>>28
二番目と三番目を教えてくださorz
0033デフォルトの名無しさん2005/07/22(金) 20:13:49
どうかお知恵を拝借させてください。
CUIでプログラムを作成しておりますが、「Ctrl+Cで強制的に終了させた」
というイベントの検知は可能なのでしょうか?
強制終了させた場合に終了処理を走らせたいのです。
0034デフォルトの名無しさん2005/07/22(金) 20:34:09
>>32
2番目は、Integer.parseInt(s, radix)
3番目は、StringBuffer.append(char)
0035デフォルトの名無しさん2005/07/22(金) 23:23:06
>>27

http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.8.9
> If a class contains no constructor declarations, then a default constructor
> that takes no parameters is automatically provided:
(以下略)

微妙
0036デフォルトの名無しさん2005/07/23(土) 00:44:40
継承は、カプセル化を崩す(継承元の実装を知る必要がある)という点で
オブジェクト指向の敵。このため、大抵の場合は、
継承よりコンポジションの方が良いといわれる。

実装や継承は、そのクラスの作り方ではなく使われ方にあると思う。
機能追加のために使うのではなく、
ポリモーフィズムを利用したり、デザインパターンの適用など?
一般に、継承のために(継承を想定して)作られたクラス以外は、
継承すべきでないとかどこぞで言われたりする。

亀レス
0037デフォルトの名無しさん2005/07/23(土) 00:54:47
Stack・・
0038デフォルトの名無しさん2005/07/23(土) 10:15:08
>>35
JLSと同じ意味で default constructor を使うなら >>27 の前者でしょ。
0039デフォルトの名無しさん2005/07/23(土) 11:34:40
いきなり現れてすみません・・・
BufferedImageからImageへの変換について教えてくれませんか?
単純に
bufimg = (BufferedImage)img
のようにキャストを用いて変換を試みるとエラーとなってしまいます・・・
0040デフォルトの名無しさん2005/07/23(土) 11:50:10
>>39
> bufimg = (BufferedImage)img
これは Image から BufferedImage に変換しようとしてるんだけど。

img が BufferedImage のインスタンスだと確信できないなら
img instanceof BufferedImage とかで確認してからやった方がよさげ。
0041デフォルトの名無しさん2005/07/23(土) 11:53:34
Graphics g = img.getGraphics();
g.drawImage((bufimg, 0, 0, null);
0042デフォルトの名無しさん2005/07/23(土) 12:20:01
>>40
>>41
素早いレスありがとうございます
>>40さんのご指摘のとおり、Image→BufferedImageに変換です
>>41さんのようにしてみましたが、イマイチうまくいきませんでした・・・
drawImage(Image img, int x, int y, ImageObserver observer)
ですのでImage引数にBufferedImageの変数は与えることができるのでしょうか?
もう少し自分でも試してみます
他にも何かアイデアがあれば再び教えていただければ幸いです
0043デフォルトの名無しさん2005/07/23(土) 12:38:04
>>41
逆だろ。Image から BufferedImage に変換するんなら、
BufferedImage bufimg = new BufferedImage(img.getWidth(null), img.getHeight(null), BufferedImage.TYPE_INT_ARGB);
Graphics g = bufimg.getGraphics();
g.drawImage(img, 0, 0, null);
0044デフォルトの名無しさん2005/07/23(土) 12:43:36
>>43
迷ったんだが >>39 の2行目を優先した。
0045392005/07/23(土) 13:01:48
みなさん本当に本当にサンキューです
おかげさまで無事できました。
あと、BufferedImage,Imageの変換の方向など少し混乱させてすみませんでした

とても助かりました
0046デフォルトの名無しさん2005/07/23(土) 14:54:00
Vector vec = new Vector();
String str = "abc";

/*
vecに文字列を取り込む処理をする
*/

if(vec.contains("abc")
{
for(int i=0;i<vec.size();i++)
{
if(vec.elementAt(i).toString() == str)
System.out.println(str+"が見つかりますた");

}

}
というコードを書きたいのですがif(vec.elementAt(i).toString() == str)
ここがどうもfalseになり、その下の画面出力が実行できません。
何か良い大体手法はありませんでしょうか?
0047デフォルトの名無しさん2005/07/23(土) 14:57:45
== で比較すんなボケ。
0048デフォルトの名無しさん2005/07/23(土) 17:17:48
>>46
47を補足するとequalsを使って比較しろって事だ。
==とequalsの違いについては自分で調べてくれ。
0049デフォルトの名無しさん2005/07/23(土) 17:38:47
>>46
Vector#indexOf(Object, int) を使って調べても良いかもね。
0050デフォルトの名無しさん2005/07/23(土) 20:26:24
どうしても==を使いたければ String#intern() でKIMARI!!!!
0051崖っぷち2005/07/24(日) 00:12:32
Java2310-035の試験に一度落ちました。配列の問題で
下記の問題が未だに理解できません。
答はA,B,E,FなのですがCとEの違いが分からないです。
なぜなのか教えてください。
何卒宜しくお願いします!

1.public class Test{
2.public static void main(String[]args){
3.byte[][]big=new byte[7][7];
4.byte[][]b=new byte[2][1];
5.byte b3=5;
6.byte b2[][][][]=new byte[2][3][1][2];
7.
8.}
9.}

7行目に挿入してコンパイルできるコードは?

A.b2[0][1]=b;
B.b[0][0]=b3;
C.b2[1][1][0]=b[0][0];
D.b2[1][2][0]=b;
E.b2[0][1][0][0]=b[0][0];
F.b2[0][1]=big;
0052デフォルトの名無しさん2005/07/24(日) 00:33:25
坊やだからさ。
0053崖っぷち2005/07/24(日) 00:59:04
>>52
理解できず質問です、51の事でしょうか?
0054デフォルトの名無しさん2005/07/24(日) 01:00:08
SQLJって使ったことありますか?
SQLJを使ったJAVAプログラムで、同じ内容のSQLステートメントを何度も発行します。
何度も同じSQLステートメントを書くのが格好悪いので、同じステートメントを繰り返し
使いたいのですが、どうすればいいでしょうか。
ちなみに使うSQLステートメントは"SELECT COUNT(1) FROM XXX"です。
0055デフォルトの名無しさん2005/07/24(日) 01:03:56
>>51
b2[1][1][0]はbyte[]型なのに、
それと一致しないbyte型のb[0][0]を代入してるからCはダメ。
b2[0][1][0][0]はbyte型だからEは正しい。
0056デフォルトの名無しさん2005/07/24(日) 01:06:55
byteの四次元配列で、実際にbyte型を格納できるのは、四次元全てを指定した時だけ。
たとえばb2[0]に入っているのは、より次元の低い配列への参照だ。b2[0][0][0][0]には
byteが入っている。

new byte[2][4]だったら、byte[2]には、byte[4]への参照が二つ入っていると思えばいい。
0057崖っぷち2005/07/24(日) 01:20:52
>>55-56
ありがとうございます。
なんとなく理解できました、もっと完璧に理解できるように
あと少し時間を掛け、問題と解説を眺めて考えます。
0058崖っぷち2005/07/24(日) 01:29:57
>>55-56
ありがとうです。すっきりしてやっと寝ます・・感謝!
0059デフォルトの名無しさん2005/07/24(日) 01:45:39
55だけど、たぶん次は受かりますよ。私でも受かりましたから。
0060デフォルトの名無しさん2005/07/24(日) 01:46:25
>54
Cで埋め込みSQLなら経験がある漏れが来ましたが

そのステートメント発行するとこをメソッドに切り出したらどない?
0061デフォルトの名無しさん2005/07/24(日) 06:53:47
Vectorの中にVectorを入れ、その中の要素を参照するにはどうすればいいでしょうか?
0062542005/07/24(日) 10:23:18
>60
なるほど、ありがとう。
STRING型の変数にSQL文を入れて、それを何度も使いまわして埋め込む、ってことはできなんだよね?
0063デフォルトの名無しさん2005/07/24(日) 12:44:38
>61
一回入れたVectorを取り出して、その中にアクセスしてみ。

Vector container;
Vector contained;
//.....
//containedに何か入れとく
contained.add( something );

//それをcontainerに入れとく。
container.add( contained );
//...中略
//入れられたVector (contained) を取得
Vector v = (Vector)container.lastElement();

//入れられたVectorの要素を取得
Object element = container.get( i );
0064デフォルトの名無しさん2005/07/24(日) 13:32:32
>>3
> 以下の様にクッキーからユーザ名を取得して、画面に出力すると、
> なぜかいつも『JSESSIONID』という文字が出力されてしまいます。
> この『JSESSIONID』はいったいなになのでしょうか。
> 宜しくお願い致します
>
> Cookie[] ck = request.getCookies();

このメソッドってさあ

こう書き換えたくね?

List<Cookie> getCookies(){

}
0065デフォルトの名無しさん2005/07/24(日) 13:37:56
>>63よ、こっちのほうがいいぞ。
> >61
> 一回入れたVectorを取り出して、その中にアクセスしてみ。
>
> Vector<Vector> container = new Vector<Vector>();
> Vector<何か> contained = new Vector<何か>;
> //.....
> //containedに何か入れとく
> contained.add( something );
>
> //それをcontainerに入れとく。
> container.add( contained );
> //...中略
> //入れられたVector (contained) を取得
> Vector v = container.lastElement();
>
> //入れられたVectorの要素を取得
> 何か element = container.get( i );

0066デフォルトの名無しさん2005/07/24(日) 13:44:32
いや、こっちのほうがいいぞ。
List<List> container = new ArrayList<List>();
List<何か> contained = new LinkedList<何か>();

> //containedに何か入れとく
> contained.add( something );
>
> //それをcontainerに入れとく。
> container.add( contained );
> //...中略
> //入れられたList (contained) を取得
> List v = container.get(size() - 1);
>
> //入れられたVectorの要素を取得
> 何か element = container.get( i );
0067デフォルトの名無しさん2005/07/24(日) 13:49:40
取り出すならgetではなくIteratorで

List<List<何か>> container = new ArrayList<List<何か>>();
List<何か> contained = new LinkedList<何か>();

> //containedに何か入れとく
> contained.add( something );
>
> //それをcontainerに入れとく。
> container.add( contained );
> //...中略
> //入れられたList (contained) を取得
Iterator<List<何か>> containerIterator =container.iterator();
List<何か> contained = null;
Iterator<何か> containedIterator = null;
何か something = null;
while(containerIterator.hasNext()){
 contained = containerIterator.next();
 containedIterator = contained.iterator();

 while(containedIterator.hasNext()){
  何か = containerIterator.next();
  何か.処理したいメソッドとか();
 }
}
0068デフォルトの名無しさん2005/07/24(日) 13:53:40
いや、Iteratorは使わずに拡張for文でもっと簡単にできるぞ

List<List<何か>> container = new ArrayList<List<何か>>();
List<何か> contained = new LinkedList<何か>();

> //containedに何か入れとく
> contained.add( something );
>
> //それをcontainerに入れとく。
> container.add( contained );
> //...中略
> //入れられたList (contained) を取得

for(List<何か> contained : container){
 for何か something : contained){
  何か.処理したいメソッドとか();
 }


}
0069デフォルトの名無しさん2005/07/24(日) 15:16:34
カスタムタグのTLDに記述する「rtexprvalue」って
なんの略語なの?
0070デフォルトの名無しさん2005/07/24(日) 15:51:56
>>69
RunTime EXPRession Value
0071デフォルトの名無しさん2005/07/24(日) 15:53:40
アールテフ プライベート ヴァリュー
0072デフォルトの名無しさん2005/07/24(日) 16:00:35
>70
ランタイムだったのですか。スッキリ thx!
0073デフォルトの名無しさん2005/07/24(日) 16:08:13
みなさんこんにちは

現在JSP/Servletにて制作中で、
パッケージ org.apache.commons.fileupload を使って
ファイルのアップロードには成功しました

しかし、アップロードの際に、動的にディレクトリを生成したいのですが
フォルダを生成するクラス、というのはあるのでしょうか?
0074デフォルトの名無しさん2005/07/24(日) 16:15:01
>>73
java.io パッケージのAPIドキュメントとにらめっこ汁。
ServletとかCommons FileUpload とか全然関係ないぞ。
Javaの入門書をもう一度読み直してみるといい。
0075デフォルトの名無しさん2005/07/24(日) 16:38:15
>>74
ありがとうございました。発見しました

やはり専門書は何か買った方がいいですかね
全てgoogle先生に頼っていたので…
0076デフォルトの名無しさん2005/07/24(日) 17:59:22
>>73
ssh, rsh, telnetって知ってるか?
jsch.jarをダウンロードして使う凝った
0077デフォルトの名無しさん2005/07/24(日) 18:43:13
えーリモートからシェルコマンド投げるのー?
おっかねえなぁ。
0078デフォルトの名無しさんNGNG
ハイスコアを作るにはどうすればいいですか?
0079デフォルトの名無しさん2005/07/24(日) 21:17:57
win x64 Editionを使用しているのでJDKも正式版が出てれば、
それ用のを入れたいのですが、
SunのDownload Siteの「Windows AMD64 Platform」
って"Windows AMD64 executable"ってなってます。

この"executable"って単に実行可能形式ってことですか?
それとも何か意味があるんですか?
英語苦手なんでよろしくお願いします。
0080デフォルトの名無しさん2005/07/24(日) 22:22:43
コマンドプロンプト画面を表示させずにJavaプログラムを起動する方法はありませんか?
バッチファイルから起動してもおまけの黒画面が付いてきて鬱陶しいのですが
0081デフォルトの名無しさん2005/07/24(日) 22:24:01
>>79
その認識で大丈夫
実行形式だから、インストーラーが走る。                 トオモウ。
0082デフォルトの名無しさん2005/07/24(日) 22:42:40
javascriptのAPIってありますか?
0083デフォルトの名無しさん2005/07/24(日) 22:56:29
>>80
jarファイルに汁
0084デフォルトの名無しさん2005/07/24(日) 23:08:18
>>80
javaコマンドじゃなくてjavawコマンドでアプリを起動すればOK。
0085792005/07/24(日) 23:21:37
>>81
了解しました。
0086デフォルトの名無しさん2005/07/24(日) 23:56:20
Javaで縦書きのエディタって作れる?
どのクラスが使えそう?
0087デフォルトの名無しさん2005/07/25(月) 00:58:32
java3Dのプログラムを作ったんですが
それをプロンプトでコンパイルすると実行できるんですが
イクリプスを使って実行しようとするとインポート文の所でエラーになっちゃいます
(↓ここ全部)
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;

これはなぜですか?
0088デフォルトの名無しさん2005/07/25(月) 02:02:02
>>87
j3d.jarをライブラリに追加しろ

それから
Eclipseに関する話題は今後Eclipseスレですること

0089デフォルトの名無しさん2005/07/25(月) 08:06:46
こんにちは
現在Tomcat、jsp、Servletでアプリケーションを作ってるのですがサーバーの
メモリが少ないため色々と工夫しています。
cronでSystem.gc();を行うプログラムを実行して1時間おきに定期的に
ガーベッジコレクションを行おうと思うのですがこういうことはサーバー管理
として一般的に見てありでしょうか?
0090デフォルトの名無しさん2005/07/25(月) 09:13:15
>>89
メモリを増やすというシンプルでローコストな解決法ではいかんのかね?
System.gc()はgcに対してリクエストは出すが、必ずしもgcされるという
保障はない。
0091892005/07/25(月) 09:37:20
>>90
ご返答ありがとうございます。
レンタルサーバーでJava 仮想マシンのメモリの総容量は64Mです。
サーバーの割り当てられているメモリは100Mくらいのようなので
Xmxも64Mが最適値のようです。
そこまでメモリがなくなるというわけではないのですが定期的に
メモリのメンテナンスをする意味でやろうと思っています。
gcをやったらタイミング的に危ないときがあるなどありますでしょうか?
0092デフォルトの名無しさん2005/07/25(月) 09:59:37
>>91
OutOfMemoryErrorが発生するような状況でなければ
VM任せにしておいていいよ。
アプリ側でわざわざSystem.gc()呼ばなきゃならないのは
少し特殊な状況だと思っておいていい。
「定期的にメモリのメンテナンスをする」ためのSystem.gc()は無意味。
0093892005/07/25(月) 10:37:27
あまり意味がないということですね。
ありがとうございました。
0094デフォルトの名無しさん2005/07/25(月) 11:20:26
>>89System.gc()を使うなら
java.lang.ref.Referenceを使った方が良い。
Javaの実行オプションで最大ヒープメモリサイズを上げてみるとか
Tomcat側の設定server.xmlを弄ってみるとか。
無駄にnewしているところはないか?
Servlet側でできることを無理矢理JSPでやろうとしていないか?
DBアクセスするときにデータソースを使わずに操作していないか?
考えられることはいくらでもある。

J2EEパフォーマンスチューニングという言葉もある。
探してみれ。

オライリー本にもパフォーマンスを上げる方法が載っている
0095デフォルトの名無しさん2005/07/25(月) 11:21:12
>>91
オブジェクトをシリアライズしてみるとか
0096912005/07/25(月) 11:52:05
Apacheと連携しているのでポート8080を使用しないようにしたらたまーに
Tomcatが落ちてしまうのがなくなりました。
VMサーバの最大ヒープメモリサイズはTomcat(JDK)をインストールする
ときに指定しないとダメだとググったら書いてありました。
実際setenv.shに-Xmxオプションを指定しても〜identified〜という
エラーが出てしまいましたので-Xms64mのみ指定しています。
いまはservletをできるだけ小さく分割しています。
0097912005/07/25(月) 11:52:55
↑ Tomcat(JDK) → Tomcat(JDK?)
0098困った2005/07/25(月) 12:12:13
現在、Strutsで開発しているんだけども
こんな事って可能でしょうか。

○strutsのフレームワークを利用したいソース
  struts-config.xmlで<Action>タグでマッピングをかける

○Servletのみで行いたいソース
  web.xmlにて、 <servlet>
<servlet-name>*****</servlet-name>
<servlet-class>******</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>***</servlet-name>
<url-pattern>***</url-pattern>
</servlet-mapping>

と表記。

そもそも、Strutsを使った時点で、もう普通のweb.xmlでサーブレットのみを読み出せないかと試みておりますが、呼び出せないのです。。。







0099デフォルトの名無しさん2005/07/25(月) 12:30:40
>>96
> VMサーバの最大ヒープメモリサイズはTomcat(JDK)をインストールする
> ときに指定しないとダメだとググったら書いてありました。
それはググッた先のサイトがクソだな。
JAVA_OPTS変数にVMの起動引数を指定できる。
Tomcatの起動スクリプトのコメントをよく見ろ。
0100デフォルトの名無しさん2005/07/25(月) 12:32:17
>>98
できる。
>呼び出せないのです。。。
しか書いていないので、それ以上のことは回答不可能。
0101デフォルトの名無しさん2005/07/25(月) 13:00:27
>>96
> Apacheと連携しているのでポート8080を使用しないようにしたらたまーに
> Tomcatが落ちてしまうのがなくなりました。
> VMサーバの最大ヒープメモリサイズはTomcat(JDK)をインストールする
> ときに指定しないとダメだとググったら書いてありました。
それは初耳、そのサイトはJakara本家?
それとも個人、または本家だけど古いバージョンのTomcatだとか?
あと、インストール時に指定ということは

> 実際setenv.shに-Xmxオプションを指定しても〜identified〜という
> エラーが出てしまいましたので-Xms64mのみ指定しています。
> いまはservletをできるだけ小さく分割しています。
Servlet事態を分割するよりも
Servletでやる必要の無いものをServletの外でやる(委譲)ようにしたほうがいい。
分割したクラスすべてをわざわざHttpServletクラスから継承させては本末転倒。


基本的なイディオムで無駄がないかとか無い?
for文の外に出せるものを内側でかいてしまっているとか。
getFreeMemory()とかで調べてみるとか
プロファイラでボトルネックがあるところを調べてみるとかしてる?
プロファイラで調べてからチューニングをしたほうがいいんじゃないかと。


■ このスレッドは過去ログ倉庫に格納されています