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

このエントリーをはてなブックマークに追加
過去ログ、関連スレ、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

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

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

前スレ
【初心者】Java質問・相談スレ49【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1088705781/

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

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

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
J2SE SDK のダウンロード
http://java.sun.com/j2se/1.4.2/ja/download.html

Java 2 SDK ドキュメント
http://java.sun.com/j2se/1.4/ja/docs/ja/index.html
Java 2 プラットフォーム API 仕様
http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html

Java FAQ: よくある質問とその回答集
http://www.gimlay.org/~javafaq/javafaq.html
Java言語規定 目次
http://www.y-adagio.com/public/standards/tr_javalang2/jTOC.doc.html

Java 言語 コーディング規約
http://www.tcct.zaq.ne.jp/ayato/programming/java/codeconv_jp/
終了
>>3
早漏すぎだよ
5デフォルトの名無しさん:04/07/16 09:07
Tomcat5.0.27リリースage
61:04/07/16 09:07
wikiも忘れずに更新しておいた。
過去スレのところだけ
おつかれ
#アブネ重複するところだった
8ド素人:04/07/16 10:26
サーブレットのプログラムで、
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException {
という文があるのですが、「IOException, ServletException 」は何という意味でしょうか?
教えてください
>>8
入出力例外、サーブレット例外
10ド素人:04/07/16 10:35
>>9
ありがとうございました。
11ド素人:04/07/16 10:40
アフィン変換って何を行うのですか?>>8と同じソースにあったAFFINE関数を調べたら出て来た言葉なんですが。
じゃあ今度はアフィン変換を調べたらいいんじゃないか
14ド素人:04/07/16 11:04
>>12-13
ユークリッド幾何学ウンヌン、と言われても正直よくわかりませんでした。
その説明がまだよく分かりません。ユークリッド幾何学自体ならっていませんか
シアーの座標変換って何ですか?
>>14
もうJava関係なくなってるじゃねーか。
素人とかそう言う問題じゃなく、自分で勉強しろ。
どうせリンク先を1,2個見ただけでわからないとか言ってるんだろうな。
17ド素人:04/07/16 11:12
>>14
e-wordsの説明の中にユークリッド幾何学だとかシアーの座標変換という言葉が出てきたので、それで聞いているのですが…
教えて君で申し訳ないんですが、お教え願えませんか?
>>17
だから、もうJavaと関係ないから。
該当板行けよ。
FileInputStreamで
"C:\Documents and Settings\user\デスクトップ\test.txt"

みたいなファイルの指定ってできますか?
>>19
できるよ
2119:04/07/16 11:27
すいません途中で送信してしまいました。

上記の方法だと読み込めず、
C:\temp\test.txt
だと普通に読み込めました。
原因は何が考えられますか?
OSは2000です。
2219:04/07/16 11:30
すいません、なんかもう一度実行したら読めました。
よくわかりませんが、解決したので。お騒がせしました。
>>22
それを"解決"と言っていいのか?
よくわからないのに、動けば"解決"か?
>>23
動きゃぁいいんだよ、動きゃぁ
25905:04/07/16 11:46
馬鹿ばっかりだな
バカもスレの賑わい
27スーパービギナー:04/07/16 13:48
Exception系例外ってなんですか?
Exceptionを辞書で引くと「例外」と出ました。
例外系例外ってなんですか?なめてんですか?
28ド素人:04/07/16 14:22
>>18
失礼しました。
String url = conf.getValue(keys[i]);
if ((url != null) && (url.length() > 0) && !url.equals("null")) {
if (url.indexOf("?") == -1) {
url += "?scale=" + scale;

} else {
url += "&scale=" + scale;
}
list.add(new URL(url));
System.out.println("url["+i+"]="+url);
}
というソースで、&&というのが二回出てきますがどういう意味なんですか?お教え願います。
>>28
Javaからなにから全てを知らないんだな。
もうお前の質問はこれからスルーだ。
>>27
英語と日本語のアレなので、そこは許してやれ。

で、例外には、Exception、RuntimeException、Errorと大別して3タイプある(継承関係はあったりするが)。
その中のException系と言うことだろう。
言語の根本的なところから説明しないといけないのか

まずは言語仕様から勉強しろ
知らないからといって何でも人に聞くというのは
ド素人ではなくただの愚か者
33ウンモー:04/07/16 14:57
すみません、またお世話になります。

while(thread != null) {
  try {
   System.out.println("" + alpha);
   if(alpha < 0.99f) {
    alpha = alpha + 0.05f;
} else {
alpha = 0.00f;
}
repaint();
thread.sleep(sleep);
} catch(InterruptedException e) {}
}
マッチでーす。
35ウンモー:04/07/16 15:02
すみません、またお世話になります。

while(thread != null) {
   try {
      System.out.println("" + alpha);
      if(alpha < 0.99f) {
         alpha = alpha + 0.05f;
      } else {
         alpha = 0.00f;
      }
      repaint();
      thread.sleep(sleep);
   } catch(InterruptedException e) {}
}

てな感じのソースなんですが。

alphaという変数にfloat型に値をrunメソッド内で増加
させていき、repaintしたときにGraphics2Dのアルファ値
を変化させて描画させてます。
36ウンモー:04/07/16 15:05
実行すると、alphaの値が以下のように変化します。

0.1
0.15
0.2
0.25
0.3
0.35000002
0.40000004
0.45000005
0.50000006
0.5500001
0.6000001
0.6500001
0.7000001
0.7500001
0.80000013
0.85000014
0.90000015
0.95000017

で、この次に、alpha value out of range の例外が発生
します(プログラムはそのまま続行します)。

float型のalpha値の増加のさせ方がマズイですか?0.3以降
から期待しない値になってしまうのですが。

ご教授くださいm(_ _)m
37ウンモー:04/07/16 15:10
うぎゃああ!すみません、プログラムのほうは自己解決
しました。

if(alpha < 0.99f) のところを if(alpha < 0.95f)
に直して、アルファ値が範囲内に収まるようにしました。

すみませんでした。

でも、どうして0.05fづつ増加させてるのに、0.3f以降から
おかしな数値になってしまいます?
浮動小数の誤差って知ってるかな?
>>37
そういうのをなくすために範囲指定してif文で切り抜けるよりも

if(alpha > 1.0f) alpha = 1.0f;

とかして切る方がバグが出にくかったりする
この考え方は桁とかちゃんと把握してないとだめだけどね

アサートやユニットテストちゃんと使っていればすぐに分かるものだーね
40ウンモー:04/07/16 16:14
>>38
型変換したとき精度が落ちる、とかは聞いたことありますが、
桁そろえた形で増加させても誤差が出るとは知りませんでした。

>>39
おお!なるほど!イタダキマス!
メソッドの多重定義に関してなんですけれども、
どうしてこのような機能があるのでしょうか。
同じ名前のメソッドというのは混乱を招くだけだと思います。
あとからプログラムを見たら、いちいち引数の数を見比べないと区別がつかないと思います。
久々に釣りか
PrintPtream#printが全部違う名前だったら地獄だな
printBoolean
printChar
printCharArray
printDouble
.....
printObject
printObjectArray

orz
PrintPtreamが気になって夜も眠れなくて床をごろごろ転がってそれでも切なくて・・・
4641:04/07/16 17:16
初心者にわかるように教えてください。
プリントプトリーム
StringのValueOf大変だなぁ・・・

一番の問題はコンストラクタが一つだけにしないといけないか
もうだめぽ・・・
同じような機能を異なる引数のものに適用したいときに多重定義する。

違う機能のものを同じ名前のメソッドで多重定義したらそりゃわけわ
からなくなるのは当たり前。「可能である」と「やってもいい」は違う。
5041:04/07/16 18:05
万引きは可能であるけど、やっちゃいけないみたいな?
>>50
法律が認めてないんだからダメでしょ

特に規制するルールはないけどやめておいたほうがいいこと
酒の飲み過ぎとかタバコの吸い過ぎとか
>>41
逆手にとって逆コンパイルされた時に読みにくくするツールもあるよ
複数あるうちから明確な目的があってひとつのメソッドを選んでるんだから、
本来ならあとから見たって間違えようがない。
>>52
でもeclipseのrenameとか使うと(゚д゚)ウマ-かも
初心者なんですが、Cで言うmallocに当るものがnewでオブジェクトを作成するのに当ると思っているんですが
freeはどうすればいいのですか?
>>55
基本的にほかっとけば、VMがやる。
>>56
ありがとうございます
便利ですね
おかげでJavaに慣れるとCが使えなくなるという噂も
59デフォルトの名無しさん:04/07/16 20:06
NetBeansを使用してGUIアプリを作って配布しようとしています。
NetBeans上からは実行できるんですが、
コマンドラインから実行しようとすると次のようなエラーが出てしまい実行できません。

Exception in thread "main" java.lang.NoClassDefFoundError: test (wrong name
: test/test)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
クラスパスに何を加えればいいんでしょうか?
よろしくお願いします。
パッケージとクラスパスの関係から勉強しなおしたほうがいいよ
61デフォルトの名無しさん:04/07/16 21:11
ファイル(XML形式)の小さなログファイルを次々と吐き出すプログラムが既にあったとします.

このXMLファイルを次々に(5秒間隔で監視して)読み込んで処理するプログラムを作ろうと思った場合,
読み込む側はリードオンリーでファイルを開いて読むだけなのですが,
それでもファイルを同時に開かない等の排他制御を行わないと,異常な事態になるでしょうか?

>>59
クラスパスに設定するのは実行に必要なjar
そのアプリが何つかってるかわからんがマウントしているjarが必要

たぶん、パスが違うだけっぽいがね
jarファイルつくってマニフェストファイル作ってダブルクリックした方が早そう
>>61
ファイルを書き込んでいる間にアクセスしたらどうなるのかな?
6461:04/07/16 22:00
>>63
たとえ,読み込みで開いても駄目ですか?っていのが質問なのですが・・・
つまり,その質問は,駄目だという意味ととれということですよね?
6559:04/07/16 22:52
>>60
そうですか…。勉強してみます。

>>62
んー、やっぱりパスの間違いですかねぇ。

ご意見ありがとうございますた。
修行してきまつ。
>>64
書き出側しがXMLを途中までかいてるときに
それを読みとったらどうなるんだということだ
>>66
同じこと2回書いてんじゃねーよボケ
イエスかノーで答えりゃいいんだよ


・・・なんちゃって♥
「アプレットは初期化されていません」
なぜこのようなメッセージがでるのでしょう?
完全に片方向ストリームだから XML 書き出し途中でも読み出して問題ないだろう。
読み込み側では I/O ブロックがかかるだけ。ただし、現時点で書き出されている分を
読み出し側が完全な XML と想定する作りなら間違い。

プログラム側で I/O バッファのフラッシュに依存するコードさえ書かなければ、
書き込み用にオープンされているファイルを別プロセスから読み出し用にオープン
してもシステム的になんら問題はない (大抵のOS/ファイルシステムならな; Win, Unix, Mac, etc.)。
>>68
アプレットのコンストラクタや init() メソッドの中で NullPointerException や StringIndexOutOfBoundsException
などが発生したからだ。アプレットのコンソールを見れ。
バッチファイルやUnixでJavaのプログラムを動かすとき、
java ClassName -log log.log -in InFile.dat -out OutFile.dat
のような感じで、ハイフン付き引数をキーにしてパラメタの設定を
すると思うのですが、これの取得の仕方の代表的でもっとも簡単な
取得の仕方ってどれなんでしょうか?
取得の仕方がいっぱいあったと思います。
・getPropertyを使う方法とか、String#startsWithをつかうとか、、、
for(int i=0; i<args.length; i++){
  if(args[i].equals("-log")){
    ...
  } else if(args[i].equals("-in")){
    ...
  } else if(args[i].equals("-out")){
    ...
  } else {
    throw new IllegalArgumentException(args[i]);
  }
}

先頭のハイフンだけ検知して何か嬉しいか?
Javaの入門書とかによく出てくるスレッド処理とかって
一度も使ったことないのですが・・・
いつでも使えるようになるレベルまでいろいろ書いてみたりしたほうがいいと思いますか?
子プロセスを作って、作った子プロセスが終了してるかどうかタイムアウト指定で調べる方法ってありますか?
>>73
サーバのように並列処理や込み入った処理をするのでなければ現実的に不要。
だが覚えておいて損はない (いろいろな問題解析につながる)。

>>74
タイマー仕掛けてプロセス終了を待機しているスレッドに割り込み。
Timer, TimerTask, Process#waitFor(), Thread#currentThread(),
Thread#interrupt(), Thread#interrupted()
などの API リファレンスを読め。
>>71
CLIとかは?
7771:04/07/17 01:19
>>72
ありがとうございます。
結構単純に取れるんですね。
って言うか、ハイフンにこだわる必要ってないんですかね?
7873:04/07/17 01:23
>>75
レスありがとうございます。
クラサバのような構成でしょうか
とりあえず一連の流れの理解まではきっちりやっておきたいと思います。
>>78 補足
・HTTP サーバのようなマルチユーザアプリケーション
・シューティング、アクションゲーム
・きちんと作るクライアントアプリ (UI イベントディスパッチャーをブロックさせないため)

やっぱ身に着けとけ
8071:04/07/17 01:32
>>76
apacheにもそういうのってあったんですね。
しかし、今回はそういうのを使わずに取得したかったので、また今度にします。
>>73
自分でスレッドを起こす必要はあまりないけど、サーブレットみたいなスレッドが前提のフレームワーク使うときには、暗黙の了解としてスレッドの知識が必要になる。
82デフォルトの名無しさん:04/07/17 02:10
基本形の動的配列(Vectorみたいなやつ。実行時まで数がわからない。)をしたいときどうすればいいと思いますか?
List array = new ArrayList();
array.add(new Integer(0));
array.add(new Integer(1));
array.add(new Integer(2));

または動的に伸縮するプリミティブ型配列 Wrapper クラスを作る
84デフォルトの名無しさん:04/07/17 02:22
>>83
どうもありがとうございます。
85デフォルトの名無しさん:04/07/17 03:04
プロパティファイルから読み込んだ、値を保持しておいて、
プロパティファイルの内容を変更し、再び、保持している
内容を書き込むようなことはできますか?(つまり、ファイル内容は
変わらないということです。)
また、ファイルの内容を上書きしたりしますと、
コメントなどがなくなったり、key=valueの順番が変わったりしますが、
ファイルの先頭から順番にkey=valueを配置していくような
書き込み方はありますか?
> … 内容を書き込むようなことはできますか?
できる

> … 書き込み方はありますか?
Properties#store() を使わないで自前で書き込む。
スッピンの Properties は元ファイルのコメント情報を保持していないのでコメントの復元は無理。
自分で作れ。
例えばstr2 = str1;とするとstr1とstr2は同じ物を指してしまって
str1を書き換えるとstr2も代わってしまいますよね?
str1のコピーをつくりたい場合はどうすればいいのですか?(String型に限らず)
>>81
String は immutable なオブジェクトだから、一度構築された後、内部状態は
変わらないように見えるわけだが (本当は変わるが)。まぁ言わんとしている
ことは汲み取ってやろう。別々の参照が同一のインスタンスを指している場合だな。

「内容は同じだが別のインスタンス」を生成する方法は対象のクラスによって
さまざま。たとえば String 型なら str2 = new String(str1); とするだろう。ArrayList
なら array2 = (ArrayList)array2.clone(); だし Serialize をサポートしているなら
ディープコピーでも良い。つまりケースバイケース。碇石は無いがコアライブラリの
大抵のデータまたはコンテナを表すクラスならクローン生成の方法がある。
>>88
> 変わらないように見えるわけだが (本当は変わるが)。
変える方法教えて。ぷりーず
9087:04/07/17 08:59
>>88
ありがとうございました
9187:04/07/17 09:32
>>88
Stringではそれでいけたみたいなんですが自分で作ったクラスだとエラーが出るんですが
自分で作ったクラスでは出来ないのでしょうか?
あるいはどこか間違えてるだけでしょうか
>>91
クラスの実装に依存するんだよ。自分で作ったクラスなら、そうなるように自分で作らなければならない。
9387:04/07/17 09:50
>>92
最初から備わっているわけではないのですね(´・ω・`)ショボーン
それはどうすればいいのですか
メソッド作って変数をコピーしていくというのは考えられますがこれだとnewの時には出来ないですよね
>>88みればわかるけどcloneをオーバーライドしたり、コピーコンストラクタ作ったり。
95デフォルトの名無しさん:04/07/17 13:26
サブクラスのコンストラクタでスーパークラスのコンストラクタを呼び出すタイミングが
サブクラスの str の初期化より早くて下のプログラムがうまくいかないようです。
何か良い解決策はありますか?

class SuperClass
{
String str = "foo";

void hoge() {
System.out.println("" + str.length());
}
SuperClass() {
hoge();
}
}

class SubClass extends SuperClass
{
String str = "hello";

void hoge() {
System.out.println("" + str.length());
}
SubClass() {
}
public static void main(String args[]) {
SubClass s = new SubClass();
}
}
>>95
>何か良い解決策はありますか?
最終的にどうしたいのかによる
そもそもどうなればうまくいったことになるんだ。
>>96
>>97
とりあえず、実行すると「ぬる(ry」が出ますけど(コンパイルは通るのに)
日本語が通じないようだ。放置決定。
>>99
すみませんでした。

さきほどのプログラムは実行時に NullPointerException が出ます。
そのプログラムは多分次のように解釈できると思います。

class Test
{
public static void main(String args[]) {
String str;
System.out.println("" + str.length());
str = "hello";
}
}

つまり、初期化の前に使われてるわけです。この場合はコンパイルエラーを出してくれますけど。

これは恐らく言語仕様上そう解釈されるのだと思いますが
どうにか初期化を先にする方法はないか聞きたかったのです。
コンストラクタで初期化すれば?
ったくこんなバカがいっぱしにぼくプログラマだの言っているかと思うとうんこが漏れる
おれなんて精液が漏れちゃったよ
>>100
> どうにか初期化を先にする方法はないか聞きたかったのです。
一般的に言うと方法は無い。

>>101
SuperClass のコンストラクタが完了するまで SubClass#str は代入できないと思われ。
>>103
「うまくいく」が「NullPointerExceptionを出さない」だとわかったのでこれでOK。
循環参照になるときの安全なメモリの開放の方法教えてください。
finalizeを使えばいいの?
Javaでメモリの解放なんて気にする必要あるの?
このへんの話は詳しくないんだが。
>>105,106
循環参照だろうがなんだろうがプログラムのメインの部分からたどれなくなれば
(その循環参照しているオブジェクト群がまとめて)勝手に回収される。
finalizeはどんなことがあってもよほどのことがないかぎり使ってはいけない。
「よほどのこと」⊂「どんなこと」
いや、言いたいことはわかるが。
109デフォルトの名無しさん:04/07/17 16:12
JNDIってなんて読んでます?
じぇんでぃ?じぇんだい?
110EffectiveJavaについて:04/07/17 16:31
Javaを勉強中の学生です。
「Effective Java プログラミング言語ガイド」を読んでいるのですが、
P.73のコールバックフレームワークとかSELF問題のところが
何を言っているのか全く分かりません。

誰か詳しい方がいたら、実例(コード)で教えてくれるとありがたいです。
>>105
循環参照は「メモリを解放できない」わけではない。普通のJava VMなら解放できる。
ただ,古典的なガベージコレクタもどきの実現方法の中に解放できない実現方法が
あって,万が一Java VMがその方法を利用していると「解放できない可能性がある」
ということになる。実際はSunのにしろIBMのにしろ,普通のJava VMはそんな方法で
ガベージコレクションしていないので循環参照があっても問題ない。
>>110
初心者ならもっと簡単な本から始めれ
>>105
マークアンドスイープ方式のガーベジコレクタは循環参照があっても回収できる。
リファレンスカウント方式はダメだけど。

Java は最終的にはマークアンドスイープ方式で回収されるのでほっといても問題ない。
>>110
おまえ、本選ぶのうまいな。
115110:04/07/17 17:05
>>112
>>114

初心者といっても、もう1年くらいコードを書いているんですよ。
今は綺麗なコードを書く修行中です。
>>110
俺もわからねー
上級者向きのスレで聞いたら?
>俺もわからねー

( ´,_ゝ`)
>>115
ページ指定されたところで、こっちゃ本持ってないんだけど…
119110:04/07/17 18:46
P.73にはこんなことが書かれてます。

ラッパークラスの欠点は、ほとんどありません。1つの注意事項としては、
オブジェクトが自分自身を呼び出してもらう(「コールバック」)ために、
他のオブジェクトに渡すコールバックフレームワーク(callback framework)
で使用するには、ラッパークラスは向いていないことです。
ラップされたオブジェクトは、そのラッパーを知りませんから、自分自身(this)
への参照を渡し、そして、コールバックではラッパーを回避してしまいます。
これは、SELF問題(SELF problem)として知られています。
そのまんまじゃん。
>>119
やっぱ他の本から始めれ
122110:04/07/17 19:39
>>120
そのまんまなんですか‥‥

>>121
「プログラミング言語JAVA」(ピアソン)はもう読んだけど、
「コールバックフレームワーク」なんて初耳です。
123デフォルトの名無しさん:04/07/17 20:04
>>95
class SuperClass
{
//private String str = "foo";

void hoge(String str) {
System.out.println(str.length());
}
SuperClass() {

}
}

class SubClass extends SuperClass
{
String str = "hello";


SubClass(String str) {
super.hoge(str);
}
public static void main(String args[]) {
SubClass s = new SubClass("helo");
}
}
こんばんは、私も初心者ですが、hogeのメソッドの使い回しがしたい場合、このようになるかと思いますが、まちがってるかもしれません。
124デフォルトの名無しさん:04/07/17 20:19
javaのファイルをコンパイルしようとして
コマンドプロンプトに
javac ”ファイル名”
と打ち込んでみたんですが
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
っていうメッセージがでてコンパイルできません
なぜですか?
ちゃんとjavaSDKはインストールしたんですが・・・
>>124
とりあえず>>1は読んだかな?
>>124
pathですよ.
環境変数をちゃんと設定しましょう.
127デフォルトの名無しさん:04/07/17 20:32
HashMapについてですが、APIの説明にもあるように
順番にデータをputして中身を見てみると、順番がバラバラになっています。

例えばArrayListのように、順番にデータをaddし中身を見てみるとaddした順番が保持されているので
このような保持の仕方をMapクラスではできないでしょうか?
それとも、うまい具合にロジックを組んだほうがよいでしょうか?
LinkedHashMap
129デフォルトの名無しさん:04/07/17 20:43
>>125
>>126
できました
ありがとうございました
あれれ
131デフォルトの名無しさん:04/07/17 21:26
エクセルの保護のパスワードを忘れてしまいました。
かなり前にいじっていたファイルで、
どんなパスにしたかさっぱり覚えていないのですが、
それでも解析できるようなソフトってないですか?
getDocumentBase()が解決できないといわれるのですが
いったい何が起こっているのかさっぱり分かりません。
どんな可能性が考えられますか?
JTableで項目を選択したときに発生するイベントは何ですか?
そのイベントを受け取れるリスナも教えてください。
>>131
スレ違い。逝け。
135デフォルトの名無しさん:04/07/17 22:07
ということにしたいのですね
136デフォルトの名無しさん:04/07/17 22:10
>>134
通報しました。
>>133
行:table.getSelectionModel().addListSelectionListener( ... )
列:table.getColumnModel().getSelectionModel().addListSelectionListener( ... )
みたいに二つの ListSelectionListener を使う。
138133:04/07/17 22:51
>>137
ありがとうございますた。
あるコンポーネントに載っているJTextFieldで入力中にリターンキーを押すと
同じコンポーネントに載っているJButtonが押される、という機能を実現したいのですが、どうすればいいんでしょうか。
JButton#setMnemonic(int)はリターンキーだけでは反応しませんし。
JTextFieldでキー入力イベントを受け取って、JButtonを押した時のメソッドを呼び出すしかないでしょうか?
(これだと実際にはボタンが押されたわけではないのでなんとなくイヤ)
System.out.printでC言語の%cみたいなのを使うにはどうすればいいですか?
>>140
Java 1.5 まで待つ。
>>139
java.awt.Robot とか使えば?
JTextFieldにaddしたActionListenerでJButton#doClick。

「JTextFieldはActionListenerがaddされているとENTER押下でActionEventを発生する」
これはAPIドキュメントに書いてある。
>>143
マジすんませんっした。反省してるっす。
145140:04/07/18 01:40
>>141
今のバージョンではできないと言うことですか?
requestFocus()したのにフォーカスが移ってないことがよくあるんですが、何が原因なんでしょう?
Javaでコレクションをやるときはどこにポイントを置けばわかりやすいですか?
>>147

java.utilのコレクションフレームワークのことなら、

即戦力コースとしては、
1. インターフェイスIterator、List。Listの実装クラスとしてArrayListを学ぶ。
2. インターフェイスMap、Mapの実装クラスとしてHashMapを学ぶ。
ここまでが必須で、あとはぼちぼち
3. Setを学ぶ。(Map#entrySet、Map#keySetあたりの返値を使える程度で)
4. Collectionsユーティリティクラスを学ぶ。(あ、Arraysも一応)
5. ListやMapの他の実装を学ぶ。(TreeMapとかLinkedListとか)
こんな感じでいいかと。

Vector、Hashtable、Dictionary、Enumerationはとりあえず見なかったことにする。

急がば回れコースとしては、できればJava以外の言語で、アルゴリズムと
データ構造の基本としての線形リストとかハッシュ関数をちゃんとした教
科書で学んでおいて損はないと思う。

JDKの最初のアルファ版からコレクションしたいっていう話ならSunのアー
カイブを探しておくれ。
149デフォルトの名無しさん:04/07/18 05:16
このスレ優しい人多いですね
優しい人に教えてもらった->優しくなる
厳しい人に教えてもらった->厳しくなる
ほんとか?
>>149
そう思ったならしっかり「本物」の知識と技術を身につけて、
答える側に回れるようにがんがりましょう♪

・・・いや、俺は訊く側なんだけどね。。。_| ̄|○
152デフォルトの名無しさん:04/07/18 08:40
>>145
そういうことができるAPIがどこかにあったと思った。さがせ。

それかJ2SE5.0 betaを使うのもありだ
>>148
ありがとうございます
助かります
>>149
Javaなんて糞言語を文句言わず使ってる時点で、ストライクゾーン
の広い温厚なやつが多いんだべ。みんな牛丼食いすぎて脳みそス
カスカなんだろ。
(ノ∀`)アチャー
156デフォルトの名無しさん:04/07/18 13:12
java3Dでホームページ上に3DCGを表示することってできる?
java3Dをサポートしてないサーバー上では無理とかそんなのある?
>>154
わざわざJavaスレにまで出張ご苦労
java3Dってサーバで動かすものだったんだ
159デフォルトの名無しさん:04/07/18 13:15
>>156
んなことはない。サーバは関係ない。
どこにでも表示できる。
自分でjava3d.jarってファイルを自分のjarの中に詰め込んでしまえば
どこでもJava3D表示させることができる。

やり方としてはApplet上で動かすか、JavaWebStartで動かすかのどちらかだろう。
サンプルソースを解析中わからない箇所がありました。
どなたか次のソースがどんな処理をしているか教えて下さい。

int code;
code = Integer.parseInt( Textbox.getText(), 16 );
byte [] b = new byte [4];
b[3] = (byte)( (code & 0xFF000000) >> 24 );
b[2] = (byte)( (code & 0x00FF0000) >> 16 );
b[1] = (byte)( (code & 0x0000FF00) >> 8 );
b[0] = (byte)( code & 0x0000000FF );


テキストボックスから値を取って、整数型にキャストして、
それから・・・ byteのところが良くわかりません。
JTableについての質問であります。
テーブルモデルで
  public Class getColumnClass(int col) {
    return Number.class;
  }
と定義してセルの値の表示を右揃えにしたんですが、セルレンダラーを自作(デフォルトのを継承)して
  table.setDefaultRenderer(Number.class, new MyCellRenderer());
で設定したら右揃えじゃなくなってしまいました。なにが間違っているのか教えてください。
ちなみに、MyCellRenderer#getTableCellRendererComponent(...)では、
デフォルトのコンポーネントを取得し、それの文字色を変えて返すようにしています。
>>156
サーバー上で生成した3Dイメージを画像ファイルにして送りつければいいんじゃないの?
>>160
int型(4byte)のcodeを4つのbyte型に分けた
#2進数を知らないとわからないかもしれない
>>160
なんで、サンプルでこんなことしてるかが気になるね。
>>163
16進も必要だろ
>>163-165
ありがとうございました

iアプリの赤外線通信のプログラムです。
赤外線は0,1でしか通信できないので、int型を分解してるのですね。
>>166
> 赤外線は0,1でしか通信できないので、int型を分解してるのですね。

intだろうがbyteだろうが、結局01で送られるわけだし・・・
iアプリの相手がリトルエンディアンだから変換してるだけ。
2進というか、ビット演算知らずにやりたければ
 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 new DataOutputStream(baos).write(code);
 byte[] buf = baos.toByteArray();
 byte[] b = new byte[4];
 b[0] = buf[3];
 b[1] = buf[2];
 b[2] = buf[1];
 b[3] = buf[0];
みたいにやればいい。
168デフォルトの名無しさん:04/07/18 22:50
結局JNDIってジェンディって読んでいいの?
169デフォルトの名無しさん:04/07/18 22:55
Javaのバイトコードが見たいのですが、
ソースコードと対比で見られるサイトを教えてください。
170デフォルトの名無しさん:04/07/18 23:10
169
おまいはこんぴゅーた様か?
zapzapzap
ナイフで処刑
173デフォルトの名無しさん:04/07/19 00:24
javacは使いたいんだけど、IEでJavaのあるサイトいったときに実行モジュールが
起動しないようにできる? 遅くて…
174デフォルトの名無しさん:04/07/19 00:25
>>169
自分で書いたソースをコンパイルすればいいじゃん
>>173
実行モジュールって何のことだ?
質問の意味が分からないまま勘で答えるが,強制的にMSのJava VM使いたいって
ことなら,WindowsXPにサービスパック入れているなら普通に設定できるだろ。
そもそもJDKのインストーラでJava Pluginをインストールしない設定もできたはずだし。
176デフォルトの名無しさん:04/07/19 00:57
教えてください。

会社でソフトを配りたいのですが、DQNな馬鹿社員にも分かりやすく使えるようにjarをダブルクリックで起動できるようにしたいのですよ。
普通にメインクラスを指定して実行可能jar作ればいいと思うのですが、
実はそのソフトは外部jar(アパッチのライブラリとか)をクラスパスに含めたソフトなんですよ。
実行形式jarファイルに外部jarを含めて、おまけにそれにクラスパス通すとかできましたっけ?教えてください。

あと、最近ネットでAPI調べようと思ったらすっかり全部無くなってました。(リンクされてない)
仕方無いからAPIドキュメントの日本語版をダウンロードしようと思ったけれど。あれ?どこなんでしょうか?
ダウンロードしたら全部英語だったので困ってます。

余談だけど、ネットでAPIドキュメント調べたら、怪しげなどっかの大学のHTMLが出てきて困るよね。あーゆーのやめて欲しいよね。
>>176
DQNな馬鹿社員とは自分も含めてなのですね。
178176:04/07/19 01:09
うるせー。

APIは見つかりました。jaの方をダウンロードする必要があるのね。
マニフェストにクラスパスとかけましたっけ?jarはeclipse任せにしてるのでよくわかりませぬ・・。
Class-Path属性あるべさ。
ドキュメントのSDKのツール→JAR→JARファイルの仕様に書いてあるから嫁。
つうか、社会人の癖にドキュメントも読まずに質問するゴミはイッテヨシ。
180176:04/07/19 02:25
うるせー学生の分際で生意気な口聞くな。
おまえら俺の払った税金で授業受けてんだ、それを忘れるな。
そんな馬鹿学生に教えてもらわないとならないクソ社員は大して税金納めてないだろ
DQNな馬鹿社員も大変ですね
大して納めてなくても納めてるには変わらない。
もっと納税者を敬え。そういう意識が薄いからこの国は駄目になった。フリーターでぶらぶらして社会に寄生しても何にも不自由無いからな。
ぶっちゃけ非納税者に選挙権与えなくてもいいだろ?マジで。
余談はここまで。
179さん助かりました。ありがとう。

う〜ん。ところで、マニフェストの書き方良く分からない。
どこかにいい例はありませんか?
クラスパス書いても、相変わらず致命的エラーで起動出来ない。
エクリプスの自動生成でなんでクラスパス書いてくれないんだろう?
やっぱり無理なのかなjarにjarを含めてそれを参照しつつ起動って。
DQNな馬鹿社員も大変ですね
>>183
ま、バカはバカなりに工夫すればいい。
ライブラリのjarをいったん解凍して、それを含めたjarを作ればいい。
ただし、ライセンスには気をつけろ。
DQN社員にはライセンスの大切さはわからんだろうが。
DQN社員の税金って10万円くらい?
おそらく1.1.8時代のAPIドキュメントもわからないようなドキュソはほっとけ。
こんなところで、会社のことを質問しようってのがDQNの証拠だw
>>169

javapってコマンドしってるか?
DQN社員はは学生の時もDQN学生。
つまり今現在、学生なのか社員なのかは関係無い。
191デフォルトの名無しさん:04/07/19 10:50
教えてほしいのですが

public void paint (Graphics g)

アプレットでのpaintメソッドで教えてほしいのですが
Graphicsクラスが引数としてあるのですが
インスタンスを new したものを実引数として受けてないのに 
メソッドまで使えるのがよく分からないのですが、
本をみても説明は無いものが多く
唯一見つけた部分も

paint()メソッド内部では、この仮引数を使ってGraphicsクラスのメソッドをよびだし、
任意のグラフィック描画を行うことが出来る。

とありました、
new出来ないのは、Graphicsクラスは抽象クラスであるからと
APIドキュメントをみておもったのですが
いまいちよく分かりません。




>>191
アプレットを呼び出す側(これはアプレットを作る側からは見えないし、
見る必要もない)がGraphicsクラス(の継承クラス)のインスタンスをnewして
渡してくるってこと。
そこを疑問に思うなら、paintメソッドだけ書けばいいって辺りについても
同じように疑問に思わないのはなぜ?
>>192

やはり呼び出す側がnewして渡してくるんですね

プログラム初心者なもので正直どうでもいいところに

目がいってるのは分かるんですが、気になって仕方ありませんでした。

答えていただき、ありがとうございます。
Aを疑問に思った人に対して「先にBを疑問に思えよ」とか言う香具師を
いままで2回見たが、どういう思考回路をしているんだ???
>>194
普通だと思うよ。
196176:04/07/19 13:18
できました!みなさんご協力ありがとうございます!
これでDQNな高卒馬鹿社員共にもダブルクリックで私の素晴らしいソフトを使わせる事が出来ます。
はぁ、肉体労働者共に私のような優秀な頭脳労働者が作ったソフトを使わせるのにどれだけ苦労することか・・・。
あいつらバッチファイルとか言っただけで拒否反応起こすからな〜。
>>196
類は友を呼ぶんですね
>>176の用途ならJava Web Startを用いて、
複数のjarファイルをクリックひとつでまとめてダウンロードさせるのがいいとおもう。
199デフォルトの名無しさん:04/07/19 13:50
176
つうか基本のわかってなさそうなお前のつくった「素晴らしいソフト」
人の小便だってありがたがる奴もいるしな いろいろだ
なんでここの奴は放置できないんだ。
暇だからな
初心者が自分より初心者を見下して優越感に浸るスレだからな。
一遍上人の小水は病に効くと珍重されたそうな。
>>198
すばらしいソフトが何をするのかわからんのではサンドボックス内で足りるかどうか
アプレットでいいじゃん
どうでもいいじゃん
たりー
仕事なんかすんなよー


ま、やつはjarの中にjarを入れたからダメなんで、プログラムのjarとライブラリのjarを同じフォルダに置くようにすれば、Class-Pathにライブラリのjarをスペース区切りで並べて書けばよかっただけなんだけどね。
209デフォルトの名無しさん:04/07/19 17:15
プログラム経験5年ですが、プログラムがまったくかけません。
現在も本をみながらじゃないとかけません。
いまはJavaを勉強してますが、まったく頭にはいってきません。
皆は本とかみないでもプログラムできるの?
なんちゃってプログラマいるんだろう?いるといってくれよ〜〜〜
210デフォルトの名無しさん:04/07/19 17:16
質問します。
javaをインストールし、コンパイルしてclassファイルを作る所まではできたのですが実行ができません。
実行すると
Exception in thread "main" java.lang.NoClassDefFoundError:
というものが表示されます。
フォルダから見るとclassファイルはちゃんと作られているのに
何が問題なんでしょうか
教えてくださいお願いします。
そういう話したけりゃマ板いけクズ
>>210
どういうコマンドで実行しましたか?
>>212
% 今作ったプログラム実行してよおねがい!
>>213
ちょっとだけおもろい
>>213
ちゃんと句読点で区切らないといけないんじゃないか?
>>209
本なんかみない。
Webがある。
APIなんか覚えない。
Googleがある。
>>210さん
6時になるので帰ります。後は、自分でがんばってください。
というか質問から約35分たったのに一度も現れないとは。
218デフォルトの名無しさん:04/07/19 18:43
>>209
5年やってプログラム書けない人をプログラマと呼べるのだろうか・・・?
219210:04/07/19 19:11
教えようとして下さった方(212=217ですかね?)が居るのに来れなくて申し訳ありませんでした。
携帯からなのですが更新ができず発言はされなかった事になっていると思ったからです
それに今見た所、私のした質問はテンプレになるほど既出の問題だったとは恥ずかしい限りです
しかし携帯しか無いため見られないのでもし解る方が居りましたらもう一度お願いしたいです。

実行したコマンドはコマンドプロント(XP使用です)にて
java 〇〇(classファイルのある場所まで直接C:\という風に書いていって.classを省いた状態のファイル名)
これにてEnterで実行しました。

長々とすいません。お願いします。
>>219
で,テンプレ見て解決したの?
>220
テンプレのリンク辿ったら携帯では容量オーバーで表示できず
未だ未解決状態です
222210:04/07/19 19:34
追記なんですけど
pcはモデムが逝かれてるらしく、ネットに繋げないので、携帯から調べようとしてます
>>221
これだと確信を持っては言えないのですが,
まず,実行するコマンドで,C:\…っていうのを取ってやってみてください.
(その実行したいファイルのあるディレクトリに入って)

こんな感じで
java test(test.classを実行するとき)

だめだったら,そのソース見せてください.

224デフォルトの名無しさん:04/07/19 19:39
>>209
だけど。俺はプログラムは全部こぴぺだ
人のつくったやつをさがしては、コピだ
使えそうなやつがあれば微妙にかえてコピだ
会社ではコピペ野郎と陰口をたたかれてる・・・
まじ後輩むかつく・・・俺より全然できるのがさらにむかつく
225マルチスマソ:04/07/19 19:46
Struts1.1なのですが、

<message-resources parameter="prop1" key="prop1"/>
<message-resources parameter="prop2" key="prop2"/>

のように、message-resourcesが複数あり判別のために
key="xxxx"としている場合に 、
クライアント側でvalidatorを行い該当するmessage-resourcesから
メッセージを取得したい場合、
message-resourcesを判別するためのbundleを
どこで、指定すればいいのでしょうか?

validation.xmlの<arg0>では可変引数が無い場合指定できませんし、
実際そこにbundleを指定しても、

java.lang.NullPointerException
org.apache.struts.validator.Resources.getMessage(Resources.java:209)

と言われmessage-resourcesを見つけられていないようです。
validateメソッドを使う場合には

<html:errors bundle="prop1">

見たいな感じでうまくいくのですが、
クライアントでの検証の場合うまくいきません。
クライアント側での検証を同じように行いたいのです。

もしどなたか方法をご存じの方いませんか?
>>224
コピペ野郎!
>223
省略して実行したところできました。
嬉しいです。
うわー不思議だ。どうもありがとうございました。
>>227
それはよかったです.
229デフォルトの名無しさん:04/07/19 20:09
なぜ内部クラスは外側のクラスのfinalフィールドしか参照できないのですか?
理由をどこかで読んだ気がするんですが、いまいちわかりませんでした
>>195
自己弁護乙
>>229
え、そうだったの?
232229:04/07/19 20:14
メソッド内の内部クラス?でした
>>229 >>232

内部クラスからも、関数内定義クラスからも、finalじゃない a が参照できてるけど?
こういうことじゃなくて?

public class Test {
  public static void main(String[] args){
    Outer o = new Outer();
    o.in.refA();              // 内部クラスから Outer の aを参照
    o.ClassInFunctionTest();  // Outer の 関数内のクラスから a を参照
  }
}
class Outer {
  private int a = 999;
  public Inner in = new Inner();
  // 内部クラス
  class Inner {
    public void refA(){
      System.out.println("Inner Class : a = " + a);
    }
  }
  // 関数内でクラス定義
  public void ClassInFunctionTest(){
    class ClassInFunction{
      public void refA(){System.out.println("Class In Function : a = " + a);}
    }
    ClassInFunction cif = new ClassInFunction();
    cif.refA();
  }
}
>>230
遅レス必死だな
>>224
結果的に工数減れば問題無いでしょ。
みんなWebでやり方調べたらコピってから編集してるだろ。
共通化しないでコピペしまくりなら勘弁して欲しいけど。
>>235
自分でロジック書けないみたいだが。
237235:04/07/19 20:45
>>236
もしかして>>209=>>224
それは一緒に仕事したくないかも・・・
238236:04/07/19 21:02
>>237
おれはそう読んだけど。
>>225
できねーよ
240デフォルトの名無しさん:04/07/19 22:27
>>237
そんなこというなよ〜〜おれもそれなりにがんばってるんだよ
がんばってないよ
242237:04/07/19 22:39
>>240
あ〜ごめん。そのまま頑張ってください。
コピペする時に覚えなくてもいいから色々考えて理解するようにすると良いと思います。
後は屈辱に耐えて後輩のソースから学ぶとか・・・。
ソースから、というより、そもそもの考え方を学べ。
244229:04/07/19 23:01
自己解決しますた

http://www.gimlay.org/~javafaq/S016.html#S016-14

ここを読んだらかいてありました
みなさんありがとうございました
オラクルとJavaって、どう?しごとあるかな?  
関連性がないね
オラクルならMS製品のほうが親和性高そう。
248デフォルトの名無しさん:04/07/19 23:38
Calendarクラスで時刻関連のstatic変数(HOURとかMINUTE)って
直接アクセスした場合(getメソッド経由しない)、
得られる値ってgetInstance()を発行した時点のもの?

jspでリロードしまくって(getInstance()を繰り返し呼んで)も
Calendar.SECONDの値が変化しない。。。。。


WebProg板いかないとだめですか?

>>247
オラクルなら、オラクル製品だ。
つまりOracle JDeveloper1980円
>>247
Oracleがアプリケーションサーバーで使ってるのJRunだっけ
Javaと親和性はよさそうだけど

そういや今週末か
例の1980円
ぶ、同じネタでかぶってるし
>>245
ここ5年、10個ほどのプロジェクトを見てきたけど全部 Java + Oracle だった。
俺はたまたまなのか。世間は違うのか。
>>251
しろうとくさいツッコミだな。
254225:04/07/19 23:47
>>239
そうなんですか。。。orz
別の方法考えます。
どうもありがとうございます。
>>248
Calendar.SECOND って現在とか getInstance() 発行時点とか関係なしに
時刻とは全く関係ないんだけど。。。
>>169
Jadclipse
>>176,183
antのjarタスク, manifestタグのマニュアルを読め 以上。

今なら、そういうものを作るならApache AntよりもApache Mavenがお勧め。
jnlp(JavaWebStart)ファイルも簡単に作れるぞ。
258248:04/07/20 00:28
>>255
申し訳ない。
意味がよくわかりませぬ。。
>>252
会社によって偏ってるんじゃないかな。
俺が絡んだプロジェクトはOracleもあったけどWebSphere+DB2の仕事が圧倒的に多い。
まあ俺のいる会社でIBM関連の仕事が多いからなんだけど。
Calendar.SECOND とかの値にはまったく意味がなくて
get メソッドでどれを取るかの指定に使うだけ。

Calendar cal = Calendar.getInstance(); があるとき
cal.get(Calendar.SECOND) とやると現在の秒数がとれる。
cal.get(Calendar.MINUTE) とやると現在の分数がとれる。
あと当然だが Calendar.SECOND なんかは定数だぞ
Calendar.SECONDは、秒の値を表しているものではない。
"秒"を意味する定数
void mainならうまくいくのですが
int mainにしてreturn文をつけるとコンパイルには成功するんですが
実行するとException in thread "main" java.lang.NoSuchMethodError: main
こんなのが出て終了してしまうのですがこれはどういうことでしょうか?
264デフォルトの名無しさん:04/07/20 00:57
>>263
そういう仕様だからじゃないの?
冷静に考えて、mainが戻り値返して、誰が受け取るんだ?
265デフォルトの名無しさん:04/07/20 00:58
>>263
void mainを実行時に探す仕様ってことね。
int mainだと単なるメソッドとしてしか扱われない。
>>263
java.exe みたいな起動ツールは void main(java.lang.String[]) を探して実行するため。
int main(java.lang.String[]) は検索対象ではないため、見つからないって文句言われる。
267248:04/07/20 01:01
Calenderオブジェクトを無理やり出力すると下のように
ずらずらと出てくる(0時48分にTomcat再起動した初回実行時)。
java.util.GregorianCalendar[
time=1027352887218,
 :
 :
HOUR=0,
HOUR_OF_DAY=0,
MINUTE=48,
SECOND=7,
MILLISECOND=218,
ZONE_OFFSET=32400000,DST_OFFSET=0]

ここのMINUTEとかSECONDがそれらしい
値がでたからわけ分からなくなった。

Calendar.SECONDとは”秒”を表す定数だということは分かりました。
つまり上のダンプのSECONDとは別物ってことですよね?
>>266
そこまで書くんなら public static もつけとけ。
>>267
> つまり上のダンプのSECONDとは別物ってことですよね?
別物っつーか、calender.get(Calender.SECOND) の戻り値。
APIリファレンスみれば一目瞭然。

http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Calendar.html#SECOND
> get および set のためのフィールド値で、秒を示します。
> たとえば、10:04:15.250 PM の場合、SECOND は 15 になります。

http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/util/Calendar.html#get(int)
> 指定された時間フィールドの値を取得します。
270263:04/07/20 01:10
>>264-266
どうもありがとうございます
mainはintにできないと言うことですね
>>269
calender じゃなくて calendar っすよ。
>>269
ありがとうございました。

>>271
小さなことです。
>>267
どちらかというとそのダンプの例ではイコールの左側に当たります。<Calendar.SECOND
ダンプって何ですか?
Javaでは時刻は特定の瞬間(1970/1/1 0:00 GMTだっけ)からのミリ秒で表していて、
それを特定の暦法の年とか月とか時分秒に換算する計算機がCalendarクラスの機能。
といっても標準ではグレゴリオ暦(ユリウス暦からの切り換え日は指定可能)くらい
しかないんだが。(あー、タイ仏教暦はあったかも。年の算出が違うだけ)

どのタイミングの時刻からそれらを計算するかは、Calendarのインスタンス
生成時の値や、setTimeあたりで設定した値。
新規に Fedora Core 2 を入れて、「>yum install tomcat」でインストールした tomcat 4.1.27 を使ってます。
Apache と連携するぐらいにしか設定をいじってないのですが、
tomcat プロセス?が無制限に立ち上がってしまって困ってます。

googleで調べて、「JAVA_OPTS(or CATALINA_OPTS) に -server や -Xms とかを追加」すれば
この現象が治まるかと思ったのですが、JAVA_OPTS をどこに記述すればいいかわかりませんでした。

起動方法は /etc/rc.d/init.d/tomcat start です。startup.shじゃなく、startup.sh自体どこにも見当たりません。
/etc/rc.d/init.d/tomcat 内の「CATALINA_OPTS」に上記パラメータを設定すると tomcat が起動しませんでした。

どのファイルに何をどう設定すれば tomcat プロセス?が無制限に起動しなくなるか、教えてくださいm(_ _)m
277276:04/07/20 09:04
ちなみに、
>ps auwwx | grep tomcat | more
とやると、以下のようなのが300行以上続きます。
まだ増え続けてます・・・

tomcat 3217 0.0 23.2 566020 112880 ? S 05:22 0:11 /usr/sbin/tomcat
-Dcom.redhat.tomcat.sysconf=/etc/sysconfig/tomcat -home /usr/share/tomcat -logfi
le /usr/share/tomcat/logs/tomcat.out -pidfile /var/run/tomcat/tomcat.pid -user t
omcat
tomcat 3245 0.0 0.0 0 0 ? Z 05:23 0:00 [tomcat] <defunct
>
tomcat 3246 0.0 0.0 0 0 ? Z 05:23 0:00 [addr2line] <defu
nct>
tomcat 3376 0.0 0.0 0 0 ? Z 05:28 0:00 [tomcat] <defunct
>
tomcat 3377 0.0 0.0 0 0 ? Z 05:28 0:00 [addr2line] <defu
nct>
tomcat 3379 0.0 0.0 0 0 ? Z 05:28 0:00 [tomcat] <defunct
>
tomcat 3380 0.0 0.0 0 0 ? Z 05:28 0:00 [addr2line] <defu
278デフォルトの名無しさん:04/07/20 09:37
こんにちは

NetBeansで、次のエラーが出てしまいます。

system_jframe.java [54:1] パッケージ org.openide.awt は存在しません。
org.openide.awt.Mnemonics.setLocalizedText(jButton1, "jButton1");

この、「org.openide.awt」というのは、
どこにあるのでしょうか?
279デフォルトの名無しさん:04/07/20 11:00
実行ファイルのパスを取得する方法ってあるんでしょうか?
ディレクトリを選択するインタフェースなんですが,
実行ファイルからスタートしたいんです.
実行ファイルのパスが分かれば,
setFilterPathで初期値を設定すれば良いと思いまして.
System.getProperties() かのう
>>279 実行ファイルってmain()があるクラスファイルのことなのか
java.exeのことなのか...
実行ファイル = 自作Javaプログラムのクラスファイルやjarファイル
だと、前向きに解釈した。
それらのファイルのあるディレクトリを実行時に
-Dhoge.home=/foo/bar/buz と指定して実行して、
System.getProperty("hoge.home")で取ってくるとか。
Javaアプリケーションを作成しているのですが、
JScrollPaneでバーの位置をプログラムで操作することは
可能なのでしょうか?

例えば、ボタンをクリックすると、
バーが一番下に行き、画面(ビューポート?)の一番下を表示する、
ということは可能でしょうか?
>>282
その解釈なら、
public class Test {
 public static void main(String[] args){
  System.err.println(Test.class.getResource("Test.class"));
 }
}
かなあ。
オンラインのJava API ドキュメントはものすごく難しく感じるので
初心者でも分かり易く書いた本
おすすめ教えてください
かなり田舎なので通販で購入したいのですが
虎の絵が表紙の奴はちょっと難しいと以前感じました。
>>285 WindowsユーザかLinuxユーザか、特にWindowsユーザの場合
コマンドプロンプトの扱いに習熟しているかどうかで、結構かわりそうだなあ、
それ。
287279:04/07/20 11:49
皆様,どうも有り難うございます.
そうです.実行ファイル=クラスファイルの意味で書きました.
分かりにくくて済みません.
>>284のgetResourceや>>282のgetPropertyで出来ました.
getProperty("user.dir")も近いような気がします.
どうも有り難うございました.
>>285
ネットじゃだめかねえ。
>>1のwikiroomのリンク先から何か参考になる情報を探すか、

http://amateras.sourceforge.jp/cgi-bin/fswiki/wiki.cgi?page=JavaLinks
を読んでみるべし。

漏れは最初「独習Java」から始めたが以前はCをやっていたのか、それ以外の
本を読まずにネットだけでJavaの基本は理解できた。ただし独習Javaはなにかと物足りない。
あとはServletなどはさすがに本を買ってやってみたが。
>>285
APIドキュメントから勉強するのは、難しいだろうけど。
結局あれが読めないというのは、どんなにやさしく書いてあっても同じことだとは思われる。
あえていうなら、技術評論社のムック
>>283
可能かどうかは API doc 見れば書いてある。
ていうか要するに「不可能だ」なんてそうそう書いてあるわけもないから、
それっぽいのが書いてあれば可能。
291デフォルトの名無しさん:04/07/20 14:34
とりあえずJava FAQで検索して嫁
APIって勉強するものだったのか・・・
なにかの機能を実現したいときに使えるものを探すためだと思ってた
>>292
まぁ、おおまかな使い方とかは勉強しとく必要があるね。
でもあまりにも膨大じゃん?
よく使うクラスから読むにしても気が遠くなりそう・・・
全部暗記しておけ
インスタンスってどういう意味ですか。
辞書を引いたら「実例」と出ましたが。
javaに沿って訳すとどうなりますか。
>>296
実体
実例で手を打っとけ。
「個体」にしてほしい
>>294
よく使うクラスから読むんじゃなくて、たとえば日付関連、入出力関連、印刷関連とか、系統だてて、基本的なものを個々のAPIじゃなくてチュートリアルで勉強する。
あとは、それらの派生だから、個々のAPIを見ればいい。
>>296
class の訳はカタカナでクラス。
同じように instance の訳もカタカナでインスタンス。
外来語の意味が知りたかったら、
辞書引いて、文脈とあわせて、載ってる候補全部から、一語に限定せずにモヤモヤと想像するしかないわなぁ。
303デフォルトの名無しさん:04/07/20 16:17
メンバってのは、稲垣メンバーみたいなもんですか?
当たり前だ
ワロタ
306283:04/07/20 20:42
>>290-291
やっぱり調べが足りなかったみたいですね。
もっちょいAPI docやJavaFAQを調べてみます。
307デフォルトの名無しさん:04/07/20 20:58
こんばんわ

相対パスからImageIconを取得したいのですが、
相対パスの基準となる場所というのは、.classのある場所でよろしいのでしょうか?

下記のコードだとIconが表示されません。(メニューにですが)

private ImageIcon icon;
icon = new ImageIcon("Valve.gif");
jMenu0.add(new JMenuItem("新規作成" , icon));
毎度毎度、何を習得すべきかわかってない奴ほど
例えば〜 のあとに「ボタンをクリックすると」と入れたがるから老婆心で言うたるが、
そのものズバリは書いてないぞ。書いてるわけない。探しても永遠に見つからない。
複数のクラスを組み合わせなきゃだめだ。最終的な目的によって設計も全然変わる。
関係ありそうなクラスを拾ってきて用途を比較検討した上で頭を捻って組み合わせてやらないと実現できない。
>>307
その指定の仕方だと実行時のカレントディレクトリになるんじゃなかったかな。
よく考えると分かると思うが、ImageIcon クラス側で画像の取得を行うわけで、
そうするとコンストラクタを呼んだクラスが何のクラスでどこに .class ファイルがあるかなんか、
あっち側では知ったこっちゃないわけだ。

クラスファイルのある場所を基準に、というなら Class#getResource("ファイル名") 。
これは相対パスであるが、絶対パスの場合は "/ファイル名" とかなったりして、
これが ImageIcon コンストラクタの引数としての "ファイル名" と同等になる。はず。たぶん。
これだと URL や InputStream としてリソースへアクセスすることになるので、
ImageIcon のコンストラクタもそれなりに選ばないとならん。
#include <iostream>
unsigned W,O,u=256,i=6,l,K,b,a[256],R=~0,y=1<<24,x=u;main(int,char**V){unsigned
char*t=new unsigned char[y];if(*V[1]-69){for(cin>>O;i--;)W=W*x|cin.get();for(;l
<O;R*=a[b]){for(K=b=0;R<y;R*=x)W=W*x|cin.get();for(R/=u++;W/R>=K;K+=a[b++]+1);W
-=R*(K-++a[t[l++]=--b]);}}else{for(;~(i=cin.get());K=W,l++){for(b=0;b<i;W+=R/u*
(a[b++]+1));if(K>W)for(K=O;!++t[--K];);for(R=R/u++*++a[i];R<y;R*=x)t[O++]=W/y,W
*=x;}cout<<l<<-1;for(y=4;y--;)t[O++]=W>>y*8;}cout.write(t,O);}

これがテトリスらしいんだがどうすりゃいいんだ?
>>310
それはJavaじゃないだろ
JButtonを“Enterキー”で押させたいんだけど
KeyListenerで“Enter”をとる以外にカッコいい方法ないかな?
本ばかりやたらと増えるが一向にプログラムを組めそうにない
今日もまた2冊購入どうしたもんだろう
書いてあるのはよく似たことばかりループ状態です
どうやったら抜け出せるのですか
先人たちよおしえれ
314みのもんだ:04/07/20 23:55
eclipseでは java.util.Arrays は対応してないのでしょうか?赤線が引かれてしまいます
>>314
対応していないわけがない。
解決したいのであればエラーメッセージ書かないと誰にもわからない。
316みのもんだ:04/07/21 00:00
インポート java.util.Arrays が解決できません

>>312
俺はシステムLAFにしてるのでWinなら大丈夫
結局そのプラットフォームの動きにみんななれていると思うから
あまり固定化しないのも手だよ

まぁ、9割はWinだろうけど
>313
自分も初心者だけど、入門書やったくらいじゃプログラム組めそうになかった。
だから本たくさん買おうとしたけど、先輩に止められたよ。
入門書ばっかりやっても仕方ないだけだって。

入門書には載ってないけど実際組むときに必要な知識って結構あると思う。
いまの疑問を溶かしていくスタイルで勉強していったらどうだろ?
オブジェクト指向が分からんからやってるけど、
それだけでもかなり理解が進んだ気がする。あとは自分が何作りたいかでは?
>>316
eclipseは java.util.Arrays に対応しているが
狂人がeclipseとJavaに対応していない
320デフォルトの名無しさん:04/07/21 01:27
>>313 短くても良いから組め。
とにかく数をこなせ。
以上。
>>317
おぉ完璧ですよ
>>294
使っているうちに覚えるもんだよ。
>>295みたいな暗記法は何でも覚えられる小学生までがやること、
大人の脳みそでは暗記しようとするのは時間の無駄。
一生懸命暗記したところで想像力が沸いて何かが作れるってもんじゃない。

>>316
ソースコードはっつけれ。
どうせimport分の最後にセミコロン付け忘れたとかだろ
324初期不良:04/07/21 09:22
>>313 >>318
日経ソフトウェアで「プログラムの創り方」なる特集をやってるよ。
教科書を一通りやったけどプログラムを作る事ができない人向けで、
細かいプログラミングの話じゃなくて、クリエイトの方法論てな感じかな?

>自分が何作りたいか
それが難しい人には難しい。誰でもクリエイターになれるのであれば
先の記事も役に立つかもしれないけど、全然こっちにこれない、と言うか
自分で壁を作っちゃっているとか良くあるからね...
>>316
お前、前スレで DoJa やってた奴じゃないか?
携帯Java に java.util.Arrays なんかねーよ。
System.out.println("url[" + i + "] = " + urls[i]);
というソースがある時、("url[" + i + "] = " + urls[i]);の部分はどんな処理をしているんですか?
教えてください。
>>326
Stringの結合。
iはこの場合intだが、Stringが最初にあるので「+」が処理されるときにStringに変換される。
実際はStringBufferが(以下略
分解するんだったら
System.out.println( ); "url[" + i + "] = " + urls[i]
こう分解しましょう。
329デフォルトの名無しさん:04/07/21 22:50
Tomcatのwebapps下に複数のアプリをおいた場合、
それぞれのクラスローダは別々になるのでしょうか?

それともcommons-loggingとかlog4jの設定はTomcatで1つ
になるのでしょうか?
330329修正:04/07/21 22:53
Tomcatのwebapps下に複数のアプリをおいた場合、
それぞれのクラスローダは別々になるのでしょうか?

ログ設定を分けたいのですが、複数のアプリでそれぞれ
log4j.propertiesの設定ができるのでしょうか。
それともcommons-loggingとかlog4jの設定はTomcatで1つ
になるのでしょうか?
332デフォルトの名無しさん:04/07/22 01:36
数値を文字列に変換したいんですが、
数値の0〜100を、文字列の000〜100というように
3桁固定で、あまった上位に0を埋めて変換するのを一撃でやる関数みたいの
ないでしょうか?
関数なんかありません
メソッドはあります
java.text.DecimalFormat
335332:04/07/22 01:53
>>334
ありがとうございます!できました。
>>332
人に聞く前に自分で何とかしようと思わないのか?
いくら初心者でもStringくらい使えるだろ?

int i = ...; // 0 から 100 までの数値
String s = "000" + i; // 頭に 0 を 3 つつける
String t = s.substring(s.length() - 3); // 右から数字を 3 つ取る

くらいできそうなもんだが。
>>336は変態だな
>>336
その処理久々に見た。俺がこの業界入りたての頃に
練習用プログラムで一度使ったきりだ
>>336-338
こういう人が2000年問題を生むんです
iが3桁以上だったらどうすんねん、ってやつだな。
仕様外なので、例外投げるとかしないとな
>>340
「4桁以上」ね
しかもすでに答えが出てるのにあえて変態的コードを偉そうに提示するところがますます変態だな。
自分で何とかするというのが、ライブラリを調べるのではなくて中途半端な実装をすることだというのが、変態だな。
でも知らないクラスを探すためにAPIリファレンス漁るのもマンドクセ
>>345
もはや英語の時間になるしな
プログラムする方がマンドクセ
つーかAPIリファレンス探さなくても検索すればすぐ出てくる。
あるものならそれを使いましょうというのが API の本分だと思うですよ
336は変態というコンセンサスがとれたところで面白いオチ↓
あぴ
Javaによるビジービーバー関数の実装例を教えてくれませんか。
まったくのプログラミング初心者なので、やさしくおねがいします。
353デフォルトの名無しさん:04/07/22 18:11
javaでprintf("%.8", x)のような桁数指定出力をするにはどうすればよいのですか?
Integer.toHexString()では、桁数の指定ができません。
よろしくおねがいします。
おまえの目は節穴か!!
>>353
jdk1.5 を使えば printf できるよ。
本当は5.0だけどね
357353:04/07/22 18:42
節穴って……
だれか>>352に答えてください。
明日までにビジービーバー関数を完成させなければならないんです。
>>358
むりじゃねぇの?
いいわけ考えたほうがよかろう。
あ、Javaでの実装が無理という意味じゃなくて、352が明日までに実装するのが無理という意味だよ。
>>360
じゃああなたなら明日までに実装できるんですか?
そんなにプログラミング能力の差があるんですか?
そんなことでつっかかってどうする。
つまらん釣りはよせ、>>352よ。
>>361
ビジービーバー関数って何のことかは知らんけど、定義はすぐ探せるし、意味がわかればコーディングが難しいもんでもないだろうから、必然性があるなら明日までにできるよ。
プログラム能力の差は、かなりある。当たり前。
352に1週間かかるプログラムくらいなら、1時間で書いてやる。
365364:04/07/22 19:19
っていうか、検索すりゃ、すぐみつかるじゃないか・・・
ビジービーバー関数を書ける神が降臨したスレはここですか?
367364:04/07/22 19:23
>>366
検索すりゃいくらでも見つかることがわかったから、書くまでもないらしい。
そうやって情報科学を知らない人を釣って楽しいのかyo!
ttp://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/undecidable.html
(・∀・) < チューリングマシン萌え
バベッジ機関の方が燃えるよ
これとかは、なにやっとるの?
ttp://gungnir.csbnet.se/~peteg/TuringMachines/bb/bb4a.13.html
372364:04/07/22 19:39
>>368
解く事はできなくても、計算自体はできる、と検索して思ったんだけど、どうなの?
つまり終わらないか解が求まらない、なんかのプログラムを作ることはできるんじゃないの?
373364:04/07/22 19:39
busy beaverっていうタイトルで、なんか動くプログラムがいっぱいあるみたいだから。
JTextField txt;を編集不可にしたいのですが
txt.enable(false);
ではjava.awt.conponentのenable(boolean)は
推奨されませんとエラーがでるんですけど
何か違うやりかたありますか?
編集不可が目的ならeditable使えば?
setEnabled もあるし・・・・
あのね APIDoc くらい見なさいなのよね
setEnabledでできました。ありがとうございました
だからsetEditableを使えと
setEditableのが文字色が薄くならずうまくいきました。ありがとうございます
>>368
(halt? '(halt))
=> #t と思わせて実は #f
ハードウェアインタラプトで実行再開されるから。
PanelをGridLayout(3.3)にして
例えばその中の1.1の位置にあるラベルを出来るだけ右寄せにしたい
のですがどうやればいいですか?
382デフォルトの名無しさん:04/07/23 01:51
>>345
> でも知らないクラスを探すためにAPIリファレンス漁るのもマンドクセ

そんな喪前に朗報。
Eclipse3.0を使うことじゃ
他人のコードで知らないクラスが現れたらそのクラスのうえにマウスを持っていき
F2キーを押すのじゃ。知らないクラスがポップアップで出てくる出てくる。
そしてそのクラスへジャンプすることもできる。
そしてそのクラスのソースコードもいとも簡単に覗くことができる。
そしてメソッド、フィールドへのアクセスも容易となる。アウトラインビューで
メソッドなどをクリックするだけでクラス内のソースコードのメソッドに飛ぶことができる。

それと、Eclipse3.0deはJavadoc View というウィンドウを起動すると
ソースコード上で呼び出されているメソッドにカーソルをもっていくまたかマウスをもっていくだけで
ウィンドウにそのメソッドのJavadocコメントが現れるのだ。

コール・ヒエラルキー・プラグインというのを使えばさらに知らないクラスやメソッドを
探索するのが楽になる。
>>357
java.text.DecimalFormatを使えといっているんだろうよ。
すでにも前と同じ質問をしたやしがいるのが見えなかったのか?
だから節穴と呼ばれるんだよ。

喪前の要求することはJ2SE5.0=J2SE1.5を必要としなくても
できるというわけだ。
しっかり寝たほうがいいぞ。
おいおい、なんで質問者が他の人の質問を読まなきゃならないんだい、ボーヤ
386デフォルトの名無しさん:04/07/23 02:05
>>352
美ジービーバーってこんなのか?

for(;;);
終了するまでの時間が無限大ならでいいんでない?

それかThread.sleep(Integer.MAX_VALUE);
をうまくつかってみるとか。
387デフォルトの名無しさん:04/07/23 02:19
グッドシュタイン列
>>386
ある数 x を与えたときに「文字数 x 以内で記述され、かつ実行ステップ数が有限であるプログラム」の
実行ステップ数の最大値を返す関数。
>>388
Cだったら
int main(){
 getchar();
 return 0;
}
で終わりだろ。これをJavaで真似して(ry
何かキーをおせば止まるんだし。
390デフォルトの名無しさん:04/07/23 05:20
Swingのクラスそのもの、例えばJTableとかJListとかのソースコードを覗くことは
できるのでしょうか。方法が有れば教えてください。
>>385
過去ログ読めって教わらなかったかボーヤ
jad
>>382
>コール・ヒエラルキー・プラグインというのを使えばさらに知らないクラ
>スやメソッドを探索するのが楽になる。

なあ、R3.0にはもう取り入れられいて、あえてプラグインの
存在を意識する必要がないんだが...
できるじゃん。
通常通りの方法で。
Eclipse使え 
>>394>>390へのレス。

>>393
そうだったのか。けど3.0のはどうやって使うのかよくわかんない

>>389
おまえは文盲か
ディレクトリからファイル一覧を取得する方法がわかりません。
perlで書くとこういうことがしたいのですが。
opendir(DIR, ".");
foreach(readdir(DIR)){
print $_;
}
closedir DIR;

あと、mkdirみたいなのも教えてください。
さりげに自己解決しちゃいました。
>397さん、ありがとうございます。
>>399
そういうのは、自己解決とはいわない。
自己解決したけど気持ちはありがたいってことでは
ていうか>>397>>397に礼を言ってるな。
まさに自己解決。
ありがとう、オレ。
どういたしまして、俺
ところで、オレ、例の件どう思う?
>>390
JDKの中のsrc.zipを解凍。
Javaはポインタの概念はないんでしょうか?
構文上はないけど概念はあるよ
>>408
それがいまいちわからないんです・・・
気にしなくていいってことですか?
Hoge a = new Hoge();
Hoge b = a;

a に対して操作をすると b も変わってしまう。
それは値のコピーをしてるんじゃないから。
参照型といわれる変数に関しては
ポインタ的なイメージを持っていたほうがいいかもね。
>>410
わかりました。
丁寧な解説ありがとうございました。
412デフォルトの名無しさん:04/07/24 04:27
カレントディレクトリにあるファイルをvectorで読み込みたいのですが、
どうすればいいですか
413デフォルトの名無しさん:04/07/24 08:26
>>406
ありがとうございました。できました。
414デフォルトの名無しさん:04/07/24 09:00
>>413
そいつをだな、Eclipseで見ると楽なんだよね。

前にもこのスレでいってると思うけど

コールヒエラルキーとか使うとさらに楽だよ。

さらに、
Eclipse3.0で
自分や他人が書いたコードをトレースするときに、
ある変数やメソッドがどこから来たのか? どこで宣言されているのか?
どのクラスにあるものかを探すのに、その該当するものを選択して
右クリックでOpen Deciarationを選択するかF3をおすと目的のソースコードのジャンプしてくれる。
しかもEclipse3.0ではsrc.zipへのパスもデフォルトで通っているので、
ソースコードにたとえば、Stringクラスが使われていたら、Stringという文字列を選択してF3キーを推しただけで
Stringクラスのソースコードにジャンプすることができる。
非常に便利な機能だ。
>>414
>>しかもEclipse3.0ではsrc.zipへのパスもデフォルトで通っているので
デフォルトでは通ってない。素のWindowsにSDKをインストールした直後は
EclipseはSDKの存在を認識することができず、SDKと同時にインストール
されたJREのほうを使うことになる。だからsrc.zipはそのままだと使えない。
あ、一つ例外があったの忘れてた。SDKとeclipseが同じフォルダに
インストールされている場合はまずeclipseはそれを使うので
自分で何も設定しなくてもsrc.zipは認識される。
それ以外の場合、初めてのeclipse.exeの起動の前にSDKへパスを
通しておいたり、eclipse.exeの起動後Installed JREsでSDKを
登録したりして、場所を教えないとsrc.zipは認識されない。
>>416
> あ、一つ例外があったの忘れてた。SDKとeclipseが同じフォルダに
> インストールされている場合はまずeclipseはそれを使うので
そんな気持ち悪いことをするのか藻前は!

>>417 さすがに普段SDKではしないなあ。でも新しいバージョンのeclipseを
使い始めるとき、確実に動作するJREが確定できたら、JREをeclipse.exeが
ある場所にコピーはする。
NetBeansでも、なにも設定しなくても追える。
テキストエディタを作ろうと思ってるんですが
キーワードごとに背景や文字の色とか変えて表示するようにする常套手段って何でしょう?
JEditorPaneとかの表示に関する部分をいじれば良さそうな気がしますが,どこをいじればいいのかわかりません.
421デフォルトの名無しさん:04/07/24 14:28
そういうものを作りたければ
Eclipse用プラグインを作ることをお勧めする。

JSPプラグインとか、CSS Editor プラグインとか
D言語プラグインとかC#プラグインとか、
JavaScriptプラグインとか。Wikiプラグインとか、
C++プラグインとか、いろいろあるからソースコード見て見るといい。
>>420
表示関連弄るより javax.swing.text.StyledDocument とかかな。
もしくは既存のコントロール使わんで全部自作するとか。

Eclipseのプラグインだと既存の構文強調に便利な API とか使えるから
すぐに使えるものを作りたいならそっちのが早いだろね。
もっともエディタ作成に関する知識が無いと既存の API の使い方を
勉強する方が面倒だったりするかもしんない。
423 ◆jHejx.Ji8k :04/07/24 14:55
プログラム初心者でも分かるような、Javaアプレット入門サイトを探しているのですが、
皆さんが知っているサイトを教えていただけないでしょうか?
アプレットなんて最近いじったことねえな。
アプレットやる人間がまだいることに驚き。
社内システムなんかではありだと思うけど。

初心者だったら普通にアプリから入ったほうがいいがな。
アプレットだといろいろつまずくことが多いから。
>>423
本買えば?
Javaの本って、たぶん必ずと言っていいほど、アプレットは取り扱ってるよ。
426423 ◆jHejx.Ji8k :04/07/24 17:12
>>424 >>425
ありがとうございます。
参考にさせてもらいます。

後、気になることがあります。
本を買ったのですが、うちのPCでは本についていたJava2 SDK 1.4.1_01をインストールしないとサンプルが動作しませんでした。
このソフト(?)は最近のパソコンにはもともと入っている物なんでしょうか?
>>421
>>422
ありがとうございます.
徐々に調べていこうと思います.
私の目的としては使えるテキストエディタを作るということよりも
テキストエディタを作れるようになりたいという方でして
>>422さんのいっているように全部自作するみたいな方から攻めていこうかと
しかし,GUI関連は全くの素人で既存のコントロールを使ったことしかないので
どこから手をつけていいものか,
まず,何について調べろとかありましたらお願いできますでしょうか?
まったくの素人だったら
最初は API を利用できるだけ利用して、勉強して、
それからトライしてみるほうが賢いと思うんだがどうかね
>>426
>本を買ったのですが、うちのPCでは本についていたJava2 SDK 1.4.1_01をインストールしないとサンプルが動作しませんでした。
>このソフト(?)は最近のパソコンにはもともと入っている物なんでしょうか?
入ってません。なお、動作させるために入れなきゃいけない(場合がある)のは JRE で、SDK は JRE +開発環境。
本に書いてないかねその辺のこと。書いてないならたぶんそれはクサレ本だから捨てていいよ。
メモ帳のHTML化ってどうやるんだっけ?ド忘れしちまった・・・・。orz
431423 ◆jHejx.Ji8k :04/07/24 21:04
ありがとうございます。
サイト・本探します。
>>430
<html>
<form>
<textarea rows=40 cols=80>
</textarea>
</form>
</html>
>>432
ワラタ。
>>432
オマエ頭いいな
>>424他の方
アプレットはもう時代遅れなのですか?
これからJavaを習うのですが、Javaでも何を勉強をしたら
プー生活から脱出できますか?
参考にしたいので、ご指導をお願いします。
>>435
仕事なら J2EE
437デフォルトの名無しさん:04/07/25 01:33
>>435
>>436 +Java 以外のこと
Java が無くてもひとつの技術情報として存立できうる諸々
プログラミング言語が扱う対象とでもいうか
プロトコルとかファイルフォーマットとか
文字コードのモの字も分からんのはちびしいね
>>435
まずはあいさつとか言葉遣いだな。
>>438
ハァ?
>>435
アプレットはリッチクライアントとしての立場がある
ただ、俺も最近はwebstartのアプレットなのでwebstartアプリケーションとの差はないけどな

webstartは通常印刷時に警告出しちゃうのでそれを回避するために
アプレットからpdfを呼び出すわけだ

441デフォルトの名無しさん:04/07/25 16:06
今日サマージャンボ宝くじ買ったんですが
右下のほうに末等は300円って書かれてるんですが
これってどういう意味なんですか?
くじを売店に持ってったらどんなくじでも300円に換金できるってことなんですか?
>>441
えっと、たぶんクラスパスが通ってないと思います。
>>441
JDK1.3 のバグで換金できない。バグパレードくらい調べろよ。
なァァにを言ってるのッ!
クラスパス知らないかってッ!?
そんな無礼な質問あるかッッ!
>>445
それはたぶん、import java.util.*;を最初にいれれば解決できると思う。
君の両親はとんでもないとこでコミットしちゃったようだね
JAVA PRESSが面白くないのは、どうしてですか?
>>448
あなたが理解できてないからです。
つーかJavaPress買う価値ないだろ・・・
>>449
理解する必要もないものがおおい気がするが・・・
>>449 は、高尚なものだと思ってるいうことかな
このスレはマジレス好きな人が多いってことかな
CMRで、ejb-jar.xmlの<ejb-relationship-role-name>って、任意の文字列でいいの?
それとも付け方にルールがある?この値ってどこでどう使われる値?
いまいちよくわからない・・・・
WEB+DB Pressのほうが俺はおもしろいと思う
>>454
質問が高度すぎる。ここにいる連中にはわからないだろうな・・・
俺にもわからないのだがorz
>>454=456
はいはい、スルーしましょうね。
EJB使ってれば高度だと思ってる人がいるんですね。
回答できないから煽るかスルーするしかないねw
>>455
目的がわかりやすいからね。
Javaの扱う範囲が広いので、Java全体を扱おうとすると、中途半端な本になりやすいんだな。

Webシステムが幅を利かせてるもうしばらくは、安泰だろ。
EJBだから高度とは思わないがCMPの細かい設定内容は俺には充分高度な質問だ
ChiMPo
>>458 わからないんですね(プ
>>463
必要になったときに調べればいいことだから、今は知らない。
>>464
要するにわからないってことですね(プ
Java使いなのにウェブ関連ぜんぜんダメな漏れは将来の希望なし
>>466
もうすぐ、Webといってもリッチクライアントの方も増えていくから大丈夫。
>>465
わからないとは思わない。知らないだけ。
名前付け規則なんて、わかるわからないとかの話じゃなくて、知ってるか知らないかというだけの話だと思うが。
できないことにはかわらんだろ
>>468 今のおまえにはできないことなんだよw
ボクやる気になればできるんだモンっ!
>>469
必要になったときに調べればいいだけ。
それに、今回の件はできるできないの話じゃないと思うが。
473デフォルトの名無しさん:04/07/25 22:32
errorcode:-2147467259(特定できないエラー)
ってどうすればかいけつしますか?
ゲーム起動時に出るんだけど
ベータの J2SDK 5.0 って何なんですか?
>>472
つまり、おまえは知らない、と。知らないくせに意地張るなよ。
知ってる奴はいなさそうだな。
>>473
解決しません

>>474
J2SDKの次バージョン
>>476
14. → 5.0 と、番号が大きな飛躍になりますが、
どんな機能追加・変更がありますか?
>>472 >>475
もう他でやれ。
>467

リッチクライアントっていまの貧弱なWebアプリのUIを強化させる
ためにあるのでは?
>>477
文法とか型とかいろいろ拡張されてる。
その辺の雑誌とかWebとかでばんばん特集組んでるから見てごらん
>>480
よく分かりました。ありがとう!
>>481
サンクス!
>>479
リッチクライアントにすれば、ウェブの知識はあまり必要ないから。
さすがにSwingも知りません、とか言われると、つらいけど。
485デフォルトの名無しさん:04/07/25 23:39
>>484
リッチクライアントで Swingは無いと思うよ・・・。
>>485
AWTはさらにないし、SWTもまだまだだし。
>>485
今月のJavaWorldでは、リッチクライアントとファットクライアントと区別してるね。
後者はスタンドアローンアプリケーションを指すらしいが、JavaWebStartによる
Javaアプリケーションはファットクライアントではなく、リッチクライアントだそうだ。
この記事の定義では、リッチクライアントにはSwing APIによる実装も含まれることになる。
>>484
リッチクライアントつっても Web の知識がなけりゃ話にならん。
そこでCarlですよ。

はやってねーなぁ
Curlは実際流行らないでしょ。
Java Appletか、Flashか、またはMS関係だろうね。
学生Java使いなんですが、ウェブ関連の勉強もしたほうがいいでしょうか?
>>491
Java 使いで Web は分かりませんっつーのは・・・
でも聞くっつーことは Java アプリケーションだけで食えないってのは
気づいてんだな。
やっぱJavaはネットワークで動いてこそ華
>>488
べつに、リッチクライアントを組むときにはWebの知識必要ないと思うが。
配布とかでは必要かもしれんけど。
まったく知らないのは、実際問題、困るけど。
>>494
サーバとHTTP通信するんだからWebの知識は必要でしょ?
>>491
Java関係なく、プログラムやりたいならWeb関連知っておくべき。
>>496
そんなもん、JAX-RPCとかが隠してくれるだろ。
むー、やはりウェブ関連は避けては通れないみたいね。
ネットワークの基礎からちゃんと勉強するかー。
>>499
時間があるなら、java.net.Socketでのやりとりはちゃんとやっとけ。
HTTPを使う以上、セッション管理とかの概念はどうしても必要だろ?
>>495
( ´,_ゝ`)
>>501
そんなもん、JAX-RPCの実装が管理してくれるだろ。
>>503
それは、やってくれることを全く知らないでもかまわないってこと?
>>504
かまわない。
というか、知っててどうする、という感じだし。
JAX-RPCのことをちゃんと知ってればいい。
SOAPとかWSDLとかも、とりあえず知らなくていい。
リッチクライアントはここ2年ほどやってるが
Swingは十分にあり

SWTはJNI全開なのでお察しください
気軽にはできんやね

Flashはフォームベースは作りにくすぎだし

JAX-RPCは・・・うーんどうなんだろ
ApacheSOAPのときからSOAPやってきたが
ヘビーな実装だとクライアントサイズが大きく鳴りやすかったりして
扱いにくい事も多いよ

所詮HTTPしか使わないことがほとんどだろうから自作か
XML-RPCでやってるね
XML-RPCはApacheのサイトいっておとしてくればいい

XML-RPCはサーバーがjava以外でも扱いやすいのでそれなりにこの方法もあり
まあ、なにかRPCの仕組みは必要だな。
XML-RPCはよさげだね。
ウェブサービスっていってもRPConHTTPが欲しいだけで、UDDIで探したりとかしないしね。
ただ、JAX-RPCは、ツールの支援が受けやすいのがメリットかと。
JAVAを勉強して一ヶ月くらいです。
やさしいJAVAを斜め読みし、
JAVAコンポーネントを斜め読みしたくらいです。

「こんにちわ世界」と表示するウインドウを作れるようになりました。
ボタンを押すと文字の色が変わります。
もうひとつボタンがあり、押すと「へろーわーるど」と変わります。
メニューバーも作り、メニューからも文字の色を変えれます。
そんな物を作りました。
褒めてください。
>>467
リッチクライアントにはWebServicesは必須アイテムだぞ
public static void main(String[] args)
public static void main(String args[])
と二つの表記があるみたいなんですが、どっちが正しいのでしょうか?
>>512
これも定期的に出る話題だな

どっちでもOK
sunのコードでどっちも使ってる
>>512
どちらも文法的に受理されるが、Javaの標準は前者。
後者はCなんかでその記法になれた人のために受理するようにしてある
と考えるべし。キャストなどで型名だけを書くときにはどうしたって
前者の型になるし。

言語仕様を見ると、
10.1 Array Types
An array type is written as the name of an element type
followed by some number of empty pairs of square brackets [].
とあり、また、
10.2 Array Variables
...
The [] may appear as part of the type at the beginning of
the declaration, or as part of the declarator for
a particular variable, or both, ...
とあったりする。

"or both"ってのは、
String[] x, y[];
なんて書いても許されると言えば許されるということ。

しかしこれだと、
xの型→String[]
yの型→String[][]
だってことがわかりにくいからよしといたほうがいいと思う。
>>513
サンクスコ
>>514
書き忘れ
サンクス
1.ソースを実行している時に、実行からの経過時間などを表示できるメソッド
 はないでしょうか?

2.あとプログラムの速度を上げるコツみないなのが書いてあるサイト、本
 などがあれば紹介していただけないでしょうか?
>>517
1・普通にjava.util.Dateでも出力すればいい気が
2・ネックになる場所がどこかを把握するのが最初
  たぶん質問のレベルから考えてここによほどこだわる必要ないと思うんだが
  Javaがインタプリタで遅いとか勘違いしてる人?
>>517
1.
プログラムのスタート時に
final long start_time = System.currentTimeMillis();
とやっておき、見たいところで、
System.out.println( System.currentTimeMillis() - start_time );
とやる。

2.
Javaの鉄則、Javaの格言辺りか?
経過時間が知りたいなら開始時にSystem.currentTimeMillis()しておいて
出力したい時点での値から引く。でDateにでもして表示。

log4jでも%rで出力することが出来るみたいね。
http://www.atmarkit.co.jp/fjava/rensai2/jakarta09/jakarta09.html
521デフォルトの名無しさん:04/07/26 10:32
3つ質問です。

Java のデフォルトのクラスパスっていうのはどうやって見ることができるんですか?
(自分の環境には CLASS_PATH っていう環境変数が存在していなかったので)

それから例えば javax.swing なんていうのは具体的にどこを検索しているんですか?
SDK の中探したところで javax や swing なんていうディレクトリは見つからなかったですが…。

import の目的って名前解決のためだけですよね?
極論を言ってしまえば無くても大丈夫ですよね?
>>521
Windowsならコマンドラインからset
Unix系でBashならexport、csh系ならset

大体メインのはrt.jarの中

importは無くてもOK
523デフォルトの名無しさん:04/07/26 11:10
>>522
レスサンクス。
>>521 クラスパスに関してはここでいいかげんな解説きくより、まず
http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/findingclasses.html
これよめや。
>>522 SDK/JREのインストール時はデフォルトで
環境変数を設定しないから「デフォルトのクラスパス」
をsetで確認することはできない。
もし確認するとしたら、システムプロパティjava.class.path
を表示するコードを自分で書くとか。
まあ、SDKの仕様ではデフォルトのクラスパスは . なんだけど。
>>525
おぉ、そうだそうだ。
「デフォルトの」をすっ飛ばしちゃったよ。スマン。
それも「tooldocs を読め」で終わりだな
tooldocsに書いてるということはどこに書いてありますか
530プロじゃないグラマー:04/07/26 12:27
宜しくお願いします。

環境:
Win2k + IE6.0
JDK1.4.2
struts1.0.2
eclipse3.0
tomcat5.0
ですが、
Tomcatを起動して
http://localhost:8080/
でTomcatホームを表示させようとすると
なぜかディレクトリ一覧が表示されてしまいます。

少し前まではちゃんと表示されていたのに、このような現象になってしまいました。
色々、設定ファイル(server.xml等)をいじっているですが、わかりません。
どこをどのように直せば直るのか
またはこの辺じゃない!?等
なんでもいいので、ご存知の方ご教授願います。
ROOTを自分のやつにしたからじゃない?
ROOTは使わない方がいいと思うよ
>>528
マニュアルに書いてるということはどこに書いてありますか
APIドキュメントに書いてるということはどこに書いてありますか
と聞いているようなものだ。
SDKのツールの使い方はtooldocsに書いてある。
>>531
> ROOTを自分のやつにしたからじゃない?
すごく意味不明なレスだな。

>>530
1. Tomcat/webapps/ROOT/index.jspを削除またはリネームした
2. Tomcat/conf/web.xmlの<welcome-file-list>を編集した
あたりかな・・・・
534プロじゃないグラマー:04/07/26 13:13
>>533

レスありがとうございます。
> 1. Tomcat/webapps/ROOT/index.jspを削除またはリネームした
いえ、index.jspというファイル名でありました。
> 2. Tomcat/conf/web.xmlの<welcome-file-list>を編集した
更新日時がインストールした日付となっていたので、編集した形跡はないのですが・・
一応中身も確認したのですが、
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
となっていました。

引き続き情報お願いします。
まさかとは思うが・・・・
8080 で応答してるのは本当に Tomcat かね?
プロクシかなんか立ててないかね
536プロじゃないグラマー:04/07/26 13:20

すいません。。エラー内容が少し違いました。

ディレクトリ一覧が表示されるというのは、
Tomcat/webapps/ROOTの中身が表示されているのではなく
自分でEclipseで作成したWorkspaceのディレクトリ一覧が表示されています。
なので、Tomcatを起動したときに初期設定ファイルを読み込みに行ったときに
アドレスパスが違うところに設定してあるのかなと思うのですが。
それを設定するのってweb.xmlですよね?
537プロじゃないグラマー:04/07/26 13:27
>>535

全て自分のマシンで作業をしています。
一応、セキュリティソフト(ノートン)を停止してアクセスしてみたのですが、結果は
同じでした。
ちなみに前、表示できたときはセキュリティソフトを停止しなくても表示できました。
538プロじゃないグラマー:04/07/26 14:24
Tomcat 5.0/conf/Catalina/localhostの中にある
「ROOT.xml」の中身をいじったら解決しました!

――――――――中身――――――――――――

<?xml version='1.0' encoding='utf-8'?>
<Context docBase="ワークスペースのパス" path="" reloadable="true" workDir="ワークのパス">
</Context>

――――――――ここまで――――――――――――
となっていたのですが、pathに何も指定されていなかったので、指定したところ
うまく表示できるようになりました。
でも解決はしたのですが、なぜ解決なのかがよくわかりません。。
どなたかご教授ください。

設定ファイルを読み込みに行くときに何かしらのエラーでアドレスのパスが
違うところを指してしまっていたのでしょうか?
java.lang.Character.UnicodeBlock.HIRAGANA.of(対象文字c)
は使えないのん?
540539:04/07/26 14:27
板間違えたorz
スレだろ
DATA1,・・・,DATA100,・・・といった感じのローカル変数をfor文とかでまとめて
宣言できませんか?(配列で定義するってのはなしで)
発想が既に間違っていることに気付け
>DATA1,・・・,DATA100,・・・といった感じのローカル変数
>(配列で定義するってのはなしで)
変態さんのすることですね。残念ながら、変態さん向けの仕様はありません。
ローカル変数でなければ reflect という手がないでもないですが、
それを使ったところで変態は変態です。
あ、宣言か。宣言はできんわ。
いや、配列で宣言したデータが、JSPの画面との送受信が上手くいかなかったんで、
配列をばらして個別に宣言しようかと思ったんだよ。
JSP厨にもいろんなのがいるね
"サゾドマ虫" みたい
width = p2.getX() - p1.getX();
height = p1.getY() - p2.getY();

String style, textstyle;

if ( scale <= 15000) {
style = "fill:#FF0000;fill-opacity:0.15;stroke:#FF0000;stroke-width:0.8";
textstyle = "fill:#FF0000;font-size:80;fill-opacity:0.4";
} else {
style = "fill:#0000FF;fill-opacity:0.15;stroke:#0000FF;stroke-width:0.8";
textstyle = "fill:#0000FF;font-size:80;fill-opacity:0.4";
}
というソースでfill-opacity:0.4という言葉は何を示していますか?教えてください。
>>549
それ、Java関係ないから。
CSSだから。
またこういう
入門に最適なサイトてどこだろ。
>>552
Google

うそ。
「Java 入門」だと、Javaの入門者が書いたサイトと有料講座の紹介と書籍のページぱかりがひっかかる。
554デフォルトの名無しさん:04/07/27 01:17
アプレットでゲーム作ってるけど、
これってJavaの勉強になる?
>>554
普通に、なるでしょう。

J2EEは別途。
>>555
わーい!よかった〜
すっごく楽しいんだよね。
557デフォルトの名無しさん:04/07/27 02:22
初歩的な質問ですいませんが、どなたかご教示ください。
JavaからJavaScriptに文字列(漢字)を受け渡したいのですが、
上手くいきません。
ローカルでは上手くいくのですが、ドメインが変わると上手くいきません。
何かいい方法はないでしょうか?
>>556
完成したらうpしる
>>556
楽しんでできるのは何よりだ。
>JavaからJavaScriptに文字列(漢字)を受け渡したいのですが、

まあローカルで上手くいくとかいうのを見ると
アプレットのセキュリティあたりの話なんだろうけど
もっと具体的に書かないと誰も答えられないと思うよ。
渡し方なんていくらでもあるわけで。
>>557
JavaからJavaScriptに文字列(漢字)を渡す方法

<script language="javascript">
 var unko = <%= "氏ね" %>
</script>

よかったな!
562557:04/07/27 02:44
やりたいことは以下のとおりです。

@JavaのPGで氏名(漢字)を取得する
Aその氏名(漢字)をJavaScriptに受け渡す
BJavaScriptで他のデータと一緒にNotesDBに追加登録する

ということです。そのJavaとJavaScriptが別々のサーバに存在する
ため上手くいかないようです。

ちなみに、JDBCを使うとどうもNotesDBに漢字の登録ができない
ようだったのでこの方法を試してみました。。

すいません、ご教示お願いします。
563初期不良:04/07/27 05:04
>>552
atmarkit に一通りそろっているような気もするけどどうなんだろ。
いまから始めるJava
http://www.atmarkit.co.jp/fjava/index/index_javaent.html
基礎から学ぶサーブレット/JSP
http://www.atmarkit.co.jp/fjava/index/index_jspservlet.html
Eclipseではじめるプログラミング
http://www.atmarkit.co.jp/fjava/index/index_eclipsejava.html
他にもたくさん...
http://www.atmarkit.co.jp/fjava/
>>562
具体性に欠けすぎ。なんだよ PG って。
それに取得ってなんだよ。String として存在させることができてるならそんな手順書く必要ないと思うんだけど。
アプレットなのかサーブレット(or JSP) なのか EJB なのかアプリケーションなのか。
かたくなに Java としか書いてないが、またぞろ Java == JSP だと思ってるアホタレの一味か?
JavaScriptに受け渡す、ってどう渡すんだよ。
JSP やサーブレットで HTML に埋め込むのか?
それとも(オレはやれるのかどうか知らんが)アプレットの同一ページ内のJavaScript に渡すのか?
JavaとJavaScriptが別々のサーバって、サーバ2台かよ。JavaScript がサーバにあるって何だ。
埋め込んだ HTML がサーバにあるの意か。
NotesDB はどこにあるんだよ。Webページ閲覧者と同じローカルホスト? j2ee のサーバサイド? 3台目のサーバ?
JavaScriptで追加する・・・・って JavaScript から DB にアクセスさせるのか?
どこで教わったそんなアホなこと。

まぁほんとはどういう状況なのか何となく分かるが、
君自身がよく分かってて、適切に紛れなく書いてないと話が進まないんだよ。

>ちなみに、JDBCを使うとどうもNotesDBに漢字の登録ができない
>ようだったのでこの方法を試してみました。。
Notes 使ったことないから知らんけど、この諦めがそもそも間違いじゃないの。
>>564
( ´,_ゝ`)プッ
そんなこともわかんないの?自己解決したのでもういいです(゚听)イラネ
夏か
Notes使ってる時点でDQNだしな
568デフォルトの名無しさん:04/07/27 10:20
シェルコマンドをjavaプログラム上から実行したいんですけど
どうしたらいいんでしょうか?
参考になるホームページなどでも紹介してください。
お願いします。
569デフォルトの名無しさん:04/07/27 10:27
570デフォルトの名無しさん:04/07/27 10:42
>>569
ありがとうございます。
具体的にはどのクラスとかわかりますか?
javax.net.sslここのやつ使えばいいのかな?
572デフォルトの名無しさん:04/07/27 11:21
Beanってなんですか?
ミスタービーンのことですか?
>>572
そうだよ。
>>572
自分で調べろ。
ホームページはここだ。
ttp://www.bean.co.jp/
575デフォルトの名無しさん:04/07/27 12:38
パーセント表示で少数1桁まで
表示したいのですが
A = C * 100 / MaxC;
System.out.println ("C:"+A+"%");
とすると98.0%となってしまいます。
1000倍すると986.0%
どうすれば少数点以下をだせるのですか?
型と実際の値くらい書け
こっちで勝手に決めて例示しても理解できないかもしれんぞ
>>575
てきとーにやるとこんな感じか。

int permil = (int)(.... * 1000);
System.out.println((permil/10)+"."+(permil%10)+"%");

しっかりやりたければ java.text.DecimalFormat 使うなり tiger以降の java.util.Formatter や printf 使うなりしてくれ。
578デフォルトの名無しさん:04/07/27 13:09
>>576
あいー
>>577
どもです
なるほど。あまりを使えばいいのかー。
早速ためしてできました。
ありがとうございました。
579デフォルトの名無しさん:04/07/27 13:13
>>574
ワラタ。日興ビーンズもおもいだした。

それからむかしあった日本にやってきたが即座に撤退したbeenz.comも思い出した。

それから、オサム Mr.Bean ラディも思い出した
Javaのセキュリティ周り(SecurityManager等)に関しての文献や資料は
無いでしょうか。ちょっと時間を掛けても良いので、体系的に説明して
あれば有り難いのですが…仕様を読んだ方が早い?

プログラミング言語 Java 第3版
http://www.amazon.co.jp/exec/obidos/ASIN/4894713438/
の該当項目を読んでみたのですが、この項に関してはどうしても日本語が
理解できませんでした _| ̄|○
>>580
言語仕様とかみても SecurityManager まわりについて詳しくは書いてないと思うけど。

この辺読んでみれば?
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/security/smPortGuide.html
582デフォルトの名無しさん:04/07/27 15:16
メソッドを呼び出す時、staticならそのまま呼べて、
staticがないとインスタンスを作成しないといけないなら、
みんなstaticにすればいいと思うんでけど、だめなんですか?
>>582
別にダメじゃないが、標準ライブラリにインスタンスメソッドがある以上、みんなというわけには行かないな。
>>582
ダメじゃないと思うなら、自分のソース書くときは全部 staticメソッドにすればいいだけ。
>>582
そう思うならC言語でやってればいいだけ。
staticでいけてるうちはstaticでいけばいい。
>>581
確かにそうですね。仕様を読むのはお門違いですか…
ちょっと腰据えて読んでみます。トンです。
<form>
<input type="checkbox" name="unko">びちびち
<input type="checkbox" name="unko">下痢
<input type="checkbox" name="unko">便秘
</form>

<%
String unko[] = new String[3];

if(request.getParameterValues("unko") != null){
unko = request.getParameterValues("unko");
}else{
unko[0] = "";
unko[1] = "";
unko[2] = "";
}
%>

java.lang.ArrayIndexOutOfBoundsException: 1(とか2)

こんなエラーが出ます。
なんででしょうか。
>>588
エラーが出てるのは別の所だな。
まず、checkboxでチェックされなかった場合は、値は渡されない。
よって、必ずしもString[] unkoの配列が3つとは限らない。
なぜなら、
String unko[] = new String[3];
で3つ確保してるように見えるが、
unko = request.getParameterValues("unko");
で参照を上書きしてるので。
590デフォルトの名無しさん:04/07/27 17:19
すいません。
jdbc経由でOracleに大きなデータを入れたいのですが。

jdbc経由でOracleのCLOBに、
PreparedStatementのsetCharacterStreamを使って、
6000バイトのデータを突っ込もうとしているのですが、
java.sql.SQLException: I/O例外です。: Connection reset
と、怒られます。

そもそも、4096byte以上のデータは入らないのですか?
みなさん、どのように対応しているのでしょうか?

環境は以下のとおりです。
Oracle9i
Oracle JDBC Driver 9.2.0
j2sdk1.4.2_02
>>590
普通に入る。
なんか変なことやってると思われ。
592590:04/07/27 17:39
>>591
返信ありがとうございます。

うーん。
ソースは次のとおりなんですが、
ここに問題ないとしたら、
Oracleまわりの環境で何かおかしなことしてますかね。
593590:04/07/27 17:40
//クラスをロード
Class.forName("oracle.jdbc.driver.OracleDriver");

String url = "jdbc:oracle:thin:@サーバ名:1521:SID";
String user = "ユーザ名";
String pwd = "パスワード";

Connection con = DriverManager.getConnection(url, user, pwd);
con.setAutoCommit(true);

//クエリ(CLOBの列がひとつだけのテーブルに値を入れる)
String sql = "INSERT INTO TXT_CLOBTEST VALUES (?)";
PreparedStatement ps = ps = con.prepareStatement(sql);

String ins = "";
//6000文字のデータを作成
for (int i = 0; i < 6000; i++) {
ins += "0";
}

Reader reader = new StringReader(ins);
ps.setCharacterStream(1, reader, ins.length());

//クエリを実行
int ret = ps.executeUpdate();

reader.close();
ps.close();
con.close();
>>592
はははは。君は面白い人だな。
CLOBは直接insertすることができん。
せめて、主キーとCLOBと言ったテーブルにして、まず主キーのみでinsert。
その主キーでselectしてResultSet#getClobでCLOBを取得。
そのCLOBを元にupdateする必要がある。
XDocletで、Servlet2.4のweb.xmlを生成するには、どうしたらいいですか?
596588:04/07/27 18:34
>>589
チェックボックスの時はどうしたらいいんでしょうか。
配列が3個とは限らなかったらどうやって配列を初期化すればいいのでしょうか。

妥協してnameに別々の名前を付ければいいんでしょうか。
>>596
配列の初期化は必要ない。もらうときに既に初期化されているから。
むしろ配列の長さを3と固定しない処理にするべき。
こんな感じで。

String unko[] = request.getParameterValues("unko");
if ( unko == null ) {
unko = new String[3]
unko[0] = "";
unko[1] = "";
unko[2] = "";
}

for ( int i = 0; i < unko.length; i++ ) {
//処理
}
>>596
っていうか、checkboxのvalueを設定しる。
java.sun.com/j2se/1.4/ja/docs/ja/index.html
↑このドキュメントのオフライン版って前DLできたんですが、
今やろうとしたらない…てか下の方のリンククリックして
DLしたら英語版だったorz
こんなへたれにご教授下さいm(_ _)m
こんなこと言いたかないが、夏だな。
夏休みにプログラムなんぞしてないで、外出て遊んだ方がいいぞ
603デフォルトの名無しさん:04/07/27 22:19
質問です。
C++の環境ならほとんどVC++が使われていますけど、
Javaだと何になるんでしょうか?
> C++の環境ならほとんどVC++が使われていますけど、
この前提がそもそもの間違い。
>>603
SunのJava2SE
>>603
【Java/C/PHP/他】統合開発環境Eclipse M13
http://pc5.2ch.net/test/read.cgi/tech/1089456669/
>>602
それです!ありがとうございました。
Webアプリを勉強し始めたものです

MVCというパターンで作ろうと思うのですが
処理の流れは↓みたいなかんじでよいのでしょうか?

例えば、検索の画面を作るとしてフレーム(上下に分割)でやるとしたら
Servlet(C)→forward→フレーム.jsp(input.jsp、dummyjsp)
みたいにしておいて
input.jspで条件を入れて検索ボタンを押したときにdummy.jspが置いてあるフレーム内へ
input.jspのformをsubmitして条件を送信しServletで検索処理を行い
result.jsp(結果表示用View)にforwardでよいのでしょうか?
また、この時Servletは共有してフラグかなんかで処理をわけるというやり方でよいでしょうか?
609608:04/07/28 00:56
↑Servletで検索してと言うのはおかしいですね
Beanで検索処理をしてそれをrequestにつめてViewで取り出す
というやり方に修正させて下さい

StreamTokenizerを使って
33323e-05というような形式の記述を
数値トークンとして取り出したいのですが

33323 数値トークン
e-05 ワードトークン

という風に分けて取り出されてしまい、うまくいきません。
33323e-05の形式で、数値トークンとして取り出すことはできるのでしょうか?
>>608
たぶんそんなん。
だけど

> input.jspで条件を入れて検索ボタンを押したときにdummy.jspが置いてあるフレーム内へ
> input.jspのformをsubmit

意味不明
ついでにその程度なら、Beanはデータのやりとりだけに使って、検索処理はコントローラーであるサーブレットでやれ。

さらにいえば、MVCは、あんまり深く考えてやるもんじゃないよ。
雰囲気だけ。
どれがMでどれがVでどれがCかは、見方によってどうとでもなるし。
結局Webには向かない考え方。
JAIを使って透過色データを持ってるGIF等の画像を
JPEGに変換する方法を教えていただけませんか?
透明部分は他の色(例えば白)に置き換えたいのですが。
613デフォルトの名無しさん:04/07/28 10:27
javaでftp機能を実現するにはどうすればいいでしょうか?
アドバイスお願いします。
>613
FTPプロトコルとJava上のSocketについて勉強する
まだjspをあまり理解していないのですが、
jspは、
<%
%>
<html>
・・・
</html>
こういう感じで書くと思うんですけど、perlとかみたいに、
関数で小分けして書くことはできないのですか?
htmlの中にプログラムを埋め込む方法はやめたいのですが。
>>612
この辺でどうぞ
FilteredImageSource ImageFilter ImageIO

>>613
ファイル単発でいいなら URL, URLConnection を使うと楽。
ちまたの FTP ソフトみたいにユーザが目で見てやりとりするなら >>614 のいうとおり
>>615
Java もあんまり理解してないみたいだな。
小分けってのはつまるところファイルを分けるってことだな。
クラスを別途作って、同じサーバ内(JSP から参照解決できる場所)におく
>htmlの中にプログラムを埋め込む方法はやめたいのですが。
言わんとしてる事はわかるがこの文だけ見ると「そりゃねぇだろう」って感じ
>>613
クライアントの話なら Jakarta Commons の Net とか、
他にも出来合いのライブラリあるんじゃないか?
使ったこと無いけどな
http://jakarta.apache.org/commons/
>>616
あ、ちなみにメソッドもかけるよ。<%! %> だったかな
"html の中" はいやなようだから君には意味無いかも知らんけど
>>610
俺の乏しい知識でその問題を補うとすれば、
まず StreamTokenizer ではなく BufferedReader でとって、
regex でパターン認識して切り出して(現れる箇所が分かってれば要らない)、
toUpperCase() で e を E に変えて DecimalFormat 使う。
とりあえずこれでしのいで、数学関係をよくやる偉い人の登場を待たれよ。
ますます遠回りかもしれないが MessageFormat でもいいかもしれない。
MessageFormat mf = new MessageFormat("{0}が{1,number,0.###E0}円");
Object[] os = mf.parse("全財産が33323E-05円");
System.out.println(os[0]);
System.out.println(os[1]);
>>615
Servletでどーぞ。
もしくはjspを全部<% %>で囲って、その中で
response.getWriter().println("<html>");
:
と書いていくか。
途中で無意味さに気づくかもしれないが。
JSPからJavaBeans呼べばいいじゃん。
Servletを使わずにJSPだけですまそうとする、その設計が気に入らないのは俺だけだろうか
同意だが、ここの質問にいちいち設計から教えてたらキリがない。
>>623
気に入らないというかなんというか・・・
「そんなんだったらCGIで済ましとけ」って感じだよな
jspいいぜ熱くなるぜ、遊ぶにはもってこいだ
1行で全てこなすサーバーサイド作るのに必死だった
最後やけになったけど、まっ何も得るものは無いけどはまるよ
javaでloadaverageやuptimeといった
システムの情報を取得する方法ってあるんですかね?

検索かけてもコードは出てこず…
628プロじゃないグラマー:04/07/28 20:51
http://localhost:8080/struts-test01/**.do
と打ったらDBにアクセスし、データを一覧表示するプログラムを作ったのですが。

エラーメッセージ
500 - No action instance for path
が出て調べたのですが、一日中わかりませんでした。

これはコンフィグレーションファイルを疑った方がいいのですよね?
何度も見たのですが、合ってると思うのですが。。

色々調べたんですが、
他の理由としてActionを継承していない可能性があるらしいのですが。

何が一番考えられますか?
ちなみにActionクラスのソースも下記に乗せます。
629プロじゃないグラマー:04/07/28 20:52
package hoge;

import javax.servlet.http.HttpServletRequest;

public final class BookViewProcess extends Action {

/* (non-Javadoc)
* @see org.apache.struts.action.Action#perform(org.apache.struts.action.ActionServlet, org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public ActionForward perform(ActionMapping map, ActionForm arg2,
HttpServletRequest request, HttpServletResponse arg4)
throws IOException, ServletException {
ArrayList objAry = BookInfo.getBookInfos();
request.setAttribute("book.view.info", objAry.toArray());
return map.findForward("success");
}
}
>>628
設定ファイルのActionのパッケージ名・クラス名が間違ってない?
631プロじゃないグラマー:04/07/28 22:01
> 設定ファイルのActionのパッケージ名・クラス名が間違ってない?
設定ファイルというのはどのことをいうのでしょうか?
632プロじゃないグラマー:04/07/28 22:04
ちなみにstrutsフレームワークを使っています。

設定ファイルというのはコンフィグレーションファイル(struts-config.xml)のことでしょうか?
633プロじゃないグラマー:04/07/28 22:16
struts-config.xmlでしたら、
<action-mappings>
に下記を追加しました。

<action path="/TestView" type="hoge.BooKViewProcess">
<forward name="success" path="/View.jsp" />
</action>

http://localhost:8080/struts-test01/TestView.do
とアクセスしました。
なぜか
http://localhost:8080/struts-test01
と入力したらindex.jspファイルが表示されるのですが、されません。
これも原因かとも思うのですが。
> 設定ファイルというのはコンフィグレーションファイル(struts-config.xml)のことでしょうか?
そのまんまじゃないかよ。
逆にstruts-config.xmlというファイル名かどうかはweb.xmlの設定次第なので
設定ファイル==コンフィグレーションファイル!=struts-config.xml だ。
> と入力したらindex.jspファイルが表示されるのですが、されません。
されるのかされないのかはっきりしろ
636デフォルトの名無しさん:04/07/28 22:51
こんばんは、よろしくお願いします。
Graphics2D の中身をDoubleで指定したいのですが、
下記のようにしてみました。

BufferedImage bufi = new BufferedImage(wigth,higth,BufferedImage.TYPE_BYTE_INDEXED);
Graphics2D g = (Graphics2D)bufi.getGraphics();
Rectangle rec = new Rectangle();
rec.setRect(1.5,1.5,2.3,3.4);
g.fill((Shape)rec);

実行すると、NoSurchMethodErrorがでます。
方法を教えていただきたいのですが。
>>636
MSJVM は JDK1.1レベルなので JDK1.2 で実装された BufferedImage、Graphics2D が無い。
たぶん、先頭行の new BufferedImage(wigth,higth,BufferedImage.TYPE_BYTE_INDEXED) で
そんなメソッド(この場合はコンストラクタだけど)が見つからねーって怒られると思われ。

って事じゃなくて?
638デフォルトの名無しさん:04/07/28 23:11
>636です
>>637さんありがとうございます。
申し訳ないのですが、意味をよく理解できないでいます。
BufferedImage bufi = new BufferedImage(wigth,higth,BufferedImage.TYPE_BYTE_INDEXED);
Graphics2D g = (Graphics2D)bufi.getGraphics();
g.fillRect(int ,int,int,int)<---ここをintで設定はできます。
それでは、doubleで、設定は、できないと考えてよいのでしょうか。
fillrectってintだけなんじゃないのか?
マニュアルよんだ?
640プロじゃないグラマー :04/07/28 23:54
> と入力したらindex.jspファイルが表示されるのですが、されません。
>> されるのかされないのかはっきりしろ
すいません。日本語って難しい。
表示されるはずができません。

ワークスペースが2つあるのですが、1つはちゃんと表示されるのですが、
もう1つの(今現在動かない上記の状態)方が動きません。
でも簡単なJSPは動くのですが。
動くのか動かないのかはっきりしろ。
>>637
そういうときは先に NoClassDefFoundError が先に出たと思う。
>>638 が実行できてるということから言っても問題はそこではない。
しかし、なんじゃろう。何故できないんだろう。思いつかん。ボクはバカだったのかやっぱり。

>>638
NoClassDefFoundError, NoSuchMethodError は、
コンパイルやテストしてる VM と、実行する VM が違うなどすると起こる。
VM はバージョンの変遷などで、標準API に具備されるクラスやメソッドが変わる。
例えば携帯電話の Java では、J2SE (PC 以上向け) の膨大な API のうちのほんの一部しか共通項目がない。
MSVM (手を加えていない IE の VMプラグイン) も同様。ということを >>637 は言っている。

>rec.setRect(1.5,1.5,2.3,3.4);
ここで出るの? 出る状況ってのが思いつかないんだけど・・・
ちなみに g.fill(rec); でも全く同じだよ。Rectangle は Shape 実装クラスだからキャストは要らない。
#こんなことしか指摘できない
>>640
>>530 と同じようなことをまた言ってるな。
何も分からず弄くりたおしてるんじゃないか?
644デフォルトの名無しさん:04/07/29 00:34
servlet とJSP で書いたWEBAPP があるのですが、
これをパッケージ化したいと思います。
EJB 化すべきでしょうか?
というかEJB 化するメリットがあるのでしょうか?
>>627

loadavg なら JNI で書いたコードは手元にあるが。。
簡単にやるには w の出力をもらうとか、
Linux なら /proc/loadavg を直接読んじゃうという方法もある。
>>644
まずはEJBについて調べてみたら?
647デフォルトの名無しさん:04/07/29 00:51
>>646
MVC は意識して作成しました。
よって主だったメリットはビジネスロジックの部品化だと思っております。
あまりカスタマイズするようなことはないと思っております。
という状態で、EJB 化のコストを払うのはもったいないと思っています。

そんなところでみなさんの意見としてはいかがでしょうか?
648デフォルトの名無しさん:04/07/29 00:56
>>636です
>>637さん
>>642さん
ありがとうございます。
原因は別のところにありました。
(思い込みが激しくて、ここだとばかり。。)
たしかに、キャストしなくてもつかえました。
そして、rec.setRect(double,double,double,double);
でも、大丈夫でした。
マニュアルの長い文章も読んでみようと思います。
いろいろありがとうございました。
649プロじゃないグラマー:04/07/29 01:02
整理しますと、
TOMCAT起動→web.xmlを読み込む→ワークスペース毎のweb.xmlを読み込む→コンフィギュレーションファイル読み込み
→(コンフィギュレーションで)指定したファイルにリクエストを送る
で動きはこんなイメージでいいんですよね?
650プロじゃないグラマー:04/07/29 01:03
'}' expected
}
^
1 error
括弧は対応しているのにこれがでるのですが
age
>>651
・javac が間違ってると仮定して javac のソースを読む
・自分のソースが間違ってると仮定して自分のソースを見直す

どっちでも好きにしてください。
初心者ほど、自分は間違ってなくて他が間違ってるって思いがちなのはなぜなのか。
655デフォルトの名無しさん:04/07/29 01:59
'case', 'default' or '}' expected
このエラーの意味を教えて下さい。
○そこまでの流れでそれらのどれかが来るはずだが、来ていない。
×(ry
翔泳社「独習Java第2版」で勉強しているものですが
質問させてください

文字ストリーム・バイトストリームっていろいろあるとおもうんですが
実際の運用ソフトなどでどのくらい必要なのでしょうか?

PrintStremやらPrintWriterやらいろいろあって覚えるのが大変です・・・
PrintStremは簡単なテストプログラムでしか使わない方がいいとか
なら覚える必要あるのかって思いまして

とくにバイトストリームの各クラスのコンストラクタやらインスタンスメソッド
が覚えきれないほどあって困ってます(´・ェ・`)

抽象的な質問ですみません
関連情報ならなんでもいいんで教えてください
お願いします
>実際の運用ソフトなどでどのくらい必要なのでしょうか?
無かったらにっちもさっちも行かない。
大雑把に言えばファイル読み込みとネットワークリソース読み込み。
読み込む側がいれば書き込む側もあり、それが Java なプログラムであることも当然。
それぞれ個別に見れば君に身近であろうところでプレーンテキスト、HTML、画像、音声、などなどなど。
XML階層構造になってるVM内のオブジェクト群を、
XML 文書に変換しながら zip圧縮しつつ ftp で転送とか、ちょろっと書ける。
ストリームをストリームでくるんでそれをまたくるむとかそんな感じ。
659デフォルトの名無しさん:04/07/29 07:22
cannot resolve symbol
のエラーはどういう意味ですか?まぢわけわかりません
660デフォルトの名無しさん:04/07/29 07:30
>>654
初心者プログラマに限らず一般的な人についてもそういう人はいるし。
むしろそれが原因でいつまでも初心者なのかも。
661デフォルトの名無しさん:04/07/29 07:32
>>659
シンボルを解決出来ません。
>>647
メリットは保守じゃなくて、次回の開発にコンポーネントを生かせるかどうかだと思うが。
まあ、教育のコストはかかるかもね。
>>658
レスありがとうございました

必要そうなのでゆっくりですが一つづつ覚えていきたいと思います

8月からPGとして働くことになったんですがとても心配です。。。

ありがとうございました
java.text.Format のサブクラスで
数字を左詰できるフォーマットってありますか?
>>664
整数だったら DecimalFormat と ChoiceFormat を組み合わせれば左詰も右詰もできるよ。ちと手間がかかるけど。
浮動小数点数だと数値の表示桁数を取得するのが面倒だから Format のサブクラスを作るなり、他の方法を考えた方がよさげ。
JSFってなんだっけ?

Aというソースにimportで記入されてないソースBがソースAの動作に絡むことはありますか?
>>667
Aの中でpackage.B.getHoge()みたいな書き方されてたら絡む。
>>668
ありがとうございました。
670デフォルトの名無しさん:04/07/29 13:45
一般的な電卓を思い浮かべてください。
表示画面が一番上にあり、以下にボタンがあります。
グリッドバッグレイアウトで上記のようなレイアウトにしたいのですが、
なぜか、ボタンが表示画面と同じサイズになってしまいます。n行1列の不細工な
電卓ができます。どうにか一般的な電卓のレイアウトにしたく試行錯誤中。
行き詰まったのでヒントを与えてください。
671デフォルトの名無しさん:04/07/29 14:00
jspの中だと、
request.setCharacterEncoding("Shift_JIS");//文字コード設定
これは何も言われないのに、

public class Smp1{
public static void main( String args[] ){
System.out.println( "Java講座へようこそ!" );
request.setCharacterEncoding("Shift_JIS");//文字コード設定
}
}
javaの中だと
シンボルを解決できません。
シンボル: 変数 request

と言われます。なんでですか。
>>671
君はJSPの仕組みを理解していないのだね。

JSPはJavaのソースに変換されコンパイルされるのだが、その際にJSPの中のソースはとあるメソッドの中で処理される。
そのメソッドは引数にrequestを持っているので、JSPの中で使っても問題ない。
しかし、君のJavaの方のソースでは、requestをどこでも定義していない。定義していない物が使えないのは当たり前のことだ。
673671:04/07/29 14:43
そういうカラクリだったのですか。
すいません、JSPは小学校で習わなかったもので…。
公立小学校のクソ教育じゃしょうがないわな。
今時JSPもまともに理解してねぇ中学生は落ちこぼれ組確定だぞ?
>>670
大枠を BorderLayout にして、NORTH に表示部を配置して、
CENTER に GridBagLayout (GridLayout でもいい) な Container を配置すれば?

どーしても GridBag がいいなら REMAINDER つかってみ。
>>675
Thanks

REMAINDER,RELATIVEで何とか問題解消しました。
ただ新たに1行に4つボタンを配置したいのに2つしか出ない問題発生orz
677671:04/07/29 15:28
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;

public class Smp1{
public static void main( String args[] ){
System.out.println( "Java講座へようこそ!" );
}
}

Smp1.java:1: パッケージ javax.servlet は存在しません。
import javax.servlet.*;
^
Smp1.java:2: パッケージ javax.servlet.http は存在しません。
import javax.servlet.http.*;
^
Smp1.java:3: パッケージ javax.servlet.jsp は存在しません。
import javax.servlet.jsp.*;
^

何度もすいません。
今度はimportしてみましたが、こんなエラーになりました。
なんで存在しないんでしょうか。
-------------------------------------------
jspを書いてコンパイルするとEclipseが勝手にjavaを作ってくれますが、
これを自力でjavaファイルを作るのは可能なんでしょうか。
これは意味のないことなんでしょうか。
>>677
ServletじゃないプログラムにServlet関連のクラスをインポートしようとして何をしたいんだ?
それをコンパイル通すだけなら、servlet.jarをクラスパスに追加すればいいだけだが。
理論も根拠も無いのにごちゃごちゃ書き足すな。
必要なとこだけ書けよ。

public class Smp1{
 public static void main( String args[] ){
  System.out.println( "Java講座へようこそ!" );
 }
}
このソースだって何かのサンプルを参考にしてるんじゃないのか?
そのサンプルで Servlet パッケージを import してたか?
680670:04/07/29 16:42
Γ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
1     表示部      |
_____________」_____________
1      1       1      1       1
1  button 1 button 1 button 1 button 1
1______1_______1______1_______1

表示部の幅にボタンを合わせたいんだけど・・・
ソースは晒します。
681670:04/07/29 16:45
ずれたorz
682670:04/07/29 16:53
public class calculator extends Applet
{
Label label;
Button one, two, three, four, five, six, seven, eight, nine,
zero, addition, subtraction, multiplication, division, equal,
period, ac,c;
public void init()
{
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints constr = new GridBagConstraints();
setLayout(gridbag);
constr.fill = GridBagConstraints.BOTH;
constr.weightx = 1;
683670:04/07/29 16:55
label = new Label("0", Label.RIGHT);
label.setBackground(Color.white);
constr.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints(label, constr);
add(label);
constr.gridwidth = GridBagConstraints.RELATIVE;
ac = new Button("AC");
gridbag.setConstraints(ac, constr);
add(ac);
c = new Button("C");
gridbag.setConstraints(c, constr);
add(c);
equal = new Button("=");
gridbag.setConstraints(equal, constr);
add(equal);
division = new Button("/");
constr.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints(division, constr);
add(division);

こんな感じです。もうかれこれ4時間悩んでます。お願い島す
>>680
それってボックスとグリッド組み合わせた方がはやいんじゃ?

グリッドバッグが必要な状況はそうそうないよ

無理して GridBag を使ったばーい。
Component[][] comps = {
{ label },
{ ac, c },
{ seven, eight, nine, division },
{ four, five, six, multiplication },
{ one, two, three, subtraction },
{ zero, period, equal, addition }
};
gc.fill = GridBagConstraints.BOTH;
for (gc.gridy=0; gc.gridy<comps.length; gc.gridy++) {
for (gc.gridx=0; gc.gridx<comps[gc.gridy].length; gc.gridx++) {
if (gc.gridx == comps[gc.gridy].length -1) {
gc.gridwidth = GridBagConstraints.REMAINDER;
} else {
gc.gridwidth = 1;
}
gbl.setConstraints(comps[gc.gridy][gc.gridx], gc);
pane.add(comps[gc.gridy][gc.gridx]);
}
}
法則性があるんだから、それを見越してこんなの書けばいい。
でもやっぱり >>684 の言う通りだと思うよ。
686デフォルトの名無しさん:04/07/29 17:37
JNIをはじめようと、さっき思って、自分で全部調べるよりも人に聞いたほうが早く済みそうなことがあるのでここで聞かせてください。

例えばJavaからCを使いたいとして、C側の型は環境によって大きさが違うわけですよね。
その辺はどうやって、整合性(?)を取るのでしょうか?
同じマシンでも、どのコンパイラを使うかで違いも出るだろうし…
int16とかそんな感じのを使うのでしょうか?
ちょろっと(ほんとにちょろっと)調べてみた限りではそういう記述は見つけられなかったので、
調べるにも時間がかかると思い質問しました。

JNIというか、型の動きはJavahとかが環境部分を吸収しているから
その辺気にする必要はないぞ
ちなみにWin32のはjintはlongと定義されてる
Win32 であれば、\include\win32\jni_md.h に定義がある。
Java 側の型と、プラットフォームにおける型の対応が typedef されている。
コンパイラによる違いが吸収できる様に書いてあるんじゃないかな。疎いので分かりまへん。

JNI を使う理由≒プラットフォーム依存の処理を行いたい、であるから、
C のソースがターゲットにしている OS は固定され、
OS 間による bit 数の違いを意識した C のソースは不要であることが多かろう。
コンパイラ間ははて。
690353:04/07/29 20:07
>>383
遅くなりましたが、ありがごうございました。
691688:04/07/29 22:02
自分でも調べます。わからんのは気に食わないので徹底的に調べます。
でも、全然さっぱり全くわからないので、こんかいだけコードとかで教えてください。

(Windows系(.dll)でJNIをつかうのと)UNIX系(.so)でJNIを使うときのコードを教えてください。
今はまだHelloWorldもできないんですが、何がなんだかサパーリで。。。時間だけが過ぎて行く。。。
リンクがどうたら。。。

やりたいこと。
Cで整数型の数値や実数型の数値とかを得て、それをJavaに送りたい。
で、
Cで「scanf("%d",&hoge);」をやって、それで得た値をJavaにリターンしたいです。
どういうコードを書いてどうコンパイルして進めてゆくとよいでしょうか。
ほんとスンマセン。JNI難しい。。。
JNIについて詳しく語ってくれてる書籍でオススメないでしょうか?
692644:04/07/29 22:37
>>662
遅くなりましたが、レスどうも!
そうですね、使いまわしできないものばかりです。
さらに教育、習得コストも考えると
「パッケージ化するからEJB に書き直そう」という考えはやめます。

でもでもEJB 化するメリットはこんなところにもある!っていうかたが
いらっしゃいましたら教えて頂きたいです。
>>691
JNI じゃなくて C言語の基礎とコンパイラやリンカの使い方を勉強した方がよさげ。
>>691
http://www.hellohiro.com/
最低でもこれみてからもう一度質問してくれ
みましたけど、好きになれないページなので
見ませんでした。
だから自分で勉強しましたけど。
>>691
その課題、JNI ほとんど関係ないな。かすってるだけだ。関数名あわせたら終いだ。
難しいとかなんとか言ってるけど、結局、何も調べてないからじゃないか?
何も知らない奴がいくら頭捻っても何も出てこないぞ
FreeBSD な人で JNI をやってる人がいるから
見てみると参考になるかもしれない。
"FreeBSD JNI" あたりでググれば出る。
分かりやすく書いてるところでも
ページが嫌いだからみませんでした
わかりません、おしえてください!
ってのは仕事で使うなら通用せんぞい

ま、仕事以外でもそんな理屈はつうじんが
っつか、JNI って専用スレがあったような…… DAT落ちしたんだっけか?
700デフォルトの名無しさん:04/07/30 10:34
質問です。

short x = (long)1;
はコンパイルで弾かれるけど、

short x = (int)1;
は普通にコンパイル通ります。


int型(4バイト)の数値をshort型(2バイト)に入れようとしてるのだから、
コンパイルで落ちるハズだと思っているのですが、、、
なぜ通るのでしょうか?

教えて下さい。m(_~_)m
ちなみに環境は、J2SE1.4です。
>>700
暗黙の変換ルールに従ってるか従ってないかの違い。
702デフォルトの名無しさん:04/07/30 10:48
>>701
resありがとう御座います。

(int)を書いて明示的にキャスト掛けても、
暗黙の型変換が行われていると言うことでしょうか?
え、これっていけるの?
なんで?

int y = 1;
short x = y;
はとおらないよね。
704700:04/07/30 10:52
>>703
ええ。
そっちは通らないです。


ちなみに、、、コレ全部通ります。
short b = (int)1;
byte c = (short)1;
byte d = (int)1;
char g = (int)12;
float h = (long)1;
double i = (long)1;
>>703
y に何入ってるか分からないからでしょ
それは実行時を鑑みてコンパイルで通さない
定数ならコンパイル時に変換可能

short ← long が何故ダメかしらんがそういう規定になっちょる
706700:04/07/30 10:59
>>705
なるほど。。。。
>>706
言語仕様でいうと以下のあたりが該当する。

15.26.1 単純代入演算子 =
http://www.y-adagio.com/public/standards/tr_javalang2/expressions.doc.html#5295
> もし代入変換(5.2)によって,その右辺オペランドの型を
> その変数の型に変換できないならば,コンパイル時エラーが発生する。

5.2 代入変換
http://www.y-adagio.com/public/standards/tr_javalang2/conversions.doc.html#184206
> 更に,次の条件をすべて満足すれば,プリミティブ型の縮小変換を使用してもよい。
>
> ・式が型byte,short,char又は,intの定数式。
> ・変数の型が,byte,short又はchar。
> ・式の値(定数式なのでコンパイル時にわかる)が,その変数の型で表現可能。

int y = 1;
short x = y;

はダメだが、

final int y = 1;
short x = y;

は大丈夫だと思われ。
>>705
たぶん配列初期化子用のシンタックスシュガーだから。
その規定が無いと、
 byte[] array = { 0, 1, 2, 3 };
で済むところを
 byte[] array = { (byte)0, (byte)1, (byte)2, (byte)3 };
と書かないといけない。

 byte[] array = { 0L, 1L, 2L, 3L };
と書く奴は自業自得なので自分でキャストしろ、って事だと思われ。
>>708
どーせなら16進リテラルは特別扱いして欲しかった。

0x7F 超えると
 byte[] array = { (byte)0x80 };
みたいにキャストが必要になるので不便。
あぁそうか (long) だの L だのわざわざ書く方がおかしいもんな
XMLのDOMの内容をタグつきでStringに一気に出力することは出来ないんでしょうか?
なるべく標準的な方法で.

((XmlDocument) doc).write(new PrintWriter(System.out), "Shift_JIS");
このように書けば画面に出力できることは分かったんですが・・・
そこまでわかっててできないのも不思議だな。
StringWriter strWriter = new StringWriter();
((XmlDocument) doc).write(new PrintWriter(strWriter), "Shift_JIS");
String xml = strWriter.toString();
713711:04/07/30 16:03
ガーン・・・既にレスがついていた・・・
どうも有り難うございました.

StringWriter sw = new StringWriter();
((XmlDocument) doc).write(sw, "Shift_JIS");
String str = sw.toString();

今,ふと,上のコードを思いついたところでした.
もっと勉強します.
XmlDocument って、JAXP って奴のあれですか
あ、思ってたのと違う。すいません 独り言垂れ流してしまいました
716711:04/07/30 16:12
よく分からないですが,crimson.treeになってます.
このあたり,パッケージが多すぎて,Java初心者には意味不明です.

JAXPは規格で,その実装は
javax.xml.parsers.*;
org.apache.crimson.tree.*;
org.apache.xpath.*
org.w3c.dom.*
あたりがそうなんだろうと勝手に理解してますが・・・
書き出しにもJAXPつかえよ

そういやJ2SE5からはやっとXPathが標準で使えるんだっけ
私は org.w3c.dom.Document 使ってますよ。
ぺーぺープログラマが何の下調べも無く選んだだけですが。1.4 で標準になってるらしいので。
これだとタグ列への変換は
Source ds = new DOMSource(doc);
Result r = new StreamResult(os);
TransformerFactory.newInstance().newTransformer().transform(ds, r);
こんなことをします。文字コード指定省いているので UTF-8 で書き込まれたりします。
719711:04/07/30 16:53
有難うございます.今,>>718のコードで確認してみました.
>>718が標準っぽいので,使わせていただきます.
有難うございました.
720デフォルトの名無しさん:04/07/30 22:15
JAVAはJVMかまして実行するからプラットフォームに依存しないけど、
実行が遅くなると聞いた事があります。

JAVAのソースをからJVMを使わない、プラットフォーム依存の
オブジェクトコードを生成することって出来ないのでしょうか?
>>720
そんなことは、実行速度が気になってから考えなさい。
動画バリバリのゲームじゃない限りは、あまり問題ない。
をから
723勉強中:04/07/30 23:35
x^y mod z (各1024bit)の計算をしたいのに,
BigInteger の modPow を使用しないで実装したいのですが,
Java 初心者のため丸一日試しましたが上手くいきませんでした.
どなたかヒントでもよいのでアドバイスいただけませんでしょうか.
動画バリバリってのがわからんが
3Dじゃなきゃ大概ネックにはならんな
ネックになったところでそこはJNIで、と割り切れば

少なくとも初心者はこだわる必要ない希ガス
インタプリタ時代のVBより遙かに早いしな
725デフォルトの名無しさん:04/07/31 00:22
世の中の基幹システムは大概C++で書かれているが、JAVAの方が
シンプルさや安全性で言語仕様としては優れているという話もある。

ならば、将来的にJAVAがC++に取って代わることもあり得るかと
思ったが、ネイティブコードが生成出来ないんじゃ話にならないね。
726デフォルトの名無しさん:04/07/31 00:23
>>725
なぜですか?
727デフォルトの名無しさん:04/07/31 00:35
JAVAでHTTP通信をするときに、HTTPのバージョンは指定できるのでしょうか?
JAVAは、簡単に逆コンパイルされるってのが痛いよね・・・
市販のソフト開発でJAVA使うのは、いろいろ問題ない?
一太郎はJAVA版があるって有名だけど。
あれも完全オプソになってるし。
>>728
> JAVAは、簡単に逆コンパイルされるってのが痛いよね・・・
> 市販のソフト開発でJAVA使うのは、いろいろ問題ない?
何が痛いのかさっぱりわからん
あ、そうか。レベルの低さモロバレになるからか!
>>727
自分でSocket使ってプロトコル叩けばなんでも可能。
>>725
C++で書かれてる基幹システムって、怖いよね。
733デフォルトの名無しさん:04/07/31 01:53
>>731
URLとかで楽しようとしちゃダメですか?
>>729
>>730
いやいや。
レベルの低さがバレる程度なんてどうでもいいじゃない。
すんげー効率のよい処理してても、
糞ソフトは糞ソフトなんだし、
効率悪い処理してても、
良いソフトは良いソフトだ。

そんな事じゃなくプロダクトキーとか、
そういうのに意味がなくなるんじゃない?って事。
ソース見られたら、ロジックがわかっちゃうじゃない。
簡単に。
ロジックの内容を理解しないでも、書き換えられたりしたら・・・
そういう話で。
ロジックがわかったら破られると考えるのは
暗号を理解していない証拠だな。
>>735
その部分が書き換えられたら?
プロダクトキーが通ってると書き換えられたら?

別にJAVA言語がどうのって煽ってる訳じゃないんだよ・・・
俺もJAVAがいいと思って勉強したんだしさ。
まだまだ勉強中だけど。
ただ簡単に逆コンパイルできるのは困るねって話で。
VMコードを暗号化するオプションってなかったっけ?
>>737
ないっぽい。
難読化とか曖昧化とかと呼ばれてる
ソースレベルで変換して、
逆コンパイルしてもソースを読みにくくするソフトはあるが・・・
暗号化したバイトコードが吐けりゃいいな〜。

そして、sunはその暗号化の仕様をガッチリ固めて公開。
暗号化された物も簡単に解読できる罠に陥る予感。
難読化するなり適当に暗号化するなりお好きなように。
コンパイラが生成しないようなコードになるようにバイトコードに手を入れれば
逆コンパイル自体できなくできるけどな。
プロダクトキーの秘密鍵で暗号化しておけば
復元にプロダクトキーの公開鍵でないとだめとかは?
>>740
復号化部分を逆コンパイルされたら意味がない。
復号化部分をネイティブで実装 or サーバ部分に置くなら多少はマシだがな。
でもメモリ状態を調べられたり通信を調べられたりしたら大して意味はない。
ていうか、
ソフトを売って金稼ぐ時代は終わったんだよ。
サービス売れよ。
どこだっけかな・・・
classファイルを暗号化するJAVAアプリがあったな・・・
キーワードを元に復号化する訳だ。
キーワードが間違ってても復号化される。
キーワードが合ってれば正しく復号化されるが、
間違ってると間違った復号化されるって訳。

これなら、復号化部分を逆コンパイルされても大丈夫。
たしかフリーで公開されてたと思うぞ。
jdbcを利用する場合のコードには決まって

Class.forName(なんたら);//ドライバクラスのロード
Connection con = DriverManager.getConnection(url);

な感じの記述がありますが、
なぜクラスを利用するのに

import なんとか.DriverManager;

Connection con = DriverManager.getConnection(url);

といった形にならないのでしょうか?
745デフォルトの名無しさん:04/07/31 08:06
>>744
Sunの最初のJDBCの仕様があほだから。
ベンダが提供するDriverクラスはクラスロード時にDriverManagerに自分を登録する仕様になっている。
しかし実はスレッドセーフでないという罠。
ベンダが提供するDataSourceから直でコネクションは取得しましょう。
746デフォルトの名無しさん:04/07/31 08:27
おはようございます。Java Applet のプログラム勉強してるんですが、サーバー側に置いてあるファイル(最大でも1MB程度)を
ネットワーク経由で読み出してbyte配列に収める処理をしたいのですが、以下の方法だと読み出しが全部終わる前に終わってしまいます。

byte bd[] ; // データファイル収納先
int filesize = 0 ; // そのファイルのサイズ

String filename = getParameter("gamedata") ; // データファイルのファイル名取得
try {
URL u = new URL(getCodeBase()+filename) ; // 対象ファイルの所在を取得
Object obj = u.getContent() ;
BufferedInputStream bis = new BufferedInputStream((InputStream)obj) ;
filesize = bis.available() ; // ファイルのサイズを取得(※1)
bd = new byte[filesize] ;
b = filesize ;
c = 0 ;
while(b>0) {// Microsoft JavaVM はなぜか 2048 以上バッファが取れないのでその対処用
if (b>2048) { x = 2048 ; } else { x = b ; }
b -= x ;
bis.read(bd,c,x) ;
c += x ;
}
bis.close() ;
System.out.println("Read File:"+u.toString()) ;
System.out.println("Read Byte:"+filesize) ; // 読み出しサイズを表示(※2)
} catch (Exception e) {
System.out.println("Can not Read Gamedata File!:"+filename) ;
System.out.println("Exception at reading "+e) ;
bd = new byte[filesize] ; // エラーの場合でも、これやっとかないとコンパイルできない
}
 … 以下 bd[] に関して処理を行う。変数は全て初期化済みでコンパイルエラーは発生しません。(-target 1.1 オプションつき)
747デフォルトの名無しさん:04/07/31 08:27
>746 の続き

 ローカル環境かつ HTML ファイルを直接ブラウザに読ませたり
 AppletViewer で実行する時は正常に全部読めるのですが、
 ネットワーク経由や、ローカルサーバー経由でブラウザから
 読み込ませようとすると、※1の位置で全部のファイルをバッファ
 に入れる処理が間に合わず※2で32768とか1440とかの切りの
 いい数字が表示されてしまい、以後の処理が正常に行われなく
 なります。
 Imageファイルの MediaTracker のみたいに、ファイルを完全に
 読み終わるまでその場で実行を停止する waitForAll() みたいな
 手法ってありますでしょうか。できれば、※1の前でウェイト
 をかける手法ではなく、時間がかかってもきちんと読み出せる
 方法が望ましいのですが・・・

 是非先人の方々のお知恵を是非拝借したく。よろしく御願いします。
>>746
読み込んだサイズの取得してねーぞ?
これじゃまずいだろ
>>746
748のいうようにreadが実際に何バイト読み取ったかをチェックしていないのも
まずいし、そもそも※1はファイルのサイズを取得するためのものじゃないから
このバイト数だけ読み込もうとしているのもまずい。
750デフォルトの名無しさん:04/07/31 11:11
746 です。
>748 >749
ありがとうです。えーと、その場合まずネットワーク先のファイルの
サイズを自力で取得する必要があるって事ですよね?でもって、その
サイズになるまでデータの読み出しを続ける、と。
ファイルサイズを取得する命令みたいなものは、どんなものがあり
ますか?ポインタだけでも是非御願いします。
751749:04/07/31 11:14
ああごめんなさい、質問ちゃんと読んでなかった。
※1がまずいってのはじかくしているのか。
読み込むサイズを最初から決めるんじゃなくて、
read()がストリームの最後に達するまでひたすら
読み込む方針のほうが楽。詳しくはreadのAPIリファレンス参照。
753749:04/07/31 11:26
どうしてもファイルサイズが知りたいのならHTTPのレスポンスヘッダに
含まれるcontent lengthを取得する手もあるけど、これも必ず存在する
わけじゃないからね。
>>750
たぶんどうしてこういう状況になったかというと、
(1)最終的にbyte[]にデータを保存したい。
(2)byte[]をどれくらいの長さで用意したらいいかわからない。
(3)ファイルサイズを取得だ!
って感じなんだろうな。(2)のようなときのためにByteArrayOutputStream
というのがあるから覚えておくといい。
755デフォルトの名無しさん:04/07/31 12:14
java3dで3DCGをHP上に乗せたいんですが
HP上の3DCGを見る側の人間には何かインストールさせないといけないものとか
ありますか?
756デフォルトの名無しさん:04/07/31 12:26
画像ファイル(JPG,PNG,GIF)のファイルサイズを減少させたいと思っています。
そこで画像の減色を行いたいのですが何か方法無いですか?
Image I/OでリサイズやJPEGの圧縮保存は出来たんですがこれでは減色はできないようで。
JPEGって、減色したら高周波成分が増えてファイルサイズ増える気がするけど。
758デフォルトの名無しさん:04/07/31 12:42
>>757
やっぱりJPEGだと減色する意味は無いんですかね。
でもPNGやGIF(今の所書き出しには対応して無いようですけど)用で使いますので。
出力する前に filter かけたら?
& 0xfe とかして成分あたりの色数半分にするとか
760670:04/07/31 13:01
>>684-685
レス遅れました。すいません。
ボタンの配置ですが「+」ボタンとかは他のボタンより大きくしたく、
GridBagを使かったんです。(GridBagじゃなくてもできる?)
>>684さんの言うようにボックスとグリッドで出来るならそっちでやってみたいです。
>>746 こういう感じかな。
byte bd[] = null; // コンパイラ対策、別にこれでもいいんじゃない?
String filename = getParameter("gamedata");
try {
URL u = new URL(getCodeBase()+filename); // Class#getResourceAsStream とかは使えなかったっけかな jar 内でないとダメかな
BufferedInputStream bis = new BufferedInputStream(u.openStream()); //これでもよい
ByteArrayOutputStream bos = new ByteArrayOutputStream(); //754案
//filesize = bis.available(); available は対応してない stream もあるしあんまり使いどころ無い
byte[] buf = new byte[8192]; //長さはなんでもいい
while (true) {
 int readlen = read(buf);
 if (readlen == -1) break;
 bos.write(buf, 0, readlen);
}
bis.close();
bd = bos.toByteArray();
System.out.println("Read File:"+u.toString()) ;
System.out.println("Read Byte:"+bd.length) ;
} catch (Exception e) {
System.out.println("Can not Read Gamedata File!:"+filename) ;
System.out.println("Exception at reading "+e) ;
}
JPEGは隣同士の画素の濃度の連続変化に対して威力が増すように作られているからね
減色すると不連続になってしまう。
>>755
静止画で載せたいなら言わずもがな。
Applet で動画あるいは動的なものとして載せたいならこれまた言わずもがな。
764デフォルトの名無しさん:04/07/31 13:10
KERNEL32.DLL で使える関数で簡単な奴一つ教えて
>>760
ああ、縦長にかね。
BoxLayout は swing だから、IE 標準の VM とかだと使えないよ。
使うなら BorderLayout か FlowLAyout だね。
ACC?÷ // Border。Center は Left-Flow, EAST は÷
789× // Border。Center は 1x3 の grid, EAST は×
456− // Border。Center は 1x3 の grid, EAST は−
123+ // この下二段、Border。CENTER は 2x3 の grid, EAST は+のみ。
0.=+ //

それぞれ長さが合うように考えて配置すること。
でも一番いいのは null layout にして setBounds する方法かもな。
確か前のスレで答えた。
あ、一番上はまずかったかも。ずれるかも。どうかな。フォント幅によるかな。
一番下、Grid 1x4 の、それぞれ 2x1,2x1,2x1,1x1 にしてもいいかも。
んで、全体を Border にする。なぜなら一番下はどうしてもサイズが合わないから。
767デフォルトの名無しさん:04/07/31 13:23
えと、文字列中の「||」を「\n」とかに置換したいんですが、
String.replaceAll("||","\n");ってやると、文字列中の各文字の前後に「\n」が入っちゃいます。
一応今はString.replace('|','\n');とやってからString.replaceAll("\n\n","\n");ってやってますが、
これだと、文字列中に「|」があった場合にうまくいきませんです。
うまく「||」を「\n」に置換できる方法あったらおしえてくらはい。
おながいします。
>>764
GetCurrentDirectoryとかかもしれんけどスレ違い。
>>767
スレ違い
>>769
そうなの?
771デフォルトの名無しさん:04/07/31 13:35
>>770
そうかも。
772767:04/07/31 13:41
あう、よく考えたらすれ違いだったです。
おとなしく正規表現スレに逝ってきます。
なんでこんなにもりあがってるんだ?
Javaの正規表現だし、いいんじゃないのかなぁ・・・
775デフォルトの名無しさん:04/07/31 14:46
746です。
多数のコメントありがとうございました。
>761 氏のソースほぼそのままで正解でした。
read(buf) を bis.read(buf) としてカンペキ
でした。重ね重ねありがとうございました。
776デフォルトの名無しさん:04/07/31 15:12
初歩的な質問です

public class ExOperator1 {
   public static void main(String[ ] args) {
     int x = 10;
     int y = 10;

     //変数xの値を1増加させた後、変数answerXに代入を行う。
     int answerX = ++x;     //@

     //変数yを変数answerYに代入した後、変数yの値を1増加させる。
     int answerY = y++;     //A
     System.out.println(answerX + " : " + x);   //B
     System.out.println(answerY + " : " + y);    //C
   }
}
>>774

  ど  こ  が
778776:04/07/31 15:17
1.2は解りますが、3.4のprintlnメソッドでanswerXとxの値を表示する際に使われてる
+は、実行結果に反映されて内容ですが
どのような意味があるのですが?

単項演算子の+(char, byte, short型の変数はint型に型変換されます)
足し算の+とは別?
>>777
え、Javaの正規表現の話じゃないの?
780776:04/07/31 15:24
参考HPを下のほうまで読んだらわかりました
失礼しました。
>>778
15.18.1 文字列連結演算子 +
http://www.y-adagio.com/public/standards/tr_javalang2/expressions.doc.html#39990
> もし一つのオペランドの式だけが型 String であるならば,
> 実行時に文字列を生成するために,他方のオペランドに対して文字列変換を実行する。
> その結果は,二つのオペランドの文字列を連結して新たに作成した
> String オブジェクトへの参照とする。新たに作成した文字列の中では,
> 左辺オぺランドの文字が右辺オぺランドの文字に先行する。
>>779
\\\\なんかの問題ならともかく
今回は | の使い方が間違っているだけだろ素人
>>782
Javaのドキュメントにも書いてあるような話なら、あながちスレ違いともいえないと思うんだけど。
今回のだって、PatternのJavaDoc嫁で解決できるんじゃないの?
質問です。
環境は
WinXP
Apache2.0.48
Tomcat5.0.27
J2SE1.4.2
です。
TomcatとApacheの連携のためもモジュールとしてmod_jk2が必要であるということは
何とかわかったんですが、実際にどうやって連携させたらいいのかさっぱりわかりません。
どなたか教えていただけますでしょうか?
>>784
グーグルで調べなさい。
そもそもApacheと連携させる必要性があるの?
>>785
レスサンクスです。
一応 ttp://www2s.biglobe.ne.jp/~yuuki_ki/opensource/js_tomcat3.htm
に書かれている通り、ttp://www.meisei-u.ac.jp/mirror/apache/dist/jakarta/tomcat-connectors/jk2/binaries/win32/
からjakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zipを落とすんですが
zip解凍時にエラーが出て先に進めないんです…orz
Apacheとの連携についてですが、あくまで参考書を片手に勉強中なので内容の通り
進んでいたもので…普通は必要性がないんですか?
>>786
lhaplusはJavaものの解凍でエラー出すことがおおいので、+lhacaにしなさい。
と決め付けてみた。
とりあえず、単に勉強するときにはApacheとTomcatの連携なんかはあとまわしでいい。
実際の運用で、レスポンスやら他とのからみやらを考慮して、Apache使うかどうか決める。
いきなりApacheとTomcatを連携させるJSP/Servletの入門本は、内容が古いことが多い。
>>787(゚Д゚|||)ガーン おっしゃるとおりlhaplusで解凍しようとしてエラーが出ていたんです。
もっかいラサ入れなおします…orz

>とりあえず、単に勉強するときにはApacheとTomcatの連携なんかはあとまわしでいい。
>実際の運用で、レスポンスやら他とのからみやらを考慮して、Apache使うかどうか決める。
>いきなりApacheとTomcatを連携させるJSP/Servletの入門本は、内容が古いことが多い。
そうですかぁ、勉強になりますた。とりあえず初歩段階の勉強としてTomcatのままで勉強
していきたいと思います。ありがとうございました。

スレ違いだけど解凍ソフトの多くに脆弱性が見つかったよな。
>>789
スレ違いだけど、ソース元、どっかきぼん
スレ違いだけどワロタ
>>788
あと、TomcatのWebサーバーは簡易的なもので、実運用で外に見せるべきじゃない、というのは、Tomcat3のころの昔話ね。
BorderLayoutのCenterにJComponent張りつけてpackすると
サイズがほとんど0の状態になるんだけど
JComponentにある程度の大きさをあたえるにはどうしたらいいでしょうか?
>>793
スレ違いだけど、さんくす。
>>794
setPreferredSize (囁
>>796
できました
ありがとうございます
>>792
JSPやServletの他に、HTMLなど静的コンテンツがある程度あるなら、
Apacheと連携した方がいいんでないの?
>>798
話の本質を見抜けない奴だな…
>>798
HTML程度であれば、あまりApache使う意味はなさげ。
認証とかちょっとした動的なメッセージとかで、結局ほんとに静的HTMLファイルはなくなることも多いし。

ま、画像だね。問題は。
一般向けの一般的なものを売るサイトで、アクセスが集中するときには、Apacheを表にたてる。
それとかバーチャルホストとか、Apacheの機能が使いたいとき。

まぁ、それほど手間じゃないから、Apacheは立てるんだけどね。結局。
>>765
色々とありがとうございます。
何か聞いてばかりで申し訳ない。はやく教える立場になりたいものです。
がんばって作ってみます。行き詰まったらまた来るかも・・・orz
>>801
まぁ、そう気負うな。
質問です。
double [][] a=new double[10][10];
a[0][0]=1.0;a[0][1]=2.0;a[0][2]=4.0;a[0][3]=5.0;a[0][4]=6.0;
のような2次元配列を引数にとるメソッドがあったとします。
void P(double[][] a)
{
}

そのメソッドの中で
a[0][0]=0.0;a[0][1]=0.0;a[0][2]=1.0;a[0][3]=2.0;
のようにaの参照する値を変える操作が行われてるとします。


Pという操作を行ってた後にもう一度、
a[0][0]=1.0;a[0][1]=2.0;a[0][2]=4.0;a[0][3]=5.0;a[0][4]=6.0;
の配列を使いたいのですが、どうしてもメソッドを使うとメソッドから出た後も
a[0][0]=0.0;a[0][1]=0.0;a[0][2]=1.0;a[0][3]=2.0;
になってしまっています。ものすごく容量が大きい配列なので、同じ配列を2つ作る
やり方以外で解決方法はないでしょうか?修飾詞をつけるなどの方法でうまくいけば
ありがたいのですが‥

804デフォルトの名無しさん:04/08/01 10:58
すいません
あの、JavaでのHTTPS通信の方法(どのようにAPIを使っていくのか?)を簡単に教えていただけないでしょうか?

よろしくお願いいたします。
配列を書き換えるアルゴリズムを使わない。

メソッドを出た後に変数が元の値に戻っているのは、メソッドに入る時に
変数の複製を作ってスタックなんかに積んでいたのを再取得しているから
そうなるわけで、つまり同じ配列を2つ作るのと同じ事をしているわけだ。
それはC言語などでも同じ。
ちなみにJavaでは配列やクラスを渡す時には参照を渡すから、複製を作らない。
806デフォルトの名無しさん:04/08/01 11:16
>>803
配列はデフォルトで参照渡しだから、普通にそれできるはずなんだけど?
たとえば、これは期待道りの結果になるよ。
public class Hoge {
  public static void main(String[] args){
    Hoge hoge = new Hoge();
    hoge.dose();
  }
  void dose(){
    double[][] a = new double[3][3];
    display(a);
    P(a);
    display(a);
  }
  void P(double[][] a){
    a[0][0] = 1.0; a[0][1] = 2.0; a[0][2] = 3.0;
    a[1][0] = 4.0; a[1][1] = 5.0; a[1][2] = 6.0;
    a[2][0] = 7.0; a[2][1] = 7.0; a[2][2] = 8.0;
  }
  void display(double[][] a){
    for(int i = 0; i < a.length; i++){
      double[] d = a[i];
      for(int j = 0; j < d.length; j++)
        System.out.print(" " + d[j]);
      System.out.println("");
    }
    System.out.println("");
  }
}
807806:04/08/01 11:22
あ、そういう意味じゃないのか。
>>803
要は変更前と後の両方の値を使いたいということ?
それは配列を二つ用意しないと無理だ。
>>803
> ものすごく容量が大きい配列なので、同じ配列を2つ作る
> やり方以外で解決方法はないでしょうか?修飾詞をつけるなどの方法でうまくいけば
> ありがたいのですが‥
無理。処理の順番を変えるか同じサイズの配列を2つ作るかの二択。
退避作業を手で書こうが言語やAPIが補助してくれようが、
メソッドが処理してる最中に、
元の内容はどこかに記憶させておかなきゃいけないんだから、
その分のメモリを喰うのは必然。
810803:04/08/01 12:00
>>806
メソッドの中で書き換えられた配列は2度と使いません。
メソッドに引数として渡した後に、その後渡す前(書き換えられる前)の配列を使いたいのです。
> メソッドの中で書き換えられた配列は2度と使いません。

「メソッドの中で書き換えられた配列」は2度と使いません。
「メソッドの中で」書き換えられた配列は2度と使いません。

今回の場合は後者だろうが、
もうちょっと読み手に優しい文章を書いてくれ。
> メソッドに引数として渡した後に、その後渡す前(書き換えられる前)の配列を使いたいのです。

ちなみに、このメソッドってのも P なのか P じゃないのか良くわからん。
P なら、書き換えられる前の配列を使えば良いだけだし。
P じゃなくても、P を呼ぶ前で書き換えられる前の配列を使えば良いだけだし。
P で書き換えられた配列と、Pで書き換えられる前の配列が両方必要なら、絶対に配列 2つ必要になるし。
Javaの話じゃねーよな。
「方眼紙で値を書き換えながら計算します。
 計算後、書き換える前の状態のものを使うにはどうしたらいいですか?」
質問自体がナンセンス。
>>808, 809 がすでに答えを教えてくれているのだから、あとは自分で考えろ。
Pぐらいのメソッドなら、書き換える個所のみ
書き換える前の値を保存しておいて、メソッドの最後で書き戻してもいいだろうけど。
>>765
できました。結局setLayout(null)+setBoundsでやりました。
これが一番簡単ですね。
天気がいいので質問させてもらいます。

String str = toString("str");

String toString(Object obj) {
return obj.toString();
return obj + "";
return (String) obj;
}
どれが早いんですか?真中はなさそうなのわかるんですが
教えてください、気になって鼻血出そうです。
自分で測ってみれば。
>>816
言語仕様は ** した方が実行速度が速くなければならない、
なんて規定はしてないから変態的な実装されてて真ん中が一番速くても全く問題ない。

一般論で言えば速度は環境(ハード、OS、コンパイラ、VM、それらのオプション)依存なので、
それらを特定しないと速度測っても無意味。
>817それもそうですね
天気がいいので鼻血出る前にやってみました

to: 26614201count/10sec
append: 228177count/10sec
cast: 29683425count/10sec

cast: 20msec/100,000count
append: 4227msec/100,000count
to: 20msec/100,000count

10万回やったぐらいじゃわっかんないね。
いやーしかしやってみるもんだね、10秒まわせば大差ですわ
>818
もっと早く言ってよ!!!やっちゃったよ
それよりもなんで早いの!??
なんで(String)のほうが早いの?
toString()のほうが安全そうなのに!
>>821
HotSpot の影響あるから順番変えたら
(String)の方がtoString()より遅くなるかもしんない。
遅くならないかもしれないけど。
連投すいません、気になる!あっさりとした疑問だったのにすっごい深みにはめられた
>818
もしキャストってのはその環境依存よりです?
あーーだめだ何聞いていいのかわかんねーすよ
キャストの仕組み想像できねーー!鼻血出してきます。荒らしてすいませんです
ダウンキャストするだけだと型は String になっても
オブジェクトは String にならんよ。

よって、コンパイルエラーはでないけどランタイムエラーが出る。
つまり、obj が String かそのサブクラスのインスタンスでなかった場合は
return (String) obj; で ClassCastException が発生する。
>>810
なんで、配列をPに渡しているの?
なんか、二度と使わないデータを、Pの呼び出し元に返している意味がわからない。
/** 新しい配列の値と古い配列の値を両方取り出せるクラス */
public class D2DoubleArrayWrapper {
 public static ORIGINAL = 0;
 public static NEW = 1;
 private final double[][] original;
 private final Map newValueMap = new HashMap();
 public D2DoubleArrayWrapper(double[] originalArray) {
  this.original = originalArray;
 }
 public set(int i1, int i2, double value) {
  String key = "" + i1 + "," + i2;
  newValueMap.put(key, new Double(value));
 }
 public double get(int i1, int i2) {
  return this.get(i1, i2, D2DoubleArrayWrapper.NEW);
 }
 public double get(int i1, int i2 int newOrOriginal) {
  switch (newOrOriginal) {
   case D2DoubleArrayWrapper.ORIGINAL:
    return original[i1][i2];
    break;
   case D2DoubleArrayWrapper.NEW:
    String key = "" + i1 + "," + i2;
    Double d = (Double)newValueMap.get(key);
    return (d == null ? original[i1][i2] : d.doubleValue());
   default:
    throw new IllegalArgumentException("NEWかORIGINAL使えボケ");
  }
 }
}
>>823
インスタンスが持つ情報には、それが持つフィールド値のほかに、
どのクラスのインスタンスであるかの情報も含まれる。
イメージ的には if (obj.classid == String.class.classid) return obj; みたいな処理一発で済んでいる。
(classid はオレが VM を作るとして内部的にこっそり作るであろうフィールド)
obj が String のサブクラスであればも少しややこしいが、String は final だしまぁとにかくこれ以上は何もしていない。
toString() はメソッドを呼ぶ作業になるので、スタックを扱う処理の分手間がかかる。
クラス情報のテーブルからメソッドへのポインタを探し出すとかもあるだろうし、ちょっと時間がかかるのだろう。
でももちろんこの辺は全部 VM の実装によりけり。

1) VM の実装について勉強するか、
2) C で無理矢理 OOP 的プログラミングをするか、
3) C++ コンパイラが吐き出したコードをアセンブラで覗き見するとかすれば理解できるだろう。
(おれは 2) と 3) だけやった経緯がある)
うわーそれもむずかしそーとか思ったら、鼻血出す前に今回のことは一旦忘れてしまえ。
コーディング能力がないうちに知識だけ身に付けてもしょうがないから。
828826:04/08/01 16:57
>>803
マジレスすると、>>826のようなクラスを作って、
D2DoubleArrayWrapper array = new D2DoubleArrayWrapper(doubleArray);
array.set(1, 2, 5.5); //更新
double newValue = arary.get(1, 2); //新しい値
double oldValue = array.get(1, 2, D2DoubleArrayWrapper.ORIGINAL); //古い値

なんてことはできる。

元の配列が途方も無く大きくて、変更箇所が少ないならちょっとは意味があるかも。
配列2つ作った方が素直で、パフォーマンスもずっといいから、
その配列は本当に「途方も無く」大きいのか、
変更箇所はそれと比べて「圧倒的に」少ないのか
をよく検討方がいい。
配列のサイズが10万超えてて、変更箇所が10箇所ぐらいならちょっとは意味あるかも。測ってないけど。

ちなみに大き目の訂正↓
public static final int ORIGINAL = 0;
public static final int NEW = 1;
829デフォルトの名無しさん:04/08/01 18:29
度々すいません。>>670です。
コードが長々してきたので、こんなコードにしてみたのですが
エラーがでます。なにやら「||演算子は使えない」らしいです。
上げてしまったorz

public void actionPerformed(ActionEvent e)
{
if(e.getSource() == (zero || one || two || three || four || five ||
six || seven || eight || nine)){
hoge((e.getSource()).getLabel());
}
}
public void hoge(String str)
{
product = product * 10 + Double.parseDouble(str);
label.setText(String.valueOf(product));
}
>>830
|| の左右のオペランドは論理型(boolean)じゃないとダメなんだけど。
>>830
e.getSource() == zero ||
e.getSource() == one ||


こ、これの繰り返しに。。。。
833デフォルトの名無しさん:04/08/01 19:32
すいません。
同じURLを指定しても、インターネットエクスプローラだと
正常に移動できるのに、URL#openConnection()で接続すると
違うURLの入ったURLConnectionオブジェクトが返されてしまう事が
あります。
openConnection()で違うアドレスに飛ばされないようにするには
どうしたらよいのでしょうか?
openConnection()に何か条件をつける方法ってないのでしょうか?
お返事頂いといてすいませんです。没頭しすぎました。
手元にこの内容だけで14個のクラスができちゃってます。

>822
引き渡す量かえてみたり、渡す前にgc()乱れうちしてみたりとかvm古いの入れたり色々したんですが大きな変化なしでした。
仰る通りまわす順番かえるのが一番差が出ませんでした。ですが順位は変動なしでした

>824
はい先ほど身をもって経験させてもらいました。

>827
勉強なります。その説明が一番しっくりきました。
とにかく1日足らずで理解できるような領域じゃありませんでした。
asmだmovだedxだecxじゃなくeaxとか言われても、これが深い意味あるのかスペリングの話なのかわかりませんでした。

ここら変のフレーズがわかるようになってからリベンジかまそうと思います。
これ以上は冗談抜きで鼻血出てきます。お騒がせしてすいませんでした。
>>831-832
言ってることがわからないんですけど・・・
まさか突込みどころ満載のコードに!?
数値部をコンパクトにしたかったのに。
836835:04/08/01 19:54
(e.getSource() == zero) || (e.getSource() == one) || ....
(e.getSource() == eight) || (e.getSource() == nine)
ってことか。あぁ。ありえないですね。

>>836
普通は Set なり List なりに zero から nine まで全部つっこんで、
if(set.contains(e.getSource())){ .... }
8382問め(注:半端):04/08/01 20:10
>>836
数字ボタンには数字用の ActionListener、
演算ボタンには演算用の ActionListener を登録する、
とかでもいいんだよ

ちなみに、もし swing が使えるんだったら
数字Action 演算Action を作る感じだともっとスマートになるかも
別スレの名前が出ちゃった(恥
SWTとかじゃなくSwingだったら数字のボタンとかでクラスを作って
instanceofで調べる手も・・・。
>>840
それやるなら
class MyButton extends JButton{
 String number;
 public void toString(){ return number;}
}
みたいなクラス作った方が。
あ、おなじことやな。
class NumberButton extends JButton{ int number;}

class OperatorButton extends JButton{}
をつくるわけか。
>>837-842
ごめんなさい。swing使えない。
ありえない方法で無理やりコンパクトにしました。
if(set.contains(e.getSource())){ .... }
これ試してみます。
>>843
SwingじゃなくてもAWTでも同じなんだけど。
845デフォルトの名無しさん:04/08/01 21:22

Object[] objs = {zero, one, two, ・・・ };
List list = Arrays.asList(objs);

if(list.contains(e.getSource())) {


}
>>615
<jsp:include/>

<%!
private void doYourFunction(Unko unko){
//unko
}
%>

<jsp:usrBean/>

Apache Struts

Jakarta Turbine

JavaServerFaces
>>625
> >>623
> 気に入らないというかなんというか・・・
> 「そんなんだったらCGIで済ましとけ」って感じだよな
で、CGIServletで済ましておけと
>>728
> JAVAは、簡単に逆コンパイルされるってのが痛いよね・・・
> 市販のソフト開発でJAVA使うのは、いろいろ問題ない?
JETコンパイラとか暗号化とかいくらでもあるだろが。
逆コンパイルしにくくするツール、解析しにくくするツールとか使え。

昔あったCrema爆弾を使え。
クレマが使われたJavaバイトコードは、ある逆コンパイラで起動しようとするとシステムがクラッシュするという
恐ろしい逆コンパイル対抗ツールらしい。

それと、サーバ上のみで動かすなら逆コンパイルしようがない。
849デフォルトの名無しさん:04/08/01 22:49
>>738
>
> そして、sunはその暗号化の仕様をガッチリ固めて公開。
> 暗号化された物も簡単に解読できる罠に陥る予感。

おまいは暗号化の仕組みをしらないだろ。
RSA暗号の解読はそう容易ではないぞ。
かなり高性能のマシンを大量に用意しないことには。

20桁の数を素因数分解するのにどれだけ時間がかかると思っているんだ?
>>755
固めたいjarファイルの中にjava3d.jarを突っ込んでマニフェストにパスを記述するだけで
ええかと思ったが。できればjnlpファイルもおいておくといいぞ。
JavaWebStartでサーファーにJavaPluginを簡単にダウンロードさせることができる。
なぜか必死に亀レス
>>849
そこでP2Pですよ。
853828:04/08/01 23:53
>>803
書き忘れたけど、仮に配列の要素数が10万だったとして、
たかが800Kbyteのメモリを節約しただけでどれほど幸せになれるかを
まず考えた方がいい。
すいません
一つだけ簡単な質問
JavaってHTTPS通信ってできますか?
>>854
できます。
856854:04/08/02 00:13
>>855
即答ありがとうございます。
後は自分で調べます。
857デフォルトの名無しさん:04/08/02 08:39
愛しのおまいら、おはようございます。起き抜け一発の質問
ですがおながいしまつ。以下、Java Applet の骨格部分ですが

 public void init() {
  t = new Thread(this);
 }
 public void start() {
  if(t!=null) t.start();
 }
 public void run() {
  while(true) {
   ※メイン処理ループ
  }
 }
 public void stop() {
  t = null ;
 }
 public void destory() {
 }

といった感じでスレッドを生成して回しています。
(つづく)
858857:04/08/02 08:40
(857の続き) 上記の状態で、
ブラウザのページを移動したり appletviewer を最小化
したりして stop() が呼び出された後、ブラウザのページ
を戻したり appletviewer を元に戻したりした時に、再度
start() が呼ばれた時スレッドの run() に制御が移らない
ようなのですが、再度 run() に制御を移すにはどうすれば
よいでそうか。

もしくは、stop() が呼び出された時に、全てのオブジェクト
(変数やイメージ、サウンドなど)を明示的に破棄して、アプ
レットが全く読み込まれていない状態にしてから再度プロ
グラムの頭から処理をやり直す(あるいはロードしなおす)
事ってできますか?

ゲームの途中で中断(stop)された時に、その状態から再開
させるか、まるっきり最初から開始させるかのいずれかを
確実にやりたいのです。よろしくおながいします。

ちなみに、細かい設定などはすでに完了していて、コンパイラ
通してもエラーは出ませんし、中断しなければきちんと run()
内の処理はループされます。
859857:04/08/02 08:47
857です、すいません自己解決しました。
 public void init() {
//  t = new Thread(this);
 }
 public void start() {
  //if(t!=null) t.start();
  t = new Thread(this);
  t.start();
 }
これでいけた風味です。お騒がせしました。
860デフォルトの名無しさん:04/08/02 09:55
WindowsLookAndFeelを使ったら、テキストフィールドにsetEditable(false)を適用しても背景色が変わらないんですね…。
バージョンを1.5にする前は、そんなことなかったのですが…。
なにか対処法があれば教えていただけますか?

setBackgroundを使えばムリヤリできますが、毎回指定してたら数が多いので作りにくいんです。
あるクラスの中で、特定のメソッドでしかアクセスできない変数をつくるにはどうすればいいですか?
>>861
そんなことできない
>>860
ファクトリメソッドを作るか、継承してコンストラクタで背景決める。
前者がいいんかな。
>>850
>固めたいjarファイルの中にjava3d.jarを突っ込んでマニフェストにパスを記述するだけで
ええかと思ったが。

さんざん既出な話ではあるけれど、
それでは残念ながら、かなりイレギュラーな手段をつかわなければ
java3d.jarの中のクラスを読み込めないので、
JavaWebStartで、java3d.jarファイルをダウンロードしてもらうのが簡単な手かもしれない。
>>861
そのメソッドに外から変数を与えるか、
そのメソッドをそのクラスから分離して、
そのメソッドと変数のみをメンバに持つ新しいクラスを作るとか
>860
ドキュメント見る限り、setBackground() をするのが綺麗な解法みたいだから
おすすめは >863 の提案した方法。

もしくは setEnabled(false) を試してみて。
# やった事ないけど。笑い
867860:04/08/02 11:38
>>863
>>866
アドバイスありがとうございました。参考になりました。
ちなみにsetEnabled(false)も試したのですが、残念ながら変わりませんでした。。
868デフォルトの名無しさん:04/08/02 12:04
JAVAゲームが凄く重いですという質問はここでいいんでしょーか
それは質問ではなく報告です
もしくは感想。
Beanてなに?という質問はここでいいんでしょーか
>>824
>つまり、obj が String かそのサブクラスのインスタンスでなかった場合は
                  ~~~~~~~~~~~~~~~~~~~~~~~~
public final class String extends...
    ~~~~
アハハハ
>>871
いいよ。端的な回答で理解するのは無理だろうけど
Beanてなに?
お豆さんだ
>>868
最新のJavaをいれよう
それでもダメならマシンを買いかえよう
>>868
ほとんどの場合Javaが原因じゃないな
ネイティブでも重いアプリは多い

具体的なソフト名だしてもらわんとなんとも
>>875
ある条件を満たしたクラス定義のこと
その条件は「ソフトウェアコンポーネントを設計しよう」という構想に基づく
具体的な条件は引数なしのpublicコンストラクタ、命名規則にのっとった getter/setter メソッド
また、setter で値が変わったときにイベント発生させる だからもちろん Listener 登録も可能にする
などなど

これだけじゃわかんねぇよな
ユーザが bean な GUI を操作するイベントが発生する自作 Listener に伝播する
その Listener がデータ格納用の bean をいじる(データ用bean 自身が Listener でもいい)イベントが発生する別の自作 Listener に伝播する
その Listener が 別の bean な GUI をいじる表示内容が変化する
という感じでソフトウェアが動くようになる
うまくやればロジック部分 (Listener んとこ) は getter と setter を結びつけるだけになるので組みやすい

以上、聞きかじりで裏づけの全く無い危険度の高い説明でした
JAVA UZEEEE!!!!!!!!
初心者でも解り易い設計にしろYO
オバーフローすんだろHAGE!!
<identifier>がありません。
deck = new Card[52];
^
ってエラーがでるんですけど。なにが問題なのでしょう。
クラス配列やりたいんですけど。おながいします。
^の位置がずれたYO!
=のところね。ゴメソ
それはインスタンスフィールドか? 型指定抜けてないか?
Card[] deck = new Card[52];
とかしないとあかん。
>>883
Card decd[];
deck = new Card[52];
って風にしてるYO!
>>883
そのとおりにしたら出来た。
やさしいJavaでは上のようにしろって書いてあったのに・・・
>>884
それはローカル変数のときでしょう。
メソッド外では >>883 の書き方しかできない。

それと、もしメソッド内に書いてるつもりだったら、

class Hoge {
 public void hoge() {
  Card[] deck;
  //なんやらかんやら
  if ( なんやかや ) x = 1; //★ここで { 使ってないのに
  } //ここで } 書くと、対応がおかしくなってメソッド閉じとして解釈される

  deck = new Card[52]; //ローカル変数への代入ではなくメソッド外の変な文として解釈される
 } //クラス閉じになる
} //余計な } になる

こういうことになってないか?
>>885
参照する本が悪い。
888デフォルトの名無しさん:04/08/02 18:43
質問したいのですが
440000より大きい最小の素数を計算して求めるようなプログラムをJava言語で
作りたいのですが
public class c {
public static void main( String[ ] args ) {

outer; for( int i=440000; i=i+1; i++ )
inner: for( int j=2; j<=i-1; j++ ) {

if( i % j ==0 ) {
continue outer;
}
}
System.out.println( i + "is prime" );
}
}
というプログラムではできません、どうしたらいいでしょうか?
どなたか教えてください
大事なとこから
1) outer ラベルのとこがおかしい
2) i の for の繰返し条件(終了条件)がおかしい
3) i の宣言位置がおかしい
4) クラス名は大文字からにしようや
5) レスで崩れてるのかもしれないけど インデントちゃんとつけてる?
6) ラベルはラベルのみで一行の方がいいんじゃないのかな見やすくて
7) つーかラベルはできれば使わない方がいい
あ、もいっこあった
1.5) i の for のあとの { がどうしても要ると思うがどうかね
>>888
っていうか、マルチやめろ
892デフォルトの名無しさん:04/08/02 18:56
>>889-890
ありがとうございます
しかし私は昨日初めてJavaをやったのでまだ専門用語とかがよくわかりません
インデントってなんですか?
>>886
クラス変数です
>>887
僕も思いました。
894デフォルトの名無しさん:04/08/02 19:06
システムプロパティをJSPで作った画面に反映させたいのですがどうしたらよいのでしょう。
感覚的に
<%@ page contentType="text/html;charset=Shift_JIS" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>サンプル</title>
</head>
<body>
<center>
<%
// 現在のシステムプロパティのリスト取得します
Properties props = System.getProperties();
// システムプロパティをすべて表示します
props.list(System.out);
%>
</center>
</form>
</body>
</html>
感じかなとオモタのですが・・・全然違うみたいです。Javaもよくわかっていないところもありまして

よろしくお願いします
>>892
インデントされてる例 >>857 >>859 >>886
(ただし 2ch における見た目だけの話。
 半角空白のままレスすると詰まってしまうので、わざと全角でやってる。
 実際に全角でインデントかけるとコンパイルが通らない)
896デフォルトの名無しさん:04/08/02 19:10
>>895
丁寧にありがとうございました
897デフォルトの名無しさん:04/08/02 19:12
追伸です。
最終的には他のサーバーのシステムプロパティの書き換えです。
まずは自分のjavaのシステムプロパティをJSPから見られるようにし、それから
他のサーバーにアクセスするといった感じでいこうと思っています。

>>894
>Javaもよくわかっていないところもありまして
自覚してる分だけはきだめに鶴だな。できれば触りたくないけど。

System.out はプログラムが稼動するマシン(JSP を置いたサーバ)の標準出力。
そこに出力されたってクライアントから見えるわけがない。
表示したかったら <%= %> か何かを使わなきゃいけないし、Properties の中から値を手作業で取り出すことも必要。
keys を Enumeration 変数にとって hasMoreElements を条件にして for をまわして、
for の中で %><%=props.getProperty(key)%><% とか汚いことをするか
StringBuffer かなんかにとって最後に <%=buffer.toString()%> にするとかまぁなんだそういう感じだよ。

>>897
>自分のjava
自分って何のこと? JSP が動いてるサーバのこと?
>他のサーバーのシステムプロパティの書き換えです。
できません。できるとすれば自サーバの値書き換えをする JSP か何かを作って、他からアクセスさせることだけ。
あ、自分で PrintStream か何か用意して中から文字列取り出せばいいのか。
もっと難しいかもしれないけど。
900デフォルトの名無しさん:04/08/02 19:53
>>898
基本的な事は大体わかっているつもりなんですが・・・
ありがとうございました。なんとか自分でやってみます
>>884
decdとdeckが違うというオチ
>>901
そこ突っ込むなYO!
903デフォルトの名無しさん:04/08/02 21:45
java.io.IOException: HTTPS hostname wrong: should be <2chv.tora3.net>
上記のエラーが出るのですが、
どういうえらーなのかわかりますか?
904デフォルトの名無しさん:04/08/02 21:59
>>894
PrintStream out = response.getOutputStream();
props.list(out);

PrintWriter writer = response.gtWriter();
props.list(writer);

こんな感じ?
>>903
ホストネームが間違えている
906デフォルトの名無しさん:04/08/02 22:16
JTabbedPaneでレイアウトポリシーをJTabbedPane.SCROLL_TAB_LAYOUTにしたとき、
タブ上でポップアップメニューを出したいんですけど、無理ですかね?
907デフォルトの名無しさん:04/08/03 00:04
drawstringやdrawimageでmainにいろいろ描いてるんですが、
main全体のイメージを得るにはどうしたらいいですか?
main.getImage();
909907:04/08/03 00:49
解決しました
>>908サンクス
全然違ったけどねw
910デフォルトの名無しさん:04/08/03 01:03
Comboボックスからの選択と、画像表示、音声表示などの関連付けがいまいち理解できないのですが
分かりやすく解説されてあるサイトなどはないでしょうか?
911908:04/08/03 01:26
>>909
あれで当たってるほうがおかしいw
>>910
あなたが関係ないと思っている基礎の部分がそれです。
>>910
>Comboボックスからの選択と、画像表示、音声表示などの関連付けがいまいち理解できないのですが

途中を飛ばしてたらそりゃ理解できないだろうなあ。
プログラミングは少しずつの処理の積み重ねなんだから
一発でできると思う方がどうかしてる。
>>903
HttpsURLConnection.setHostnameVerifier()
>>911
つか答えられるほうがおかしいというのが正解だな
916デフォルトの名無しさん:04/08/03 11:21
継承の利点が書かれているおすすめのサイトを教えてください。
どうしても使う意味がわかりません。
俺を納得させてくれるだけの説明がほしい。
>>916
GUI はちらっとでもやりましたか。やってないだろうなぁ・・・たぶん
ボタン、テキストフィールド、コンボボックス、リスト、チェックボタン、いろいろありますな。
Java では Component といいます。言語や環境によってはコントロールとかウィジットとかいいますな。
さらにこれらを配置するためのコンポーネントというのがあって、Container といいます。

さて、Container 上に Conmponent を追加するには add メソッドを使います。
add メソッドの中では、親子関係(親=Container, 子=Component)を作るために、
Component の setParent メソッドを呼んだり、
ルールに従って配置位置を決めるのに setSize やら setLocation やらを使います。
(ほんとはだいぶ違うけど、ま、説明としてそういうことにして下さい)
ルールというのは縦に同じ大きさで並べるとか、横に適度な大きさで並べるとか。このへんはまぁ Java 特有ではありますが。

コンポーネント群が全部、継承関係のないバラバラな構成だったらどうでしょう。
public void add(Button button) { // Container のメソッド
 button.setParent(this); //button に対して親が自分であると記憶させる
 button.setLocation(x, y); //前回 add した奴のすぐ右とかそういう感じ
 button.setSize(button.getPreferredSize()); // button 自身が主張する「丁度いい大きさ」に従って配置するとかそういう感じ
}
これとほとんどあるいは全く同じ処理を、
コンポーネントの種類ごとにいちいち書かなきゃいけないわけですな。あほくさいと思いませんか。
コンポーネントなんて何十種類もあるわけです。
プログラマがそれぞれ自作したら、いくらあるか検討もつかない。
それぞれのコンポーネントごとにメソッド作るんでしょうか。大変ですな。
しかしコンポーネントは必ず Component の継承クラスでなければならない、というルールを作れば、
上記のメソッド、Component を引数としたものだけを用意すれば事足りるでしょう。
jspで配列の要素を一覧できる関数みたいなものはないでしょうか?
phpでいうprint_r()みたいなやつです。

あと、そういう関数の一覧が載っているサイトがあれば教えてください。
wikiを見てもよくわからなかったのでお願いします。
>>919
JSTLのCoreのforEach使え
>>920
>>921
即レスありがとうございましす。
参考になりました。
923922:04/08/03 15:47
ましす ×
ました ○
javacって末尾再帰の最適化ってやってくれるんですか?
926916:04/08/03 17:08
>>917-918
丁寧にありがとうございます。

レス返そうと思っていろいろ書いているうちに、何がわからないのかわかった。
「クラスの括り方のコツがわからなかった」
だから継承する意味が理解できなかったのかも。
もうちょっと、うろうろしてきます。
927初期不良:04/08/03 22:16
くくり方考えるならインターフェイスの概念の方がはっきりしていていい気がましす
928デフォルトの名無しさん:04/08/03 22:51
例外の表示内容についてなんですけど、
Uncaught exception java/lang/IllegalArgumentException
at RELTest.run(+1396)
at RevoCanvas.gameRun(+253)
at RevoCanvas.run(+18)
こんな感じで出力されるんですが、
at メソッド名 (+????)
この????の数値って何を表しているんですか?
行番号かと思ってその行見てみたんですけど、全然違うところ指してるようでした。
また、エラー行を特定したい場合は、コンパイル時に-gを付けてデバック情報出力しないと無理でしょうか?
929デフォルトの名無しさん:04/08/03 22:53
Canvasでゲーム作ってるのか・・・
点数だよ。
さすがに高得点だね。
931デフォルトの名無しさん:04/08/04 06:43
>>929
え?普通はちがうのか
ふつうはJTextAreaで等幅フォントにして、AAを動かします。
普通はゲームならBufferStrategy を使います
えーとこれは携帯じゃないかと思うんですね
元の質問には答えられませんが
VolatilImageじゃないんか
ベクタ画像系のエディタ作るのにいいライブラリってあります?
今まで自分で作ってたしこれからも自分で作ってもいいんですけど
なんかあるなら利用しようカナーという
ゲーム作るならAppletだろっ!
OGNL
ttp://www.ognl.org/

こいつのごくシンプルなサンプルコードとか無いっすかね?
Webのフレームワークとかと組み合わされたりしてることが多くて、
OGNL自体をシンプルに使うきっかけがつかめない。
何がやりたいかっつーと、
OGNL形式の記述をJavaプログラムで読み込んで、記述内容に基づいた
出力がしたい。
Java上で以下のような構造体を使いたいんですが、

ラベル 変数サイズ

FLAG 1バイト
HP: 2バイト
MP :2バイト
キャラ移動ルーチン: ルーチンアドレス
・・・・

やっぱり、バイトサイズの配列を作って、
HPを取り出すときは short型の変数に 「1バイト目*256 + 2バイト目」のようにして取り出し、
キャラ移動ルーチンは、ルーチンアドレスを保存するのではなくて、各移動ルーチンに0から番号を振って
それを格納するようにして、
移動ルーチンを集めたルーチンを一つ作ってそこへ各ルーチンの番号をもっていってその中で分岐して
移動ルーチンを1つ選択する、
という方法しかないんでしょうか?

携帯用ゲームを作っているので、クラスを作らず上のようなことをしたいんですが。
なんか他にもっといい方法ご存知のかた、教えてくださいませんか?


方法、ってどういうレベルで聞いてるのか分からないなぁ
クラス(インスタンス)を作らない、って決めたら、
そりゃ何をどうやったって、データの実質量として同じ分だけのメモリを喰うだろうよ。
あとは圧縮・展開をその都度やるとかだけど、実行速度から言ってナンセンスだろうし。
だからそう決めたんならそう設計すればいいんじゃないの?

ただし他の部分の設計のしやすさからいって、
必要な期間だけそのキャラクターのインスタンスかのように振舞うクラスを作っておくべきだろうとは思うけど。
setData(byte[]) したら、値を解釈して内部のフィールドに x = ((int)data[0])*256 + data[1] みたいにして移して、
別のを setData するまで getX() が return x; するような。
ま、クラス作らず、ごてごてとクラスがやってた処理を手書きした方が、クラス作らない場合よりも容量食うけどね。

ルーチンとか言ってるし、結局「オブジェクト指向がわからない」からクラスを「使えない」のを、「携帯」だからクラスが「使えない」ことにしてるだけに見える。
×クラス作らない場合よりも
○クラス作る場合よりも
944941:04/08/04 19:14
あぁそうね。コード量はかなり喰うね。
俺が提示したようなことするんなら結局クラス・インスタンスでやった方がいいのかな
インスタンスの食うメモリなんて、メディアのリソースに比べれば取るに足りんし。
姑息な手段使うより、画面内の画像1まい減らしたほうがよっぽど効果的。
946940:04/08/04 19:45
なるほど。本で言ってた「携帯では実行ファイルサイズや処理速度といった大きな制限があり、
作るクラスは2つのみ」というのを鵜呑みにしてました。
「クラスがやってた処理を手書きした方が、容量食う」というのは目からウロコでした。
簡単なテスト用で、「クラスを作る」「クラスを作らず、バイト形の配列を使う」の両方をやってみます。
945さんの言われたのも試してみます。

941さんの提示された方法とは、作った「バイトが他の配列」の変数を取り出していろいろ処理する側は、
処理が終わるまでインスタンスを使ったほうがやりやすい、ということでしょうか。
そうでしたら参考になりました。

プログラムを作ることを急ぎすぎてたみたいです。クラスを作ったりすることを、本を鵜呑みにせず
自分でやって試してみます。
どうもありがとうございました!





>>938
そういう質問はこのスレに向かないから、該当スレへ。
>>946
> 本で言ってた「携帯では実行ファイルサイズや処理速度といった大きな制限があり、
> 作るクラスは2つのみ」というのを

その本古すぎ。
いつの話やねん、と。
素人が練習プログラム作るのにはクラスの数なんか関係ない。
949デフォルトの名無しさん:04/08/04 21:04
strutsを使用しないで、commonsのvalidatorを使用したいのですが、
詳しい説明などがのっているサイトをご存知の方いらっしゃいますか?
よければ、URLを教えてください。
950デフォルトの名無しさん:04/08/04 21:15
初心者です。教えてください。
SwingでJdesktopPaneのフレームにJmenuでメニューを
表示させるところまではできたのですが、
メニュークリック時に、動作させるために
item1.addActionListener(this);
と記述すると、
>DesktopTest.java:166: javax.swing.AbstractButton の
>addActionListener(java.awt.event.ActionListener) は
>(DesktopTest) に適用できません。
とエラーが出てしまいます。
どうすれば、良いでしょうか?

もしかして、フレーム上にメニューでメソッドを実行するのは
不可能なのでしょうか?
教えてください>エロイ人
DesktopTest が ActionListener ではない
>>949
サイトは知らんけどJavaWorld2004年1月号
フォントってBOLDとITALICいう具合に組み合わせ可能じゃないですか。
そのときコードで、
int type = Font.PLAIN;
type = type | Font.BOLD;
type = type | Font.ITALIC;
という風に記述しますが、具体的な数値の動きが知りたいのです。
PLAIN=1,BOLD=2,ITALIC=4 みたいな感じでコントロールされて
いるのですか?
>>953
コントロールちう語の使いどころが納得いかんがそのとおり。
つーか出力してみればわかるやん?
>>954
ありがとうございます。
出力して確認という手段があったのに気づきませんでしたorz
早速出力して確認してみます。
ほんとの確認は各クラスのソース拾ってきて見ることだな。
同様のもので種類の多いのは int で収まらないので long 使ったりしてる。
実際の数値はAPIリファレンスにちゃんと
定義されているからそっちをみるほうが先。
いきなり出力したりソース見たら、どこまで
規格でどこから実装依存なのか把握できない。
質問内容は実際の数値じゃないけどな
959950:04/08/04 22:42
>951
イベントの実装って、そういう意味だったんですね。
ありがとうございました>エロイ人
現在いるディレクトリをStringで取得するにはどの命令を使えばいいでしょうか?
>>961
サンクス。何とかなりました
963デフォルトの名無しさん:04/08/05 01:02
C→Java とやってきて、C++を勉強しています。
Java と C++ の関係についてですが、
・Java のクラスメソッドは、すべて C++ でいうところの仮想関数
・Java のabstract メソッドは、C++ の純粋仮想関数
・すべてのメソッドが純粋仮想関数なのが、Java の interface
ということでよいでしょうか。
> ・Java のクラスメソッドは、すべて C++ でいうところの仮想関数
インスタンスメソッドの間違いじゃね?
あんまり厳密に関連付けて考えない方がいいよ。
混乱のもとだから。
>>963
C++を勉強してるならC++のスレで聞いた方が良いと思われ。
>>963
> ・すべてのメソッドが純粋仮想関数なのが、Java の interface

すべてのメソッドが純粋仮想関数なクラスは、すべてのメソッドがabstractなクラスです。
インタフェースはどっちかというとヘッダファイルだな。
クラス定義はヘッダにかくんでその言い方もちがうとおもうぞ

これがこれに厳密にあてはまるということはない
と考えた方がいいぞ

単純に置き換えが可能ならその言語の価値ってものはねぇ
インターフェイスは、すべてのメソッドがabstractなクラスのうち、多重継承が可能なもの、です。

って言語モデルの違いを無視した表面的な置き換えは混乱のもとになるかもしれないけど、最初のとりかかりとしては、やはり単純な置き換えからだろう。
いきなりモデルや思想の違いを考えても、耳学問になるだけだし。
で、違和感のある部分について言語モデルがどう違うか考えていくというのが、勉強しやすい流れかと。
【初心者】Java質問・相談スレ51【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1091666193/l50

次スレ立てた。
これからバイトに逝くのであと(wikiとか)は任せた。
>>971
*たぶん* wikiは何とかできた
>>971-972
974デフォルトの名無しさん:04/08/05 19:16
wikiの更新も自動化されればやりやすいのだが。

Antで自動化できんだろうか

HttpUnit使えってか?
975デフォルトの名無しさん:04/08/06 01:49
はじめまして。
InputStreamクラスの read() メソッドなのですが、
戻り値として0(zero)が返ってくるのはどういう意味
なのでしょうか?
読み込んだけどデータが無い? ん〜、分かりません・・・。
読み込むデータがなければブロッキングされるので、
そもそも処理が戻ってこないですし・・・。
ASCIIコードの '\0' が戻ってきたということなのでしょうか?
でも、この'\0'というのはどういうことなのか・・・。
宜しくお願い致します。
>>975
> 読み込むデータがなければブロッキングされるので、

この根拠のない自信はどこから湧いてくるんだ?
977975:04/08/06 02:07
>>976
JavaDoc から。

ちゅーか、そんな事聞いてね−よ、ドアホ。
>>975
読み込めるようになるまでブロックするというのはいいとして、
読み込むデータがあっても1バイトも読めなかったという可能性はあるわけだが。
読むのに失敗したではなく、読み出せなかった、だぞ。
0が返ってくることの何が疑問なのか、意味不明。
何もエラーが無かったらreturn 0;とかの0じゃないの・・・?
Reads the next byte of data from the input stream. The value byte is returned
as an int in the range 0 to 255. If no byte is available because the end of
the stream has been reached, the value -1 is returned. This method blocks
until input data is available, the end of the stream is detected, or an exception
is thrown.

0から255の範囲の数値が返されることに何の疑問があるんだ?
int read(byte[] b)

たしかに、このbの長さが0の時以外は0が返ることはないように読める、javadocの説明では。
>>982
ここではread()の戻り値がどうして0になるのか聞いてるらしいぞ。

 ByteArrayInputStream bais = new ByteArrayInputStream(new byte[]{0});
 System.out.println(bais.read());

ほんと、なにが不思議なんだか。
>>975-978 >>980 >>982
ぼんくら
ま、質問者のぼんくらさにミスリーディング誘われたってのもあるかもしれないが
clsなどのdos窓のコマンドを呼び出すにはどうしたらよいですか?
986985:04/08/06 12:25
というかdos窓をクリアできればええのです。教えてプリーズアゲ
DOS窓ってことはWin9x系?
エスケープシーケンスでも使えば?
988デフォルトの名無しさん:04/08/06 12:43
あ、なる
やっちみます
ああ、C言語で試しても動作しない・・・XPどえす。
Runtime.getRuntime().exec("cmd /k cls");
この手のやつも期待した動作しないし。
もしかして出来ないとか・・?
>>989 だからわざわざ9x系か?って聞いたのにな。
シェル自身の機能としてシェル自身のテキスト領域を消去する形になってるんだから、
エスケープシーケンスなどの、シェルと対話する方法を使わなければならない。
しかし w2k 系ではエスケープシーケンスは使えないらしい。
cls は cmd.exe 自身の持つ内部コマンドだから Runtime#exec の対象とはなりえない。
cmd /k cls は新たに起動した cmd に対して対話を行っているのでうまくいかない。
できないんじゃないのかなぁ。
そうか、どうもありがとう。。
Java cursesとかもあるけどね。
>>992
WindowsXP では ansi.sys だったかを使えばエスケープシーケンス使えるよ。
JAVAコンソールで無理やりへっぽこパックマソを
へらへらと書いて2ちゃんにソース貼り付けようと
たくらんでいただけの俺を許してください。

サードパーティ製のライブラリいれたりドライバ組み込んじゃうと
誰もが気軽にそのソースをコンパイルして試すってことができないので
当初の目的から離れてしまうのです。
ごめんなさいごめんぬるぽなさい。

ちなみに
定期的にコンソールをクリアして
別スレッドでキー入力をひろって処理することで
ゲームループを実現しよぬるぽうとしていますた。
簡単に画面消去できないとなるとあきらめるっぽ。
>>995
ansi.sysがDOSのデバイスドライバってのはOK?
http://support.microsoft.com/default.aspx?scid=kb;EN-US;100394
この辺の事情はXPでも変ってなかったはず。
>>996
それ、今回の質問が解決したとしても、次には
「コンソールから一文字ずつキー入力を検出するには
どうしたらいいんですか?」という新たな質問が
生まれそうだ。
コンソールってかdos窓で動作する標準のJAVAアプリケーションね。。
まぎらわしくてすんまそ。ごきげんよぅ。ノシ
>>998
そうねそうね。多分そうねって1000?うほっ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。