【初心者】Java質問・相談スレッド62【大歓迎】
2 :
古代帝國富士皇朝総帥・伯壬旭 :05/02/14 23:15:27
よくぞ次スレを立てた。褒めてつかわす。 さあ、皆の者質問するがいい!!!
3 :
これも追加しといて〜 :05/02/14 23:18:20
そこへ「WSH使うと(・∀・)イイ!!」とか混ぜっ返して混乱させてみるw いや、バッチファイルだとjavaw使ってもプログラム実行中 DOS窓出っぱなしなのが漏れ的にはイヤソなので。 ちなみに > type hoge.vbs Dim shell Set shell = WScript.CreateObject("WScript.Shell") shell.Run "javaw -jar hoge.jar", 0, False でhoge.jar起動。
>>3 d)をちょっと変えて、
%windir%\system32\javaw.exe -cp hoge.jar MainClass
というショートカットを作り、作業フォルダを空にして、hoge.jarと同じ場所に置けば、
manifestファイル不要。アイコン設定可能。
98系はどうなるか知らん。
6 :
デフォルトの名無しさん :05/02/15 01:36:38
問題文に"フレームクラスを使って作成せよ"という表現があったので、 Frameクラスを継承しないで解答欄には以下のように書きました(略してあります) Frame f = new Frame("aaaa") ; f.show() ; この問題の場合、フレームクラスを継承して public class xxxx extends Frame{ public FrameTest(){} } public static void main(String args[]) { new FrameTest().show() ; } としなければ間違いになるのでしょうか? "使って"という言い回しが良く分かりません。 教えてください。
>>6 継承した場合でも、継承せずにFrameクラスをそのまま使ったとしても、使ったと言えると思う。
俺が出題者なら別にどっちでもよいと思う。
ただ、
>問題文に"フレームクラスを使って作成せよ"
ここだけ見ただけの話だからな。
「Frameクラスの〜メソッドをオーバーライドして・・・」
とか問題文にあったら継承してないとダメ。
>>7 正解になるのですか・・明日教授に直訴してきます!
丁寧にありがとうございました。
>>8 正解になるとまで入っていないだろうが。
問題文さらさないとなんとも言えん。
>>5 JDKを複数入れてる人は %windir%\system32 の java.exe と javaw.exe を消してる可能性が高い。
>>10 確かに。俺も消してる。pathから勝手に探すように記述できればいいのだが。
SWTのTextに入力制限(文字列なら文字列のみ、数字なら数字のみと言う様な感じ)を 掛けたいのですがどういう風にすれば良いのでしょうか? 入力桁数の制限は掛けれたんですが・・・ よろしくおねがいします。
14 :
デフォルトの名無しさん :05/02/15 11:01:30
どのバージョンで起動していいか判らなくなるから出来ないんだと思ふ
>>13 さん
即レスどうもっす。
まだまだ右も左もよく判ってないような奴なんで、
こちらで質問した方が良いかな…って。
敷居が高そうなんで(;^_^A アセアセ・・・
>>15 確かに質問できそうな感じではなさそうだな
内容確かめずに誘導は良くないね。すまん
いえいえ、とんでも無いです。
19 :
デフォルトの名無しさん :05/02/15 14:35:56
教えて下さい。 携帯で使うjavaとパソコンで使うjavaで書き方はかわりますか? パソコンでjava使えたら携帯で使う時も同じプログラム使えますか?
>>19 書き方は変わらない。
同じプログラムは使えない場合が多い。
>>19 文法や、基本的なクラスは、同じと言えるけど、
できあがったプログラムの全く同じものが動くとは思わないほうが良い。
ソースの記述は同じでも、配布の仕方とかは全然違う。
環境に依存しないような単なるロジック程度なら使える。
22 :
デフォルトの名無しさん :05/02/15 14:43:12
>>20 なるほど、どうもありがとうございました!!
24 :
デフォルトの名無しさん :05/02/15 14:47:04
>>21 とても丁寧にありがとうございます。
携帯とパソコンでは携帯はマウスがないし、とか
そういう問題で同じようにはできないっていうことなのでしょうか?
パソコンで使うjavaが使える人が
携帯で使うjavaを記述し動作させることは
さほど困難なことではないのでしょうか?
無知でごめんなさい・・・。
25 :
デフォルトの名無しさん :05/02/15 14:48:54
>>23 ごめんなさい・・・w
送信してからレス読んだもので。
くだらねえことでケンカになるんだな・・・・・・
27 :
デフォルトの名無しさん :05/02/15 15:39:28
>>24 > パソコンで使うjavaが使える人が
> 携帯で使うjavaを記述し動作させることは
> さほど困難なことではないのでしょうか?
容量制限がでかいしオブジェクト指向しずらいしJakarta使えない
から携帯電話Java開発は嫌い。
漏れはDB駆使したサーバサイト開発大好き
28 :
デフォルトの名無しさん :05/02/15 15:39:34
ホスト名とか、IPで個人情報調べることってできるんですか?
くだらねえ質問は(ry
30 :
デフォルトの名無しさん :05/02/15 15:46:03
>>27 いろんな縛りでやりづらくなるっていう感じですか・・・?
携帯電話javaは面倒が多いということなのですかね・・・。
>>24 「J2ME SDK DoJa」あたりでぐぐって、実際にAPIリファレンスと開発環境を落として
いじってみれば、なんとなくどんなものかは感じられると思う。
公式ページに容量の制限とかも記述されてるし。
DoJaでぐぐったらドコモが一番上じゃなくて少しびっくりした。
32 :
デフォルトの名無しさん :05/02/15 15:55:07
>>31 早速ググって見ます。
本当に親切で嬉しい・・・。
とにかく調べてみます!!本当に本当にありがとうございました!
33 :
デフォルトの名無しさん :05/02/15 15:56:23
>>30 携帯電話開発を頼まれるとJavaらしい仕事をしている気分に慣れないぞ。
変数の再利用ばかりする羽目になる。C時代のメモリ節約開発を思い出させる。
疲れるのでそんな仕事は逃げたほうがまし。
Vodafoneのメガアプリには期待しているんだけどね。
けど1MBでもまだまだ足りない気分だな。100MB程度あれば
携帯電話でクラス作り放題継承し放題例外処理使いたい放題外部API使いたい放題
デザインパターン使いたい放題
となることを期待しているのだが何年後のことだろうか。
やれやれ最近の若い者ときたら、大メモリ、高機能API,デザパタ無しじゃ コーディングが嫌なんて贅沢すぎる。 昔は過酷な環境で1クロック1メモリを惜しんで組んだもんだよ。 制限された環境だからこそ、逆に燃える位の気概がなくてどうするのか。 最近のプログラマには職人気質が足りないね。
じいさんはアセンブラ+メモリ8kbでプログラミングやっててくれ
以下のサイトでフリーのJavaappletをDLしようと思ったのですが、
http://home.att.ne.jp/gold/naoki/AL2/frAL2jp.html sort table をクリックしても画面に×印がでてappletの読み込みに
失敗してしまいます。ステータスバーには、sort table notinited と表示されます。
自分なりに調べて、IEのツール、オプション、詳細設定でJava2のチェックマーク
をはずしたりしたのですが、うまくいきません。
何かご存知の方いらっしゃいますか?
ちなみに当方の環境は、IBMのX40、winXP、IE6.0、
Java(TM) Plug-in: バージョン 1.4.1、JRE のバージョン 1.4.1 Classic VMです。
すいません。直URLしてしまいました。
クライアントVMではなくクラシックVM・・・? hostpot前のやつか
>>39 違う。IBMのClassicVMとはSunからライセンスを受けた
JREに自社で手を加えたJITコンパイラを組み込んだVMのことをいう。
#俗にIBM JDKっていったら昔からこのVMが入っているやつのことをいった。
で、ClassicVMに対してJ9VMってのがあって、こっちは比較的最近
IBMのJDKに組み込まれた100%IBMオリジナルのVM。整数演算だったら
SunのHotspotよりも速いね。1.3.1の後期buildからJDKに含まれる
ようになったかな。-Xj9オプションをつけて起動するとこちらに
切り替わる。ただしJRE単体のパッケージには含まれていない。
hotspotで演算速度あげたかったらserverVMにするしなぁ
>>37 のはSun純正でもエラーでとるで
ただの手抜きです。 外にも、sunパッケージなんて全部載ってないんですよ。
>>33 2年で4倍だから6〜7年後には100MBは達成される
>>44 手抜き?? マジっすか、そんな事もあるとは知らなかった
Stringは結構重要だと思うんですけど・・・
うす、答えてくれてどうもっす
>>40 MSのVMなら動く。
MSのVMでしか動作しないクソアプレットだということだ。
>>44 え!?そうなの!?
private宣言のフィールドは載ってない、って勝手に思いこんでた
ソースコード確認してないからprivateなのかもわかんねーけど
49 :
デフォルトの名無しさん :05/02/15 23:13:05
>>43 privateなフィールドで外部からアクセスできないからじゃないの?
アクセッサもないし。
>>46 変数なんて知らなくてもメソッドがあるだろ?
とSunは言いたいんだろう
>>46 違うだろ。
privateフィールドなんか載ってるわけない。
結構重要なStringであっても、誰も使えないし、載せる意味なし。
かぶりまくった
>46 ついでに言うと、「あんまし見て欲しくないな〜」なとこってこともある。 何も秘密主義とかいうことではなく、 「デバッグや機能追加で内容を変えても晒してなければ周知の必要がない」 →「晒してない部分は手を入れやすい」 という話。これが「カプセル化」(かなり乱暴なくくりで言ってるが)。
54 :
デフォルトの名無しさん :05/02/15 23:27:37
>>48 44は大ウソですよ。
もともとpackage以下のメンバは、基本的にJavaDocには載せないのです。
ユーザーはそれを扱うべきではないからです。
手抜き→カプセル化 強引に論点を変えてないか?
56 :
デフォルトの名無しさん :05/02/15 23:40:17
privateなフィールドなりメソッドは公開されてないものなのだから、仮に目ざとく見つけて
>>43 のように喜んだとしても、次のバージョンにはそんなもの影も形もないかもしれんわな。
公開インターフェースが変わらない限り中身は変え放題だからな。
実際、Stringは1.4で大改変されてるしな。
lang.mathとかは1.3あたりで内部実装が結構変わってるんじゃなかったっけ。
うす、たくさん返事どうもっす privateは公開する必要ない・・・そっか(`・ω・´)言われて気づいたっす javadocと照らしあいながら初めてデバックしてみての疑問でした うす、うす
58 :
すみません :05/02/16 00:09:47
MySQL上で定義したテーブル hoge_table Field Type Null Key Default Extra ***************************************************** no varchar(20) PRI a_name varchar(20) YES NULL と定義している場合JAVAのソース上に insert into hoge_table(no) values(12345); は処理されるのに対して insert into hoge_table(a_name) values('12345'); だと弾かれるのでしょうか? JDBCに関連しての質問です。
privateだから公開する必要がないというよりは、 公開しないようにprivateにしているんだがな。 内部実装の詳細を外部に公開しないのはCの頃からかわらない。 ただシリアライズ可能なクラスの場合は シリアル化するときに内部実装の詳細を外部に公開する必要があるので privateなフィールドでもjavadocに載ってる。
60 :
デフォルトの名無しさん :05/02/16 00:21:54
62 :
すみません :05/02/16 07:13:19
>>60 & 61 具体的いにはどの様に修正すれば、宜しいのでしょうか? 御伝授頂きたく。
>>62 フィールドnoはNULL値が許されないように定義されているので、
INSERT文でなんらかの値が入るように指定する必要がある。
そのためには、適切な値をINSERT文で指定する。
または、フィールドnoの定義にAUTO_INCREMENTを追加して、
INSERT時に適当な値で埋めてくれるようにする。
これはJDBCじゃなくてMySQLの問題なので、板違い。これ以上はDB板いけ。
64 :
デフォルトの名無しさん :05/02/16 09:42:50
JavaMailで、送信先にx.400形式を使用したいのですが、エラーになって送信できません。 普通のインターネットアドレスには送信できるのですが、何かわかるかたいらっしゃいましたらご教授願います。
65 :
デフォルトの名無しさん :05/02/16 09:49:34
JAVASEとMEとじゃ使える命令が全部違うんですか?
>>66 さん すみませんでした。以下がエラーメッセージです。
javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
class com.sun.mail.smtp.SMTPAddressFailedException: 550 <"x.400形式のアドレス">... Cannot mail directly to files
at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1130)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:525)
at javax.mail.Transport.send0(Transport.java:151)
at javax.mail.Transport.send(Transport.java:80)
以下のようなコードで実験しています。
Properties p = new Properties();
p.put("mail.smtp.host", "SMTP_HOST_NAME");
Session session = Session.getDefaultInstance(p, null);
MimeMessage mimeMessage = new MimeMessage(session);
mimeMessage.addFrom(InternetAddress.parse("送信元"));
mimeMessage.setRecipients(Message.RecipientType.TO,InternetAddress.parse("宛先"));
mimeMessage.setText("本文", "iso-2022-jp");
Transport.send(mimeMessage);
どんな宛先か書けよ Invalid Addresses とか Cannot mail directly to files って書いてあるから分かりそうなもんだが
許可されてるサーバーとそうでないサーバーがあるから 他に使えるのあったらSMTP_HOST_NAMEを変えてみ
情報が小出しになってしまい何度も本当に申し訳ありません。 メールのシステムはExchangeサーバを使用していて、指定しているアドレスは、以下のような形式になっています。 /o=ドメイン名/ou=JAPAN/cn=Recipients/cn=ドメインアカウント名 SMTP_HOST_NAMEにプロキシサーバのアドレスを指定すると前述したエラーになります。 SMTP_HOST_NAMEにExchangeサーバを使用するとエラーは出ませんが、メールも届かないと言った状況です。
Exchangeサーバ側のログを見るか Exchangeサーバ内のメールのルーティング追跡というのをしる
みなさんどうもありがとうございました。 Exchangeサーバのログを見せてもらうことにします。
すいません、こちらでいいのか分からないのですが、質問させてください。 現在、RedHat linuxのエンタープライズバージョンを使用しての開発を やっているのですが、JDKをインストールする際のbinファイルとrpmファイル では、JAVAのプログラムの挙動が変わってしまうのです。 内容としては、String#getBytes()メソッドを呼び出した場合の デフォルトキャラクタセット文字列が異なるということなんですが、 rpmで入れた場合だとUSになってしまい、binだとEUC-JPなんです。 実は開発をbinでやり、ユーザはrpmでインストールしてしまって 判明したことなのですが、原因がどうしてなのかを報告する必要が 出てしまいました。 binとrpmの違いって他にもありそうな気がするのですが、どなたか そういった情報をお持ちの方はいないですか?
>>74 俺はわからんが、もっと環境を書くべきではないのか?
バージョンとか
>>75 そうですね。
もう少し、説明します。
JDKのバージョンは1.4.2_b28を使っています。
linuxに関しては日本の環境になるようにインストールしてあるのですが、
他のスクリプト等でlocaltimeを実行すると日本の時間が取得できています。
JDKのインストールは、オプションなしで実行していますので、こちらでの
指定が必要なのかもしれません。
binの場合、インストールのオプションに-localinstallというのを付けられるよう
ですが、binの挙動が想定通りなので、rpmにロケールを認識させられれば
いいのですが・・・
今は、JVMのそういった情報がどこに格納されているかを調べています。
java.util.prefsパッケージ配下にあるクラスからアクセスできる情報が怪しい
と睨んではいるのですが、まだ分からない状態です。
>>76 クラスは既にJVMの上で動くことが前提だから関係ないかと。。。。
JDKインストールディレクトリ/jre/libにある、
ナンチャラ.properties あたりをのぞいてみたら?
もしユーザーがbinから入れていてもUSになっていた可能性もある rpmならeraseしてbinからいれ直してみれば?
>>77 ありがとうございます。
そちらをチェックしてみます。
>>78 いえ、rpmとbinは違うっていう事象はこちらでも確認しました。
プログラムの修正でどちらでも動くようにはしたのですが、
取引先から、経緯報告(始末書とも言います)を求められていまして・・・
>>80 LANG=ja_JP.eucJP
となっています。
サーバ自体はいいのですが、なぜにデフォルトキャラクタセット文字列が
変わるのかを解明したいのです。
やっぱりJava VMの仕様書を紐解くしかないのかなあ。
今、さっきrpmをrpm2cpioで分解してみたのですが、ファイル構成は
binのものと変わらないですね・・・
>>81 javaは実行ユーザのLANGを見てデフォルト決めるけど、本番環境はrootかwwwで実行しててLANG=cか未設定、開発環境は適当なユーザで実行しててLANGが設定してあるとかじゃねーの?
>>82 実行はどちらの環境でもtomcatユーザとなっています。
開発環境でもrpmで入れたものに関してはデフォルトが異なって
しまうため、インストール時の設定、あるいはJVMの起動時の設定
がパッケージによって異なっているのではないかと睨んでいるのですが・・・
>>83 >デフォルトキャラクタセット文字列が異なるということなんですが、
rpmとbin、それぞれ、どうやって確認しているの?
当然、同じ確認方法なんだろうな?
>>84 こちらに関しては、String#getBytes()の挙動が変化することに
よって、確認しています。
また、System.getProperties()から取得できるパラメータの違いも
確認できました。
rpm:
key:[user.country] value:[US]
key:[file.encoding] value:[ANSI_X3.4-1968]
key:[user.language] value:[en]
bin:
key:[user.country] value:[JP]
key:[file.encoding] value:[EUC-JP-LINUX]
key:[user.language] value:[ja]
やはり、設定がずれていますね・・・
>>85 違うという事実は分かった結果よりも、どうやって確認しているのかもっと情報をだせ。
なぜ違いが出るのか、分かる人がいるかもしれないじゃないか。
テストプログラム作って確認しているということだな。
そのプログラムは、rpmとbinで、それぞれ、どうやって動かしているの?
当然同じ動かしかただろうけど、tomcat上で動くものなのか?単なるjavaアプリケーションなのか?
×違うという事実は分かった結果よりも、〜 ○違うという事実は分かった。 実行結果よりも、〜
>86 情報が小出しになってしまっていてすいません。 確認はtomcat上のJSPを利用して確認しています。 rpmとbinでの切り替えはCLASSPATHの設定を変更する ことによって行っています。 その際、tomcatの再起動も行っていますので、残るといったことは ないはずです。
すいません、急遽、外出しなければならなくなりました。 みなさん、いろいろとアドバイスありがとうございました。 また、顔を出しますので、今日は失礼します。
クラスパスで変わるの??
91 :
デフォルトの名無しさん :05/02/16 21:16:20
rpm入れてしまったのは取引先なのに なんでお前が始末書書いてんの?
92 :
デフォルトの名無しさん :05/02/16 21:31:43
>>34 おまえみたいな奴が調子にのって
読みにくいソースコードをまき散らして
引き継ぎ人が多大な迷惑を受けるんだ。
はっきりいってウザイんだよ。
重複したコードが無駄に多すぎるわ
ゴミが多すぎるわ
余計な仕事を増やすな。くだらねえ読みにくいソースコードの
ために残業代も出ずに夜遅くまで残ってソースコードを解析する
苦労を考えろ。適切なアジャイル開発もできずにくだらんことでメモリが勿体なすぎると
抜かす奴は燃えるどころかハードコーディングだらけのスパゲティコードに
無駄な労働力を増やすだけの厚かましい存在だ。
最適化を後回しにすることもできない
設計能力もないデザインパターンも自動化ツールも使いこなせないCOBOLerの
ような考え方が古い人間は
迷惑だからこの業界から出て行け!!
>>76 rpmを yum update
でアップグレード汁
>>76 /etc/javaか
/usr/javaあたりに何か設定ファイルは無いか?
とりあえず文字コードはソースコードもコンパイルオプション指定も
UTF-8にしておけ
>>76 1.4.2_b28
このbは何を意味する?
ベータ版かと思ってしまう。
1.4.2_07または5.0_update1は入れないのか?
>>81 export LANG=ja_JP.UTF-8
で上書きしたらどうなる?
>>88 <meta>タグでの文字コードの指定は?
<%@ page %>タグだったかな? そこでの文字コード(charset)の指定は?
System.setProperty()で無理矢理プロパティ帰られない?
98 :
デフォルトの名無しさん :05/02/16 21:43:33
>>88 そのTomcatはJakarta純正のか? Tomcatはrpmで入れたのか?
バイナリで入れたのか? makeして入れたのか?
JAVA_HOMEは設定しているか?
それともGNU絡みでGCJでコンパイルされたネイティブで動く
Fedora Coreに付属している不安定なTomcatか?
Fedora Coreに標準でついてくるJavaを使用することはお勧めできない。 まだまだ不安定だから。
Linuxの中身がFedoraっつう報告は無いんだが。 ところで、これってjre/lib/charsets.jarがクラスパスにない場合に似てるんだが、 自前で設定しているっていうクラスパスに間違いはない?
101 :
デフォルトの名無しさん :05/02/16 22:56:00
>>99 確かに不安定だね
システム全体がハングアップ同然になることもある・・・
Fedora に標準の java コマンドって中身 gcj だろ? そんなん使ってる奴居るの? 2.6.10-1.737_FC3 + Sun JDK 1.4.2_06-b03 で Tomcat 動かしているがすこぶる好調だ。 で、Tomcat の起動は init.d の起動スクリプトでやっているのだろ? tomcat ユーザの .bashrc だか何だかで LANG 設定しても利かないから。 > rpmとbinでの切り替えはCLASSPATHの設定を変更することによって行っています。 PATH のことか? なんかここで聞こうと思ったんだが忘れてしまったよ。
そうそう、GIF エンコードのサポートってまだ? ひょっとして 1.5 で出来てる?
『シュート』のボタンを押すと棒人間の手からボールが弧を描きながらゴールに飛んでいき入る。 というプログラムをJavaを使って作っているんですが、ボールが弧を描きながらゴールに入るとこがよくわかりません。 ifとかflagを使うと聞いたんですがどうすればいいですか?
>ifとかflagを使うと聞いたんですがどうすればいいですか? 釣りとしか思えない内容だがマジレスすると キミの今のレベルではここで答えてもわけがわからないだけだと思うよ。 一冊本でも読んで出直してきた方がいい。
>>104 数学の教科書を開いて 2 次方程式について調べて見よう。
>>106 物理の教科書も開かせて力学も調べさせないと
108 :
74 :05/02/17 09:46:02
みなさん、おはようございます。
昨日は、早々に落ちてしまいすいませんでした。
>>90 現在、/usr/java/java2sdkをJAVA_HOMEに設定しています。
こちらはシンボリックリンクになっており、実体をbinとrpmとで
切り替えて、動作確認をしています。
>>91 いえ、rpmで入れるっていうのをマニュアルに書いてしまったので・・・
ですので、なぜ開発環境とずれるようなことを書いたのか、また、
この事象の原因は何かをまとめないといけないのです。
>>93 >>95 えっと、今回は正常動作させることはできているのですが、
rpmとbinの挙動の違いの根拠がどこにあるのかっていうことを
検証しないといけないんです。
109 :
74 :05/02/17 09:47:36
>>94 *.propertiesでfindをかけたんですが、プロパティファイルではシステムに
存在していないようです。
ファイルは/usr/java/java2sdk以下にしか置いていないので、このディレクトリ
以下に何か存在するのだと思っているのですが・・・
>>96 動作は変わらないですね。
>>85 で出したプロパティの値も、環境変数によって左右されないようです・・・
>>97 metaタグおよび、JSPの先頭で<%@ page contentType="text/html; charset=EUC-JP" %>
を指定してあります。
表示もStringのデータも問題ないのですが、getBytesでバイト変換した場合の挙動で
rpm版の場合のみ、マルチバイト文字が"?"に変換されてしまいます。
setPropertyでプロパティを変更した場合は、rpmとbinの挙動は同じになりました。
file.encodingの値を見ているようです。
>>98 Jakartaプロジェクト純正です。
こちらに関してはJakartaのHPにあったバイナリをそのまま配置して動作させています。
linuxはFedoraではなく、Enterprise版を使用しています。
110 :
74 :05/02/17 09:55:32
>>100 CLASSPATH=$JAVA_HOME/li/tools.jar:$J2EE_HOME/lib/j2ee.jar
という指定になっています。
一度、charsets.jarを直接指定して、実験してみます。
>>102 シンボリックリンクの切り替えのことでした。
tomcatの起動スクリプトも自前で作っているのですが、環境変数として
LANGはexportしてないですね。
>>108 >昨日は、早々に落ちてしまいすいませんでした。
この言い回し懐かしい。。。テレホ時代思い出した。
>>111 そうだのう
ISDNで64Kbpsの時代だったなあ
それにしても、質問者は2chに似合わず、礼儀正しい人だのう
>>110 この環境変数CLASSPATHはどこで記述しているの?
だいたい、Tomcat使うのに、環境変数CLASSPATHって、普通設定するもんなの?
俺は、Tomcatの起動スクリプトに任せてるけど。
大体は、Webアプリケーション単位でWEB-INF/libに置くか、
Tomcat全体に通したい場合は、common/libに放り込む。
#だからといって、rpmとbinでの違いになるかは知らんけど。
>こちらはシンボリックリンクになっており、実体をbinとrpmとで
>切り替えて、動作確認をしています。
その実体の中も比較してみたら?まずはファイルの有無単位で。
あと、どんなスクリプトからTomcat起動しているのかもさらすべし。 ・tomcatについているスクリプト使っている ・自作スクリプトで、classpath自分で通してorg.apache.catalina.startup.Bootstrapを起動している
>>100 charsets.jarはブートストラップクラスだから、ユーザが
環境変数や-cpで指定するユーザクラスとは関係ないよ。
-X〜で上書きはできるけど。そういやちょっと昔のJREってcharsets.jar
が同梱されている国際版とされていないやつに分かれてたけど、
そういう話だったりして。
rpmとbin両方root(LANG=C)でインストールして、rootで実行して試してみたが、 両方とも file.encoding:ANSI_X3.4-1968 user.country:US user.language:en になったぞ。 テストプログラムはこんなの Properties p = System.getProperties(); for ( Iterator i = new TreeSet( p.keySet() ).iterator(); i.hasNext(); ) { String key = (String)i.next(); System.out.print( key ); System.out.print( ":" ); System.out.println( p.getProperty( key ) ); }
117 :
74 :05/02/17 11:05:20
>>113 環境変数はtomcatの起動スクリプト内に記述してあります。
実際の起動、終了は$TOMCAT_HOME/binにある、
startup.shとshutdown.shを環境変数設定後に呼び出しているだけです。
ファイルの有無のチェックは、これからやってみます。
>>115 そうだったんですね。
指定したことがなかったので、試してみましたが変化はなかったです。
>>116 わざわざありがとうございます。
テストプログラムは似たような感じですね。
116さんの結果では、もしかしてbinの方はインストール時の環境を
どこかで持ってしまうっていうことなんでしょうか?
私の場合、rootでLANG=ja_JP.eucJPでのインストールとなっています。
LANGを違う国に変更した場合の、挙動を見てみます。
118 :
74 :05/02/17 11:07:12
>>114 起動スクリプトは以下のような感じです。
. /etc/rc.d/init.d/functions
export JAVA_HOME=/usr/java/j2sdk
export J2EE_HOME=/usr/java/j2sdkee
export CATALINA_HOME=/usr/local/jakarta/tomcat
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$J2EE_HOME/lib/j2ee.jar
export PATH=$PATH:$JAVA_HOME/bin:$J2EE_HOME/bin
case "$1" in
start)
echo "Starting tomcat"
$CATALINA_HOME/bin/startup.sh
sleep 10
;;
stop)
echo "Stopping tomcat"
$CATALINA_HOME/bin/shutdown.sh
echo
;;
restart)
$0 stop
$0 start
;;
esac
>>117 binでインストールした際には、JARファイル何個かをcreatingしてたのでそうかも。
earファイルの作り方を載せているサイトってどこが無いですかね? application.xmlの書き方が良く分からない・・・。
12です。
>>18 さん
亀レスですいませんが、ありがとうございました。
123 :
74 :05/02/17 14:33:06
>>113 ファイルの有無をdiff -rsでやってみました。
binの場合のみ、$JAVA_HOMEの直下に.systemPrefsという
ディレクトリが作成され、その下に.system.lockと.systemRootModFile
という二つの空ファイルが作成されていました。
他のファイルに関してはバイナリレベルでidenticalと表示されています。
>>116 実際にインストール時のログをファイルに取って、作成ファイルを
確認してみました。
jarファイルが作成されているようです。rpmでは、.packという拡張子で
ファイルが格納されており、それが展開されているだけではと思います。
これらのファイルもrpmとbinでは違いがありませんでした。
また、LANGをCとja_JP.eucJPにして、binを展開した場合のディレクトリ
およびファイルの比較をしてみましたが、こちらも違いがありませんでした・・・
そこで、rpm版で確認したのですが、rootになって環境変数を変更して、
挙動を確認してみました。
次にまとめます。
124 :
74 :05/02/17 15:07:56
LANG=Cで/etc/rc.d/init.d/tomcat startで起動 RPM:file.encoding=EUC-JP-LINUX BIN:file.encoding=EUC-JP-LINUX LANG=Cで$CATALINA_HOME/bin/startup.shで起動 RPM:file.encoding=ANSI_X3.4-1968 BIN:file.encoding=ANSI_X3.4-1968 LANG=ja_JP.eucJPで/etc/rc.d/init.d/tomcat startで起動 RPM:file.encoding=EUC-JP-LINUX BIN:file.encoding=EUC-JP-LINUX LANG=ja_JP.eucJPで$CATALINA_HOME/bin/startup.shで起動 RPM:file.encoding=EUC-JP-LINUX BIN:file.encoding=EUC-JP-LINUX となりました。 前回、実施した結果と異なった状態になっています・・・ (前回はRPMでEUC-JP-LINUXは出なかった) 一度、サーバ全体のインストールから、確認をしたいと思います。
>>122 情報ありがとう。
一応そのサイトは見つけたんだけど、タグの意味が載ってるだけでは
俺の頭では作れなかった・・・。でも、ホント情報サンクス。
ちなみに、application.xmlって自力で作らなくて良いの?
俺はてっきり自分で書くのかと思ってたんだけど、もし自動で
作成する方法があるなら、良ければ教えて下さい。
使ってる環境はWeblogic7.0です。
>>125 7.0だとWorkshopは使えないね。Eclipse + LombozならEarの生成機能があるはず
だけど、開発環境は何を使っていますか?
でも、application.xmlって大して書くことないから、手で書いてもそんなに大変
じゃないと思うけど。
教えて下さいませ。 (問題)Swingで表示した文字のフォント表示が擦れてしまいます。 感覚的には指定したポイントの文字を縮小して表示を潰した後、 元のポイントに引き伸ばした感じ。 dialog.plain を指定-> WinOS的には、MSゴシックが指定される。 dialog.boldのフォントが汚い問題とは、フォント種も表示結果も違うので 別の問題と判断してる。 Java1.3.1/Windows2000/数十台中1台のみ発生するので、 端末固有の問題なんだろうけど、原因不明じゃ癪なので…
トランプゲームを作るとして, PlayerクラスとDeckクラス(場の山)があるとして, Playerオブジェクトにカードを一枚ドローさせたいとする. このときPlayerオブジェクトが,その内部に他のPlayerオブジェクトと共有する形でDeckオブジェクトを持っていると, player1.draw()とやるだけでカードが一枚取得できるので嬉しいのですが, OOP的にこれはアリですか? 現実に照らしあわせて考えると,,人(Player)は場の山(Deck)を直接所有しているわけではないので, 一枚カードを引くという動作は,あえていうなら player1.draw( deck.getCard() ); な感じがするんですが, 別に現実通りに構築しなくても……と思いつつも,PlayerがDeckを所有するという違和感が気になりまして.
>>128 drawの中でdec.getCard()を呼び出すようにして
player1.draw(dec);
でいいんじゃない?
間違えた、decじゃなくてdeckだね
>>102 真っ赤で分厚いFedora Core2の本に
ちょっとしたコラムとして、GCJで動くTomcatの紹介をしている記事があった。
あの本の著者関係者は、ネイティブ版Javaをマンセーしているかのようだった。
TomcatまでGCJで動かすなんてキモイ。
132 :
デフォルトの名無しさん :05/02/17 22:00:48
ネイティブというだけで、拒絶反応しめすのもキモイけどな。 只で使えるeclipseがないときは、IDEに拒絶反応しめしてたJava厨に似てる。
実際のところGCJは使い物にならないし
new ってなんで要るの? ClassName instance = ClassName(); こんな文法でも別に問題ない気がするんだが。
135 :
デフォルトの名無しさん :05/02/17 22:36:53
Java サーブレット特訓中です。 次のコンパイルエラー教えてください。 Controller02.java:37: シンボルを解決できません。 シンボル: メソッド RequestDispacher (java.lang.String) 場所 : javax.servlet.ServletContext の インタフェース RequestDispatcher rd = context.RequestDispacher( target ); ^ エラー 1 個 問題になってる部分です。 String target = "/View02.jsp"; ServletContext context = getServletContext(); RequestDispatcher rd = context.RequestDispacher( target ); rd.forward( req, res );
>>135 サーブレットなんて難しいものを勉強する前に
Javaの基本を勉強した方がいいよ。
>>132 は最近Javaスレで暴れている低脳コボラか
>>134 Perl厨は馬鹿だから
そういう考え方しかできない
>>134-135 命名規約を守っているAPIのメソッド名が大文字で始まると思っているのか愚か者め。
141 :
デフォルトの名無しさん :05/02/17 23:10:26
>>140 135です。わかりました。うまくいきました。サンクス。
int 10のような整数を 0010と表現したいのですが、NumberFormatで定義をするのでしょうか?
>>134 そのルールで行く場合、次のプログラムでは何が表示されるの?
(見やすくするために、タブの変わりに全角スペースで字下げしてます)
public class ClassName {
public static void main() {
ClassName instance = ClassName();
}
public ClassName() {
System.out.println("Constructor");
}
public static ClassName ClassName() {
System.out.println("Static Method");
return new ClassName();
}
}
>>143 > public static ClassName ClassName() {
ここと、
> return new ClassName();
ここでコンパイルエラー。
>>142 NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumIntegerDigits(4);
nf.setGroupingUsed(false);
nf.format(10);
>>144 つまり
>>143 が言いたいのは
ClassName instance = ClassName();
これでは、インスタンスを作成するのか、メソッドを呼んでいるのか
判断できないということ。
ちなみにどんなエラー?
>>145 ありがとうございます。お手数かけました。
>>146 「コンストラクタと同名メソッドは定義不可」
「new が未定義」
かな。
>>144 なるほどね。
クラス名にカッコつけて書いたら、それだけでインスタンス生成式扱いってことね。
よってクラス名と同じ識別子をメソッド名として使うことは許さん、と。
それならそれで筋が通ってるような気がする。
>>146 「判断できない」とまで言わないけど、判断するのに、その識別子が
メソッド名として使われているのか、クラス名として使われているのかを
確認しないといけなくなる、ってことだよね。
>>143 public static void main() {
じゃなくて
public static void main(String[] args) {
だろがよ?え? ww
new 演算子でなく smalltalk とか ruby みたいな new メソッドでもよかったような気がする。 今でもバイトコード上ではコンストラクタは <init> という名前のメソッドでしかないしな。
昔いたプログラミング言語関係の研究室で、 まさに同じ主張をしてた人がいたなあ。 彼は、コンストラクタ呼出しに無意味にnewを付けなきゃいけない点について Javaの唯一汚ないところだと言ってたよw
>139 僭越ながら全てのPerl厨に替わって申し上げる まともなモジュール書く香具師ならちゃんとnewサブルーチン作るYo!!(つ´д`;)
JavaでXMLファイルを読み込んで タグの部分だけを抜き出したいときってどうすればいいのでしょうか? ファイルを読み込んで一行ずつ出力しようとすると どうしても全行出力されたりしてうまくいきません
154 :
デフォルトの名無しさん :05/02/18 01:11:37
日常使う英数字(10進数?)の 1 2 3 4 5 6 7 8 9 a b c d e j k A B C D E J Kが それぞれ 31 32 33 34 35 36 37 38 39 61 62 63 64 65 66 6A 6B 1 42 43 44 45 4A 4B に対応してるんですけど、javaでの変換方法が分かりません。 16進数とかHex表示などの機械語みたいなんです。 例えば下の61をaに変換するプログラムを作りたいのですが。 ご教授願えますでしょうかm(_ _"m)
public class Sample { public static void main(String[] args) { char c1 = 0x61; int i1 = (int)c1; System.out.println("文字コード " + c1 + " は"); System.out.println("10進数の " + i1 + " と等しく、"); System.out.println("8進数の " + Integer.toHexString(i1) + " と等しく、"); System.out.println("16進数の " + Integer.toOctalString(i1) + " と等しく、"); System.out.println("2進数の " + Integer.toBinaryString(i1) + " と等しい。"); } } 酔っ払ってるので超適当。コピペを繰り返すのは悪いコードの見本です。
>>153 SAXってやつを使えばいいんじゃないかと思う。(自信ないけど。)
157 :
デフォルトの名無しさん :05/02/18 02:16:03
Javaしってても仕事も就職先もないね(TдT)
面接の勉強をした方がいいんじゃないか?
人間性の問題ということか・・・
やさしいJavaを読破した後、結城のJavaプログラミングレッスンも読んだほうがいいですか?
俺の場合、やさひい→結城本上下→BP本&シルバー本→P取得 で8ヶ月もかかっちまったよ。
break;
>>157 あと5年早く生まれてれば知ってるだけで引く手数多だったのに、残念!
165 :
デフォルトの名無しさん :05/02/18 04:43:03
>>164 問題の難易度はそこそこだけど。
合格ラインが、52%以上の正解だから、半分しか理解していなくても簡単に受かる。
#難しいというか引っ掛けだらけ。、
#「そんなもんコンパイルすれば分かるじゃん」という問題ばかり
>>157 そりゃ当然、Javaを知ってるだけじゃ意味無いだろう。
ある程度使えないと。って違う?
>>157 どの程度知ってるかは知らんが
学校で習った程度とかだとだめじゃないかな
今は具体的に自分で何か作ったないと厳しいと思う
>>157 どこまで知ってるかだね。
標準仕様だけでなく、今現場で必要とされているフレームワークやライブラリ、ツールを
熟知して、デザパタやJ2EEパターンなども知っていて、それらを必要に応じて組み合わせて
アーキテクチャ設計が出来るぐらいまで知っていれば仕事も就職先もあるよ。
・・・ってかウチが欲しい。
末端プログラマとしてコーディングができます。っていうだけだったら、いらない。
「Javaできても仕事がない」って言う奴はその程度の奴だろ。
>>169 >末端プログラマとしてコーディングができます。っていうだけだったら、いらない。
>「Javaできても仕事がない」って言う奴はその程度の奴だろ。
Javaに限った話ではないな、C言語なんかでも、学校で習った程度で
就職しようとしてる人がいるからな。
みんなができるなら、それ以上のものがないといけないというのに
>>169 >標準仕様だけでなく、今現場で必要とされているフレームワークやライブラリ、ツールを
>熟知して、デザパタやJ2EEパターンなども知っていて、それらを必要に応じて組み合わせて
その求人も現在では実は少ないw 単純に考えれば分かるが、
プロジェクトに船頭は二人いらないから。なまじ知ってるのが多いと
返って揉めたり、独自仕様を強調する香具師が出てくるしw
末端コーダーの方が量だけは求められるが、今はどこも飽和状態だからね。
つまりコーダーもマネージャースキルの持ち主も就職は厳しいよ。
これからはますますそうなる。少ないパイを取り合ってるのだし。
>>169 つーか、そんなに欲しいか? そのマネージャースキルの持ち主って?
むしろ、自信の無い末端コーダーの方が必要だったりする。
ちゃんと言われた通りにコーディングしてくれるし。なまじスキルが
あると、勝手に機能を追加したり自称改善してくるのがいるからなー
ピラミッドの底辺は大量に獲得しなきゃならないしね。
>>172 これから入る底辺は言われた通りにもコーディングできないかも知れないがな
しかし話がJavaと関係なくなってしまったな
ナポレオンは「一人の凡将が率いる軍は、二人の名将が率いる軍に勝る」 と言ったけど、プロジェウトにもモロに当てはまるな。 スキルと自信(自己主張)は完全に比例するし、スキル高いのが多いと ミーティング時に揉めて進捗率が悪くなる事がある。最終的に完成度が 高くなってもスピードの方が重要だから、多少理不尽でも黙って従って 黙々と開発してくれる方が全体の為になる。スキル高くてもそれを表面に 出さずに従順にこなしてくれる人が一番ベストだが、現実にはそんな人は いないからなー。プログラマはただでさえクセの強い人が多いしw
175 :
デフォルトの名無しさん :05/02/18 16:02:31
自己主張ばかりで納期も守れない、勘違い野郎が一番やっかい。 このスレにもたくさんいるよな、そんな野郎。
176 :
デフォルトの名無しさん :05/02/18 16:04:27
末端コーダーは人件費の安いインド人にやってもらうから コーディングしか出来ない日本人は失職する傾向にある
スキル高い椰子が自己主張するのは単に自信やプライドの問題じゃなくて、 烏合が集まってプロジェクトが変な方向に行こうとするのを察知して それを事前になんとか必死で止めようとする意味もある。 無駄な努力だと悟ればそういう椰子はさっさと退職してそのチームには ゴミだけが残る。
それより、ここはJava質問・相談スレッドである
昔、Webでうごくシステムの開発のときに、顧客情報管理部分のテストをしていた。 顧客名を <font color="red">田中</font> と、HTMLのタグをつけて入れてみたら、 顧客名一覧画面で、田中という文字だけが赤い文字で表示された。 「ユーザが入力した値を表示する際には、タグのようなものが入っているかもしれ ないことを考慮して、ブラウザエスケープする必要があるのではないか」 とミーティングで発言したら、「言われたことだけさっさとやれ、納期が迫ってるんだ」 という意味のことをプロジェクトマネージャーに言われた。 そんなことを思い出したYo!
いや、あまり従順でも返って能力を疑われるしな。 明らかに変な仕様の時に、何も言わないと軽蔑される事も多い。 言うべき時は言わなきゃダメだよ。 自己主張は今の時世では特に重要だ。生意気と思われる位がちょうどいい。 フレッシュマンでもそうだ。あまりおとなしいと返ってバカにされる。 全体の為にもならず自分の為にもならない。
×「返って」 ○「却って」
たとえばアニメーションなどで2つスレッドを作って、 アニメーションなどで1つのスレッドがsleepしている間にもう一つのスレッドに計算をやらせ、 計算が終わったらもう一つのスレッドでrepaintするとしたほうが時間的に 効率化されますでしょうか?つまり1つがsleepしている間はスレッドが動いて いないから別のスレッドが動いたほうが効率的だと思ったのですが・・・
185 :
デフォルトの名無しさん :05/02/18 20:27:08
Double型をString型に変えるにはどうそればいいのでしょうか?
187 :
デフォルトの名無しさん :05/02/18 20:54:40
188 :
デフォルトの名無しさん :05/02/18 23:50:08
頭の弱い犬ほどよく吠える 能力はまるっきりなのに、書籍の知識を鵜呑みにして 有能気取りのバカが、このスレにも常駐してる
主張云々はマ板でやってくれ。 質問スレでやる内容じゃない。
190 :
デフォルトの名無しさん :05/02/19 01:32:44
ファイルの読み込みで bufferedReader = new BufferedReader( new InputStreamReader( new FileInputStream(file), "EUC-JP")); こう書いているのですが、"EUC-JP"の部分がネックで 例えば対象ファイルがShif_JISだった場合、文字化けしますよね。 エンコードを自動判別するロジックってどう書けばよいでしょうか。
クライアントにダウンロードされたAppletをそこから別のDBサーバに 接続させるにはどうすればいいでしょうか? (接続図) クライアント→WEBサーバー(Applet)→DBサーバー ※WebサーバーとDBサーバーは別のハードウェア ※DBサーバーへの接続はJDBCを使う 処理を分散させたいため、WebサーバーとDBサーバーを別々にしましたが、 これだとAppletからDBサーバーへ接続しにいくところでエラーが出ます。 調べたところ、Javaのセキュリティ仕様によりクライアントと接続先の間 でしか接続できず、それ以外とは通信できないらしいです。 何かいい回避策はないでしょうか?
>190 JISAutoDetectで満足できないなら自分で判別ロジックをこさえるしかないかと。 nkfとかのソースを参考にしてもよいかもしれず。
>191 Webサーバーにサーブレットコンテナを載せて アプレット - サーブレット - DB てのはどうだろう。
>>191 1、あきらめて、WebもDBも同じマシンに置く。
2、Webサーバが置かれているサーバ内に、JDBCプロキシを動かす。
このプロキシは、指定されたポートでAppletからの接続を待ち、Appletに対してDBサーバのふりをする。
本当のDBサーバに対しては、このプロキシがJDBCクライアントとしてアクセスする。
3、DBサーバが置かれいているサーバ内に、HTTPプロキシを動かす。
このプロキシは、多分きっと80番ポートでクライアントからの接続を待ち、クライアントに対してWebサーバのふりをする。
本当のWebサーバに対しては、このプロキシがHTTPクライアントとしてアクセスする。
4、アプレットをやめて、Javaで書かれたプログラムを各クライアントマシンに配布する。
5、Appletが、どこにでもホイホイ繋ぎに行くように各クライアントマシンの設定を甘くする。
(そんなことが可能かどうかはシラネ。mozillaならOpensourceなので、不可能ではないかもw)
195 :
デフォルトの名無しさん :05/02/19 03:06:04
>>194 そこまで選択肢あげといて、なぜアプレットに署名とか、
JWSでアプリ配布とかまっとうな方法が出てこないのか...
197 :
デフォルトの名無しさん :05/02/19 03:42:29
ただの下請けのドカタが、建物の設計にまで口出してきたら、嫌だよなぁ てか(*∂ー∂*)イラナイワ
この業界は建築業界と違って設計を素人がするケースが多いから 設計に重大なミス(例えれば建築物が崩壊するような)があることが多い ドカタであろうが設計ミスは指摘してよい 情報処理技術者試験があくまで認定試験であって 一級建築士並みの資格試験になっていないのも問題
スレ違いで頑張ってないでキエロ
202 :
デフォルトの名無しさん :05/02/19 05:50:20
いたなそんな椰子 ここはデザパタのコンポジットパターン使うのが正しいとか 納期を無視して設計変更を力説する椰子 勝手に正しいとか言ってるアホは速攻無視したが
納期通り納品したあと問題が起こって突き返されるのが目に見えてるだろ
他人に自分の趣味趣向を押しつけて、正義づらされたんではたまらない。 こちとら趣味ではなく、エンドユーザーからお金をもらってやってるんだから。
2・3年前に比べてかなり質が落ちたなこのスレ Java プログラマ全体の質が落ちたのか
206 :
デフォルトの名無しさん :05/02/19 11:10:15
そういうところ
>>205 単にJavaプログラマの裾野が広がっただけでは?
回答側5人くらいで大量の質問捌いてた頃を思い出してみたり
自作自演乙
>>202 >>204 趣味設計を擁護するわけではないが、少なくともおまえは使えない人材っぽいな。
契約終わればサヨウナラ作業がメインの三流下請けだろ? 指摘に対して思考停止
してる時点でエンジニアとしては終わっている。
品質はごまかせても納期はごまかせないからね。実際、納期守って糞アプリの納品逃げする 会社も多いし。品質と納期のために最善の努力をしてくれる協力会社見つけてるから俺は 良いけど、納期守っても一回作り逃げした会社は次から安く買い叩くことにしている。 雑談失礼、次の質問 ↓
Javaでアクションゲーム作りたいんですけど 何から勉強したらいいですか?
まずはJava以外でゲームが作ったことがあるのかどうかだな 言語自体がわからないのであればどこがわからないかとかわかると思うのだが
>>213 どこまでJavaを使えるのか分からないので答えられないな
>>171 > >標準仕様だけでなく、今現場で必要とされているフレームワークやライブラリ、ツールを
> >熟知して、デザパタやJ2EEパターンなども知っていて、それらを必要に応じて組み合わせて
>
> その求人も現在では実は少ないw 単純に考えれば分かるが、
> プロジェクトに船頭は二人いらないから。なまじ知ってるのが多いと
> 返って揉めたり、独自仕様を強調する香具師が出てくるしw
慣れてくると揉めねえよ。仲悪くなる奴はいるが。
職場を変えれば見知らぬ奴と人間関係を簡単にやり直せる。
経験を積むことで沢山知っていようが揉める可能性は低い。
おだやかに対応するだけでどうにかなるもんだよ。
相手が独自仕様をおしつけてきたらとりあえずそれでやってみる。
そいつが馬鹿な手法をとってきたらとりあえずそいつの言うとおりに
してそいつがいかにして馬鹿であるかを証明してみればいい。
そしてあとからこちらが知っているもっと良い方法を実際にやってみて
そいつに見せびらかす。そうすれば喧嘩になる可能性も減り
そいつ自信、自分の手法が悪かったと反省して新しいやり方を受け入れるようになる。
馬鹿で古くさい開発手法を押しつけてくる輩には成功事例を実際に
そいつの目の前で見せつければイチコロよ。
219 :
デフォルトの名無しさん :05/02/19 16:47:42
あとはマネージャやチームリーダの部下を管理する、采配する能力次第だな。 顧客から仕事をとってくる営業SEのコミニュケーション能力に依存してしまうところもあるが。 営業SEが馬鹿だと無駄な仕事が増えて悪循環になり後始末が大変なことになる。 結局こちらが営業にかわって直接顧客とコミュケーションを密にとることになるが 営業SEが馬鹿なのでもう手遅れな事態になっていることも多々。 現場で感じることは仕事をとってくる馬鹿な営業SEをどうやって説得するか 技術もろくにしらずにこちらがなんでもできると勘違いしている 素人な顧客といかにしてうまくつきあっていくか テストの自動化をいかにして効率化するかが重要だってことがわかってくるよ。 どうだろうな。今プログラマは停滞しているところだと思うよ。 給料がITバブル時代とくらべかなり下がったことは否めないけどね。 マネージャクラスのスキルが低すぎる、あるいはそのクラスの人手が 不足している現状があると思うよ。 DBの設計能力のある人間も不足しているしね。
>>173 >
>>172 > これから入る底辺は言われた通りにもコーディングできないかも知れないがな
学生アルバイトとして働いているがうちの職場はそうでもなさそうだぞ。
給料安い代わりにほとんど好きなようにやらせてくれる。
一般的ばJavaコーディング規約を守っていればオブジェクト指向を使うも
学生アルバイトだろうが
勝手にクラスやパッケージや定数を追加するも自由。
プロジェクトによっては言語を勝手に選んでも言い場合もある。
他の職場では勝手にクラスを追加することも許されないところもあった。
221 :
デフォルトの名無しさん :05/02/19 17:01:47
>>174 > ナポレオンは「一人の凡将が率いる軍は、二人の名将が率いる軍に勝る」
> と言ったけど、プロジェウトにもモロに当てはまるな。
> スキルと自信(自己主張)は完全に比例するし、スキル高いのが多いと
> ミーティング時に揉めて進捗率が悪くなる事がある。最終的に完成度が
揉める原因た大抵上司や会社部署、チームの風潮にあるな。
上司/マネージャが部下を評価する方法がいい加減で現実的でないと醜い昇給争いに巻き込まれる。
とにかく急げ、短期間でやれと主張する上司に囲まれたプロジェクトでは
そういう喧嘩が起きやすい。
だがマネージャやチームリーダが過去に苦いプログラミング経験を持っており
急ぐことの危険性を知っていれば揉める可能性は低い。
それから、上司の中にできないことをできると言っている奴がいて、
それを部下に押しつけるような様子だと揉め事の原因になる。
できるかわからないことを、まだ試してもいないのに「できる」と
主張すると揉める。
要は、プログラマのスキルを正当に評価できる人間がマネージャになれば
解決するってこと。ある奴がある言語で作ったプログラムを短期間で完成させたが
言語を変えただけで開発速度が大幅に衰えることがある。
そこで、ある上司は前者のそいつの行動をみると凄い奴と思ってしまうが
他の上司で後者の行動した見たことが無いのはたいしたことが無い奴だと思ってしまう。
たいしたことがないと思われるとそいつはムキになる。おれの功績を見てくれないと、
そこで自分の得意分野を押しつける。
そもそも、上司がもっと客観的に部下を評価すればこんな事態には陥らないはずなのである。
言語やツール、開発環境の違いがその人の開発速度に影響を与えることを
わかっていない上司はプログラマのスキルを正当に評価できる能力が弱いため
喧嘩に原因を作りやすい。
>>220 >> これから入る底辺は言われた通りにもコーディングできないかも知れないがな
>
>学生アルバイトとして働いているがうちの職場はそうでもなさそうだぞ。
>給料安い代わりにほとんど好きなようにやらせてくれる。
なんかすご〜く的外れな回答なんですけど
>>218-222 既にスレ違いっぽい気がしますがいかがなもんでしょう?
続きはマ板の適切なスレに移動されてはいかが?
>>221 >そこで、ある上司は前者のそいつの行動をみると凄い奴と思ってしまうが
>他の上司で後者の行動した見たことが無いのはたいしたことが無い奴だと思ってしまう。
>
>たいしたことがないと思われるとそいつはムキになる。おれの功績を見てくれないと、
>そこで自分の得意分野を押しつける。
それお前の体験談?
225 :
デフォルトの名無しさん :05/02/19 17:13:06
>>175 > 自己主張ばかりで納期も守れない、勘違い野郎が一番やっかい。
若い世代にはかなり多いぞ。
上司の部下を評価するスキルにも依存するが。
30代の世代でもいなくはない。たとえばUnixとCに精通した
システムプログラミングに熟練した者は非常にプライドが高い。
サーバ管理スキルも凄腕でSolarisやPerl/CGIにもかなり精通している。
そういう人が以前いたがJavaをやりたがっていなかったのに
チームリーダを兼ねてJavaをやらされる羽目になった。
その人はJavaServletをよくわかっていなかった、
オブジェクト指向もわかっていなかったため
かなりイライラしていた。言語がJavaに変わっただけで
自分の能力が上手に発揮できないためだ。
それだけでそのプロジェクト内では
若手のJavaプログラマに負けてしまうのだ。
彼はいつも自分のC, UNIX,シェルスクリプトのスキルを自慢していた。
若手のプログラマにUNIXに関する問題を出して
どれだけスキルがあるか試していた。
と同時にそうすることで自分の威厳を保とうともしていた。
負けず嫌いな彼はそれによっって自己主張を繰り返していた。
若手の者が知らないことがあると即座に馬鹿にして満足していた。
Javaソースコードにsuper()やthisというものがあっても
彼は即座には理解できないでいた。
CやCGIでできたことをJava,やServletで真似しようとしたら
何かが違う。そのことで彼はかなり頭を悩ませていた。
>>224 ちょっとだけそういう空気に飲まれたことがある。
そこにいた人間はほとんどが体験している様子だったな
どこにだって正当に評価してくれない上司はいる。
かれを説得するのはたいへんだ
次スレタイ 【初心者】Java質問・体験談スレッド63【大歓迎】
>>180 > いや、あまり従順でも返って能力を疑われるしな。
> 明らかに変な仕様の時に、何も言わないと軽蔑される事も多い。
> 言うべき時は言わなきゃダメだよ。
いまどき何も言わない奴なんかいない。
おかしいとおもったら
なぜこういうことをするのかくらい聞くべきだ。
「こういう事例もあるけどなぜそんなことをするのか」とも聞くべきだ。
>>188 されど実際に動いているものを
見せる奴は吠えても頭は強く能力がある。
230 :
デフォルトの名無しさん :05/02/19 17:19:55
>>197 > ただの下請けのドカタが、建物の設計にまで口出してきたら、嫌だよなぁ
> てか(*∂ー∂*)イラナイワ
マネージャや顧客が無能だと下請けのドカタに口出しされる羽目になる
マジな話。
>>225 そりゃそいつのスキルが無いんだよ
勉強を欠かさず新しい技術にも付いて行けるのが
ほんとにスキルのある香具師
>>231 もう3,4年前の話だよ。
そのUnixヲタも今頃かなりJavaに熟練していると思う。
・・・・そうでなかったりして。
システムプログラミングマンセーなひどだったからね
Perlのスキルだけは伸ばしているかもな
234 :
デフォルトの名無しさん :05/02/19 17:26:04
>>223 どんなスレが適切なんだかわからぬよ。
よかったらおすすめなスレをあげてくれ。
マ板はアニヲタや寒いオヤジギャグ放つオッサン絡みの糞スレ
が多すぎて萎える。
いつもくだらんレスばかりが目立つ。
奴らは言っていることがいつも寒すぎる。
>>233 UNIXのソースコードって汚いのが多いからね
標準出力について教えて欲しいのですが、 System.setOutで標準出力先をファイルに指定したとして、 その標準出力先を画面(デフォルト)に戻したい場合は どのようにすればよいてしょうか?
>>238 最初に PrintStream stdout = System.out; とかして退避しといて
必要な時に System.setOut(stdout); で戻すとか。
>>238 PrintStream out = System.out;
System.setOut(out);
System.outは変えない方向で組んだほうがよくないか?
>>239 氏
>>240 氏のように、System.outをあらかじめ退避することでできました。
ありがとうございます。
しかし、
>>241 氏のように変えない設計にする必要がありそうです。
243 :
デフォルトの名無しさん :05/02/19 21:24:07
すいません。教えてください。 C言語の場合、関数を使って変数の値を変える場合、アドレスを渡すというのが 一般的ですよね? int a; func (&a); ・ ・ void func (int *a) { *a = 1; } javaの場合、メソッドを使って変数の値を変えるのはどうすればいいのでしょうか? メソッドの戻り値を使うというのにも限界があると思いますし・・ 同一クラス内のメソッドであればメンバ変数を使うのもアリかと思いますが、 他のクラスの場合はどうするのが一般的なのでしょうか?
オブジェクトを渡して中でオブジェクトを操作する。
フィールドを変えたいならそのフィールドを持つインスタンスを渡せばいい。 しかしメソッドを使って変数の値を変えるという考え方をやめて 変えるべき値を返すようにしてください。そのCの例でいうと × int a; func(&a); ・・・ void func(int *a) { *a = 1; } ○ int a; a = func(); ・・・ int func() { return 1; } 複数の値を返したいときは複数の値を持ったしかるべきクラスのインスタンスを返すようにする。
>>244 ,
>>245 ありがとうございます。
戻り値を使うというのは楽だと思うのですが、2つ以上の変数の値を変更したい
場合には使えないですよね?
そういう場合は面倒でもオブジェクトを使うしかないってことですね?
戻り値でオブジェクトを使うのでなく入力パラメタでオブジェクトを使ってもいい。 どっちにしろ同時に2つ以上の変数を変更したいってことは一般的に言って その変数らに何らかの関連があるわけだから、オブジェクトとしてまとめる設計にすべきだ。
248 :
デフォルトの名無しさん :05/02/19 21:52:11
> どっちにしろ同時に2つ以上の変数を変更したいってことは一般的に言って > その変数らに何らかの関連があるわけだから、オブジェクトとしてまとめる設計にすべきだ。 なるほど。 もっともですね。 オブジェクト指向が分かっていないので、単にCの関数がメソッドになっただけという コードになりがちなんです。
>>249 JavaBeansというのを勉強すべし
現在、javaのメソッドを暗記中なんですが皆さんはどこら辺のパッケージまで 記憶しましたか? 自分はまずlang、io、util、text、nioを覚えようと してるのですが、一応英単語を覚えるのよりは楽なんですが、似たような 名前とパラメータが多いので結構こんがらがります。 皆さんのAPI学習法を教えてください。
252 :
デフォルトの名無しさん :05/02/19 23:24:06
>>248 何を無職だと?
俺は学生アルバイトだが
>>251 暗記するんだったら
作りたいプログラムをさっさと作れ。
254 :
デフォルトの名無しさん :05/02/19 23:27:08
255 :
251 :05/02/19 23:28:02
いや、プログラミングもしてます。
>251 どのパッケージにどんなクラスがあるかと、それらクラスの概要だけ頭に入れたら 後は必要なときにAPIリファレンスを参照する。 本当にしょっちゅう使うような事柄ならそれで勝手に覚える。 ……という呑気なやり方でやってますが(汗)
>>251 暗記なんかする必要はない。
どこを調べればどんな物があるのかをわかってさえいればよい。
で、必要なことはすぐに調べられるように環境を整えておくこと。
無駄なことに頭を使うな。効率が悪い。ダメプログラマの見本だぞ。
メソッドを暗記するなんて時間の無駄だろ。 JavaのAPIリファレンスはダウンロードできるんだし、EclipseなりNetbeansなり 使ってれば、コード補完機能がメソッド名を補ってくれる上に引数まで表示して くれるんだし。 そんなことより、各クラスでどんなことが出来るのかを俯瞰的に覚えていった ほうが、あとでAPIリファレンスを見るのが楽になっていい。
あれか、試験向け勉強の弊害が出ていると言うやつか。 実戦では別の技術が必要なんだよ。
260 :
デフォルトの名無しさん :05/02/20 00:08:51
>>257 けど、暗記しとかないと、暗記バカに、バカにされるとです。
ひろしです。
このスレって、学生気分が抜けない、30前後の無職のオヤジが、常駐してる気がする。
何もせずにとにかく暗記しようとはせず、 必要なときにマメにドキュメント参照するようにしているいます。 暗記しようとする人なんて始めて見たナー。
263 :
デフォルトの名無しさん :05/02/20 00:35:59
>>261 なんか言ってる様で、実は何も言っていないコードの見本。
なんか内容的にマ板化してるな、最近
>>261 劣等感のあまり、自分から素性をバラしちゃダメだよw
266 :
251 :05/02/20 00:44:34
ご意見ありがとうございます。 自分も別に全部を丸暗記しようと思ってる訳じゃないです。 ただ基本APIだけは押さえとこうと思ったのです。 基本覚えてないと組みようがないですし。 しかし、APIの暗記なんかしないって意見にも ちょっと驚きです。皆さんは趣味プログラマですか?(学生)
>>266 わざわざ覚えようと思って暗記はしない。
はじめのうちは、使うたびに参照しても、使っているうちに覚えてくるもんだろ。
基本のAPIなんかは、そんな感じで覚える。わざと覚えないようにしているわけではない。
>>266 趣味でやってるようなやつほど暗記しようとしがちだね。
仕事でやってたら否が応でもよく使うものは覚えるから。
266 >皆さんは趣味プログラマですか? 30代。J2EEが主要範囲のプログラマ→アーキテクトだが、 今は開発の現場ではなく、コンサルタント・執筆・翻訳・講演などが仕事。 丸暗記は意味がない。 この辺のクラス(とかライブラリとかツール)を使うとこんなことができたはず、 ぐらいに覚えておけば、あとは実際に使う場面になってリファレンスとかサンプルを見ればいい。
×どうしたら最初にフォルダで実行できるでしょうか? ○どうしたら最初のフォルダで実行できるでしょうか?
昔Cの関数全部暗記してるって言いながら まともなプログラム一つ書けない馬鹿がいたな
>>270 Tomcatのリリースツール使えばいいやん?
名前知ってんのと使いどころをわきまえてるのはぜんぜん別問題。昔、優等生気質の 奴に Java 教えてたことがあったけど、本人的には機能を暗記することで満足してしまって それ以上先に進もうとしなかったので別の仕事に回したよ。 > どうしたら最初のフォルダで実行できるでしょうか? 最初のフォルダって何? Tomcat4.1\webapp ってディレクトリをドキュメントルートにしたいなら Tomcat4.1\conf\server.xml を修正すれば良いが、そういうことか?
>>270 あの著者の本や記事は信用しない方がいい。
重要な説明がごっそり抜けていたり、限定される条件にも
かかわらず当たり前のように書いてあることがあるから。
/jsp10の下に WEB-INF という名前のフォルダを作れ。
フォルダの中はとりあえずは空でもいいから。
>>274 すいません、とりあえず参考書どおりに
〜\tomcat4.1\webapps\jsp10\day01-1\intro.jsp
で動かしたいです
>Tomcat4.1\conf\server.xml を修正すれば良いが、そういうことか?
参考書には設定ファイルなどの編集については一切書いてないのですが・・・
恐らくそういうことだと思います
>>269 妄想ばかりだと、そのうち本当に頭が逝かれちゃうぞ。
社会的には、もう逝かれてるだろうけど。
↑ レス番間違えてる?
>>275 そういや昔はWEB-INFのフォルダなくても動いていたね
ふるいのよんでるんじゃないの?
>>270 は
でもその場合404エラーだったかな
>>275 できました。
有難うございます
>あの著者の本や記事は信用しない方がいい。
そうなんですか・・・
実は最初のMySQLのインストールの説明も間違ってた
入門書で環境設定間違えられるとつらい・・・
ムカつくけど一通りは読もうと思います
有難うございました
更新し忘れた
>>279 いや、最新版っすよ。去年の11月刊行
フォルダ作成くらい書いて欲しいです、マジで
正誤表もみたけどMySQLのインストール、JSPの実行
両方とも載ってなかった
これからもこんなミスが続くんだろうか・・・
>ムカつくけど一通りは読もうと思います 悪書なら読まずに速攻で捨てた方がマシ
>280 282に禿同 時間が勿体ないし、下手するとおかしな知識を覚えてしまうかも
暗記という話になっちゃったから具体的な話が出なく なってしまったけど、どのAPIを把握しておくといいかというと、 java.lang.* Object, String, System, 例外クラス, ラッパークラス, 場合によってはRuntime java.io.* 各種ストリームとリーダー/ライター java.util.* コレクションとと正規表現とプロパティ あと、StringBuffer(1.5ならStringBuilder) (個人的には日付とjava.textも) あたりを使えるようになるといい。 UI作るなら java.awt.* java.awt.event.* javax.swing.* javax.swing.event.* だが、ちと込み入るのでここでは深入りしないでおく。
うが、StringBufferはlangだorz とまぁこういう香具師でもJavaで飯は食える。
なんでここはヘタレ回答者しかいないんだ?
文字列を数字に変換するのに色んなやりかたがありますが、 とりあえずどれか一つ覚えておけばよいですか?それとも 全部のやり方知ってないとだめですか?
質問です。 Javaのプログラム書くのに最適なソフトウェアってどれですか? 私は今XEmacsをつかってますが、フリーなだけあって使い勝手やインタフェイスなんかもイマイチです。 やっぱりボーランドとかコードワリアーとかのほうがいいでしょうか? ほかにも使ってる人で、これだっていうのがあれば感想お願いします。
メモ帳
vi
>>288 あなたが書いている「よい」および「だめ」という表現が
それぞれ何を意味しているかによると思います
>>289 を読んでマトモにレスしかけたが、書き込む前に冷静に
>>289 を読みなおしてみて、
「ボーランドとかコードワリアー」とか書いてるあたり「釣りっぽい」という事実に気付いたり。
>>288 仕事でやるなら、一つのプロジェクトで統一しておいた方が見通しはよい。
全部知っているにこしたことはない。
ちなみに俺は一つしか覚えてないけど、仕事では特に困らない。
296 :
デフォルトの名無しさん :05/02/20 11:46:40
>>255 おまえは辞書の中身をいちいちすべて暗記するほどの馬鹿なのか?
百科事典を丸暗記したと豪語したライブドア堀江級のヴァカだな
297 :
デフォルトの名無しさん :05/02/20 11:48:35
>>269 なぬ?
藻前はあのJ2EEエンタープライズアーキテクトか!!!?
298 :
デフォルトの名無しさん :05/02/20 11:52:28
>>284 おい、
暗記はとりあえずjava.lang.*だけでええだろ。
あとは必要に応じてdoc見ながら使いながら
覚えればいい。
暗記するよりも例外処理、
マルチスレッドの使い方、
デザインパターンやフレームワークの使い方を覚えた方が
効率がいい、
ここでAPIの暗記を否定してる人 = ゆとり教育の申し子 英単語と同じで暗記はツライけど、初めに基礎APIを一通り覚えて おくと上達が早くなる。普通に考えれば分かると思うけど。
「自分は上達した」と思い込んでいる初心者
>>300
>>297 こんなのがいるから、自演Java厨はバカ丸出しとか言われるんだよなあ。
暗記の意味が人によって違ってない? API名と機能をざっと頭に入れるのは有効だと思うけど、 引数の内容とかまで一所懸命覚えてたら馬鹿だと思う。
APIは体で覚えろ
どこまでを体で覚えるか、という話なんだが
完璧に丸暗記出来たとしたらその先に我々の知らない別の世界があるのかな
使いたい時以外で勉強のためにAPIを見たことある人いる? 多分、ほとんどいないんじゃないんかね。 初めて使うライブラリとかは、ざっと見渡すくらいはするかもしれんけど。
String.replaceAll()で半角 $ の入った文字列で置換しようとすると java.lang.IndexOutOfBoundsException: No group 4と出ます。 $を取るとエラーが出ないのですが、これはどう回避すればよいのでしょうか?
309 :
デフォルトの名無しさん :05/02/20 15:58:17
ここでいいのか分からないのですが、他に該当スレがないようなので、 ここに書き込みさせていただきました。 お願いします。 1、Enterprise Java Beans と Java Beans ってどう違うのでしょうか? Beanのうち、自分で作成するのではなく、初めから予めインターフェースなど で使用が決まっているものをEnterpriseって言うのですか? 2、strutsってなんでしょうか?フレームワークが何なのかがよく分かりません。 3、EclipseでJSPのデバッグ、JSPエディタを使用したいのですが、 Eclipse3.0でLombozが認識されません。lomboz.097.b202をEclipseのplugin にコピーして再起動しましたが、Eclipseの設定メニューにLombozが 出てきません。 4、Eclipseでサーブレットのデバッグ?をしようとしたが、ブレーク ポイントでブレークしません。 すみません。スレ違いでしょうか?
310 :
309 :05/02/20 15:59:11
1、使用⇒仕様 の間違いです。
311 :
デフォルトの名無しさん :05/02/20 16:02:39
>>307 >使いたい時以外で勉強のためにAPIを見たことある人いる?
勉強の為というか、暇つぶしでなら
API リファレンスを眺めることはあるけど?
>>311 今、やってみましたが、ダメでした。
java.lang.IndexOutOfBoundsException: No group 4
at java.util.regex.Matcher.group(Unknown Source)
at java.util.regex.Matcher.appendReplacement(Unknown Source)
at java.util.regex.Matcher.replaceAll(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
...
となってしまいます・・・
314 :
デフォルトの名無しさん :05/02/20 16:09:16
>>306 API のドキュメントを見て確認しなくて良くなるわけだろ、それってすげーよ。
丸暗記ってことは、次の質問にも答えられるってことだよね。
・java.io.Serializable インタフェースのサブインタフェースを全て挙げる。
・java.awt.event.KeyEvent クラスで定義されているフィールドを全て挙げる。
そんな風になれたら、すげー楽しいだろうな。
>>315 それくらい Eclipse の補完機能で十分じゃないか?
>>314 readFileメソッドで文字列読み込んで、それString listPageStr内の##LEFTの部分と置換するだけなんです…
String str = this.readFile(filePath);
listPageStr = listPageStr.replaceAll("##LEFT",str);
>>314 あ、できました。
\\$でなく、\$でいけました。
お騒がせしました!
319 :
デフォルトの名無しさん :05/02/20 16:22:51
>>315 大学受験の時は誰でも3000以上の英単語を覚えるのだから
それに比べれば楽じゃないか?名前も覚えやすいし(混同しやすいけど)
あ、良く見たら$を二つ押してたw
321 :
デフォルトの名無しさん :05/02/20 17:41:28
作ったclassファイルを、 実行可能なjarファイルに使用としています。 外部のクラスパスを扱う方法は調べてわかりました。 しかし、JVMの引き数としてdllファイルを与えたいのですがその方法が分かりません。 jarファイルをコマンドラインで実行するのではなく、ダブルクリックで実行したい のでマニフェストにパスを記述したいと考えています。 方法ありますでしょうか? --------------------- Manifest-Version: 1.0 Main-Class: MainRun
jarにする前はdllで動いてんの?
>>309 1.
> Beanのうち、自分で作成するのではなく、初めから予めインターフェースなど
> で使用が決まっているものをEnterpriseって言うのですか?
違う。
・EJBはEJBコンテナ上でしか動作しない
・呼び出し側とは別VM上(別ホスト上)でも動作可能
・EJBコンテナの機能で分散配置、分散トランザクション、宣言型トランザクションなどの機能を利用可能
2.それじゃ、「フレームワーク」を調べましょう。とりあえずはアプリケーションのひな形、ぐらいに覚えておけ。
3.4.Eclipseスレで聞け
>>325 &326
ありがとう御座います。
まんまの議論ですね…。試してみます。
メソッドを書くときに、スーパークラスのメソッドをオーバライドするときには、 publicとprotectedとprivateのどれを使うのが適切ですか。
スーパークラスの方か?
同じじゃないよ。スーパーかサブか、それによって回答は変わる。
どちらにしてもprivateは無い あとはスーパーのメソッド次第で選択肢が変わる とは言ってもpublicの場合、サブで選択はできんが
どっちも同じだろw
>>334 スーパーがprotectedならサブの方はpublicにできるよ
要件や設計方針によるだろ。 一概に「こっち」と言い切る方がおかしい。
確か。。 Superがprivateの場合はSubでオーバーライドしようとしても結局Superのメソッドが実行される。 それ以外のケースはSuperの可視性以上にする必要がある。 特にコンパイルエラーにはならないが、実行しても上書きされてないじゃなかったっけ。
すいませんが教えてください。 J2SE5.0をインストールしたのですが、binフォルダにjavacがありません。 間違ったインストールファイル使ったとは思いません。 なぜでしょう
>>338 SDK(JDK)じゃなくてJREをインストールしたんじゃないの?
>>339 いや、ものの本についてた「jdk-1_5_0-windows-i586.exe」をインストールしました。
オブジェクト指向が難しくて覚えられんくて困ってます。 何かいいサイトないですか?日本語で。
>>338 jreのディレクトリのほう見てるんじゃないの?
すみません・・・インストールでちょっとミスってました。 解決しますた。 スレ汚しすまそ。
>>302 自演java厨?
java厨のフリをした他言語厨?
>>343 どこをどうミスってどう直したら直ったとか書いとくと後の人のためにもなるのになーとか思った。
>>345 はずかしくて・・・
デフォルトのインストールフォルダではなく、違うインストールフォルダにインスコしたときに
JDKとJREを同じところにインスコしてしまもjg;さmじょあjbg;あj
>>346 ん?同じ場所にインスコしたらダメなの?
そういえば俺も1回目おかしかった・・・2回目はいけたけど。
>>346 きっとそうだろうと思ったw
5.0になってJREのインストール先も選べるようになったからね。
349 :
309 :05/02/20 23:44:29
>>324 どうもです。
1.
>Beanのうち、自分で作成するのではなく、初めから予めインターフェースなど
>で使用が決まっているものをEnterpriseって言うのですか?
違うのですね・・・。
>EJBはEJBコンテナ上でしか動作しない
>呼び出し側とは別VM上(別ホスト上)でも動作可能
なるほど。
>EJBコンテナの機能で分散配置、分散トランザクション、
宣言型トランザクションなどの機能を利用可能
よく分かりません。勉強します。
ありがとうございました。
>>337 もしprivateでもオーバライドされるんだったら下手にメソッドを作れないから怖すぎる。
外部からは見えてないのに、サブクラスで何かメソッド作ったら挙動が変わるなんて
冷静に考えてもそんな仕様にするわけがないだろ。
>>337 ただの暗記の場合は、こんなあいまいな理解になってしまう。
tigerから、JFrameで getContentPane().add() しなくてよくなったんだね。 知らんかった。
ほんとだ。以下引用。 便宜上、add とその派生メソッド、remove および setLayout は、必要に応じて contentPane に転送されるようにオーバーライドされています。つまり、次のように記述できます。 frame.add(child);
どっちでも良くなったとして、どっちにすべきなんだろう? frame.getContentPane().add frame.add API的には、frame.addの方がAWTと同じ使い方になるから、こっち使うべき?
調べ方も暗記も得意な奴 >>>>> [越えられない壁] >>>>>> 調べ方を知ってる奴 >> 暗記しか出来ない奴 ↑大半のSE
>>355 どっちでも同じでしょ。
パフォーマンスに影響出るとも思えんし。
ソース見たら、remove() は1.4から大丈夫みたい。2度びっくり。
frame.getContentPane().add(child); としなければならない1,4系等に、 ソースを持っていく事が、これから先本当に無いなら、frame.add でも いいんだろうけどね。 あと、2chに書き込んだり、相手がどのバージョン使ってるかわからん 場合は、当然 frame.getContentPane().add(child); と書いたほうが、 「それ、動かなかったよ」「ああ、うちは tiger だから」みたいな無駄な やり取りが無くて済むかも。
おっしゃるとおり。 質問スレ汚しすまんでした。
NetBeans IDE 4.0を導入したんですが メモリ使用が怪しくて動作が何度も構築と実行を繰り返していると PCが異常に重くなっていきます。 「java.lang.OutOfMemoryError: Java heap space」などの表示もでます。 これはNetBeansの問題ではないのでしょうか?
362 :
デフォルトの名無しさん :05/02/21 04:47:42
無職のまま30才くらいになると、一生学生気分が抜けないらしい。 社会人としては既に終わってるね。
社会人として終わっても人間として終わらなければOK。 人生なんて結果論。
364 :
デフォルトの名無しさん :05/02/21 08:52:51
Javaからコンソールに何か出力するときって、 System.outとか使いますよね。 この出力に、色を付ける方法ってないですか? 自前でStream書いて置き換えればできます? それと…コンソールのTitle部分を変更することってできます? 教えてエロイ人…
漏れ、今情報のテスト中。 住人たちに問いたい。 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 大きさ比べ A=□B=□C=□ #□←テキストボックス ┌--------┐ 大きい順に│並び替え│#←スイッチ └--------┘ □>□>□ になる 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 次の数列を第10項まであらわせ 4,9,14,19,24,29,34,49,44,49 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 2つ目はただテキストで書くだけじゃだめだぞ。 スマソ オレニハ ジカンガナイ…
激しくずれたorz
>>364 それはコンソールの設定による。Javaとは関係ないよ
>>366 すまん。ずれてはいるがあの図のようなHTMLファイルを
Javaをつかって表せという問題なんだ。
>>368 むむ。
Javaからコードで変更かけたいんですよ。
たとえば…
System.out.println("エラー");
っていう表示の部分だけ、赤にして、
以降はまた白に戻すとか。
Titleに、稼働中のclass名を表示とか。
やっぱ無理なのかなぁ。
JNIでCを経由して、Win32APIで、とかだとできるかもしれないけど…
あまり面倒な方向に行かずに、Java内部で完結させたいんですよ。
>>369 ズレは自分で修正してください
public class Test{
public static void main(java.lang.String args[]){
System.out.println("<HTML><BODY><PRE>");
System.out.println("大きさ比べ");
System.out.println("");
System.out.println("A=□B=□C=□ #□←テキストボックス");
System.out.println(" ┌--------┐");
System.out.println("大きい順に│並び替え│#←スイッチ");
System.out.println(" └--------┘");
System.out.println("");
System.out.println("□>□>□ になる");
System.out.println("</PRE></BODY></HTML>");
}
}
373 :
デフォルトの名無しさん :05/02/21 11:06:15
間違えた。374じゃなくて370だ。
>>371 助かったよ、ありがとう!
これでなんとか合格点とれそうだ。
>>375 Win32っていってるから、それだと
コマンドプロンプト(NT系)だと使えないよ。
ansi.sysはcommand.comからしか使えないし。
しかしSystem.outへの出力をカラー化するのは、Javaの問題と言うよりは
出力先(コンソール?)の仕組みと言うか仕様の問題じゃないのか。
>>370 のように、出力先がVT100ならVT100の仕様に合わせて出力すれば
カラーになるんだし、出力先がカラー化不可能なものならどうガンバったって
無理だろ。
そうだよ
JNIを使って SetConsoleTextAttribute() を呼び出す
うるおぼえだが cygwin 使って出来なかったっけ?
そもそもcygwinならエスケープシーケンスOK
いっそのこと、Javaでコンソールを実装してしまうという荒技もある。 BeanShellなんか参考になるんでない?
383 :
デフォルトの名無しさん :05/02/22 02:52:52
<?xml version="1.0" encoding="Shift_JIS" ?> <data> <item> <no>1</no> <lang>日本語</lang> <message>こんにちわ 世界</message> </item> <item> <no>2</no> <lang>英語</lang> <message>Hello World</message> </item> </data> というxmlファイルがあった時 <data>〜</data>の中身だけ抜き出してStringなどに代入する方法とかありますでしょうか? 一行ずつ読み込むと一番上の行とか制御が難しく
DOM 使え
385 :
デフォルトの名無しさん :05/02/22 03:00:00
>>383 DOMやSAXの話でなく、ただStringとして扱うなら
String source = ファイルから読む処理。
Matcher mat = Pattern.compile("<data>(.+)</data>").matcher(source);
String content = mat.group(1);
とするとか。。。
386 :
デフォルトの名無しさん :05/02/22 03:04:51
>>384 DOMとかってXMLの内容を読み込んで設定云々ではなく
ただXMLファイルの中に書かれてるのを何もいじらずに
そのまま表示することって出来るのでしょうか?
ググったりしたのですが
どうもよくわからなかったのですが・・・
388 :
デフォルトの名無しさん :05/02/22 04:02:39
すいませんそちらのサイトの例だと <message>Hello World</message> ↓ Hello World みたいにタグが読み込まれてしまうようです また Document doc = builder.parse(new File("helloworld.xml")); でxmlファイルを取得した後 Element root = doc.getDocumentElement(); の部分でAPIなどを見てもタグの中身を抜き取って表示させる メソッドみたいなものが少し見つからなかったですが もし、違う方法があるのなら教えてください
煽り莫迦が来て荒れる前に、やりたいことをもっと具体的に書き込んだ方が良いと思うよ。
<data>〜</data> までの間を何の解釈も処理もなくそのまま文字列として取得したいのなら、
一回ファイルを全部 String として読み込んで
>>385 の方法で出来るんじゃない?
とあるデータファイルを分解しようとしています。 ファイルの先頭がD2PACKFILEで始まる圧縮ファイルで、 その中にテキストファイルが埋め込まれてるようなんですが・・・。
板違いの臭いがする
393 :
デフォルトの名無しさん :05/02/22 11:21:50
xmlは文書じゃなくて、データ構造だからね。。。 タグの中身をそのまま取得したいってのは、言うなればBeanのソースコードを 取得したいってのと同じ意味だから、XMLの使い方自体を勘違いしてる としか思えない。
394 :
デフォルトの名無しさん :05/02/22 12:00:28
JavaMail関連のお薦めの書籍を教えてください 雑誌記事でも構いません
>>393 まぁ要件を聞かずにそう断定してもしょうがない。
初めまして.現在,「スモールコンパイラの制作で学ぶプログラムのしくみ」という参考書を用いて学習を行っているのですが,
2 月末が期限として出された課題の中でどうしても解らない問題があり大変困っています.
皆さんのお力を貸していただきご教授いただけないでしょうか?
出されている課題の内容は, Java 言語で書かれたコンパイラの機能拡張が目的で,
"%"( 余りの計算 ) 機能を追加させたいのですが記述方法が解らず悩んでいます.
コンパイラのソースコードは,
http://book.gihyo.co.jp/s-com/ からダウンロードできるようになっております.
この本を読んだことがない方でも, 拡張方法のプログラムが解る方からの返信もお待ちしております.
public PacketReciever () { try { Socket = new DatagramSocket( Frame.PORT ); RecieveStream = new byte[Frame.MAXPACKETLENGTH]; Packet = new DatagramPacket( RecieveStream, Frame.MAXPACKETLENGTH); } catch (SocketException e){ System.err.println( "Cant't Create Recieve Sockets" ); System.exit(-1); } StoredPackets = new Vector(); } public PacketSender(UnitDataStreamStore uds, OrderStreamStore ods) { Uds = uds; Ods = ods; try { Socket = new DatagramSocket(); } catch( SocketException e ) { System.err.println( "Can't Create Send Socket." ); System.exit(-1); } }
UDPで通信したいためにデータを送るクラス、受け取るクラスを作りま した。上はその2つのコンストラクタです。 受け取るクラスはrunメソッドを持っていてデータが来るかどうかを見 張っているので、これで通信が可能と安易に思ったのですが、2番目に 呼び出す方にSocketErrorが出ます。 ソケットを二つ作れないのでしょうか?
>>399 原因がわからないときはe.printStackTrace();で原因を調べる
それでもわからなかったら、環境やそのprintStackTrace()の
出力を見せる。
それに変数名でSocketはやめたほうがいい
socketに変えておく
忘れてたけどソケットは2つ以上作れる。作れなかったらサーバーを作れないじゃないか
>>400 ありがとう。
java.net.BindException: Address already in use: Cannot bind
出ました。
Addressって指定したのはPort番号だけだからその事なんでしょうか?
>>402 printStackTraceでもっといろいろ出てただろう
どのメソッド内で、ソースのどこら辺で起きたとか
どこで起きてるかも分からないし、そこのソースが
無いと特定は難しい。
404 :
デフォルトの名無しさん :05/02/22 14:28:12
>>402 ポート番号、何番指定したんだ?
「既に使われてるから割り当て無理」って書いてあるだろ。
java.net.BindException: Address already in use: Cannot bind at java.net.PlainDatagramSocketImpl.bind(Native Method) at java.net.DatagramSocket.bind(Unknown Source) at java.net.DatagramSocket.<init>(Unknown Source) at java.net.DatagramSocket.<init>(Unknown Source) at java.net.DatagramSocket.<init>(Unknown Source)
ポート番号は、1001にしましたが、変えて1002にしたら落ちました (;´Д`)
407 :
デフォルトの名無しさん :05/02/22 15:18:40
落ちたってのはなんだよ? 10000番台以上のあいてそうなポート使うようにした方がいいぞ。
netstat -a
落ちたのは固まってjavavmがWindowsによって切られました。 なんかわかった気がします。 PacketSenderクラスがデータを送るときに、 DatagramPacket packet = new DatagramPacket( SendStream, SendStream.length,server, Frame.PORT ); とパケットを作ってるんですが、その前にコンストラクタが呼ばれた段階では、 sSocket = new DatagramSocket(); とInetAdressを指定していないので、localホストにバインドする事になり、 エラーが出るのでしょう。 送る相手のアドレス入れてみます。
10001〜10005のポート番号で試しました。 10001はエラー その他は落ちました_| ̄|○
失礼しました。_| ̄|○ UDP通信始める前に、TCP通信をしているんですが、作ったソケットを全て closeしてないために起こるエラーでした。 私の予測は全く関係ありませんでした…
413 :
デフォルトの名無しさん :05/02/22 17:33:21
191の書き込みに近いものがあるのですが、 appletでシリアルポートたたいたり印刷をしたりしなければならなくなりました。 当然セキュリティの関係で普通ならできないのですが、 「署名付のapplet」 なるものなら何とかなりそうだ。というところまで調べはつきました。 しかし、JVMのバージョンが古いものしか使えないような情報ばかりです。 いま、サンプルコードをでっち上げてテストしようとしているところなのですが、 そもそもJVM1.4以降などのappletでそんなことが可能なのでしょうか? 今回の開発では閉じられた環境の中で使用するものという条件付ですので、 セキュリティそのものの是非についてはおいといて、可能かどうかご存知の方が いらっしゃいましたら教えていただけないでしょうか。
JAVAってEXE形式ファイルで書き出せるんですか、本当に初心な質問ですみません。
>>414 OutputStream out = new FileOutputStream("hoge.exe");
out.write(......);
out.close();
とかすれば書き出せるよ。って事でなくて?
>>414 書き出せます。過去に何度か同様の質問に回答しました。
具体的な方法については過去ログを参照してください。
お絵描き掲示板におえかきができなくなったので、友人に「javaをインスコしろ」 っていわれたんですが、この場合どのバージョンをインればよいのでストすしょうか?
>>417 情報が不充分です。「javaをインスコしろ」と言った友人に聞いてください。
420 :
デフォルトの名無しさん :05/02/22 19:11:51
質問です。 Java Web Start って、従来型のアプレットのように html(ブラウザ)に張り付いて動作させるっていう使い方もできるんですか?
>>413 んーと、Webサーバとクライアントブラウザが別々のマシンなの?
別々のマシンだとして、叩こうとしているシリアルポートは
サーバマシンなの?クライアントマシンなの?
サーバマシンならばHORBなどの分散処理を上手く使えば可能。
クライアントマシンならば不可能・・・だと思う。
もしできてしまったらとっても危険。悪意のあるサイトを閲覧しただけで
HDDをフォーマットされたりしちゃうからね。だから仕様上できない。
おいらが知ってる方法はActiveXくらいかな?あれなら署名付き
じゃなくてもクライアントが許可すればローカルマシンを操作できちゃう。
署名付きappletってのは本当にJavaAppletなの?
話は逸れるけれど、古い情報ばかりというのはJava1.1という意味かな?
M$とSunがケンカした結果、デフォルトのWindowsのJVMは1.1相当しか
搭載されていない。だからアプレットはJava1.1で作る場合が多い。
>>423 > 署名のないアプレットはすべて、標準のアプレットセキュリティモデルで実行されます。
「標準のアプレットセキュリティモデル」って何か知ってるか? ドキュメントだけ読んで
分かった気になる典型的な莫迦だな。
今すぐ ${user.home}\.java.policy ファイルに
grant {
permission java.security.AllPermission;
};
と書き Yahoo! のトップページでも取ってくるアプレット書いて見れ。
AllPermissionはやめてくれ
まぁセキュリティより利便性っつー、一昔前のMicrosoftみたいな姿勢ならかまわんのでは?
アプレットは自動実行されるんだからそれがなんでもありは死ぬぞ
キーワードに脊椎反応しか出来ない奴は SE 辞めたほうが良いな。
昔に俺が開発に携わったシステムで
>>424 の方法使って
クライアントPCに接続されたカードリーダーでカードの情報引き出してをアプレット経由で
サーバーへ送信とかやってたな・・・
>425 普通に使うだろう。めんどくさいし。金融系のシステムでさえみたことあるわ
企業システム開発やってりゃ、アプレットで USB キー認証やカード認証、POS、電話連動、 クライアント PC のアセット環境アップデートなんて一度や二度は設計したことあるだろう。 Web デザイン専門や場末プログラマはどうか知らんが。 そもそも何のセキュリティ対策も無く一台のクライアントでイントラとインターネット兼用して いるような環境があるとしたらそっちの方が問題だな。
>>431 のような経験が全く無い俺が思ったことだけど、
クライアントのポリシーファイルいじるよりも、
署名付きでやったほうが、クライアント側の導入の手間がないから良いんじゃないの?
署名しても、各クライアントで作業が必要なんじゃないかな。 署名されていれば、なんでもかんでも信頼してしまうわけじゃないでしょ。
クライアント側のポリシーファイルをいちいち変更するというポリシーはおかしい
っつーかもともと署名されたものだけ信頼していれば良い状態なのに 全部信頼してしまう状態にしてしまうのは改悪以外のなにものでもないだろ
436 :
デフォルトの名無しさん :05/02/23 05:18:20
また、知ったかぶりのアホどうしで、バカなやりとりしてる。
イントラ業務作った事のない奴多いのかな。
えーと、質問です。 toolkitのgetDesktopPropertyを使えば タイトルバーの高さとかその他のOS側の情報を取得できる、 と、思うんですが、 肝心の指定すべきpropertyNameがわかりません。 プロパティ名と対応する情報の一覧とかどっかにありませんか?
>>438 タイトルバーの高さとかって java.awt.Container#getInsets() で取ってくるのでは?
StrutsTestCase For JUnitちゅーのを触ってみたんだが、 これのMockStrutsTestCaseだと、アクションサーブレットを継承して作った クラスのinit()は呼び出して貰えないんだろうか。 自分の記述がタコなのか、さっぱり初期化メソが呼び出して貰えなくてのう。 とりあえず、CactusStrutsTestCaseでも試して見ようかななんて思ってる俺ガイル。
441 :
デフォルトの名無しさん :05/02/23 09:59:38
Servletのinitメソッドは最初のサーブレット呼ばれたときに1度呼ばれるだけだろ。 つーか、strutsの場合、自分で作る初期化部分はpluginでやるべきじゃね?
> つーか、strutsの場合、自分で作る初期化部分はpluginでやるべきじゃね? プラグインがどこかもさっぱり理解してないんだが。 inアクションにそんな事書いてあったなぁ。 他人が作った物を引き継いでるもんで、もうね(・ω・) まぁ、俺が作っても大差ないぼこぼこプログラムになったとは思うんだけれども。 カキュタスはサーブレットをnewするような記述をどっかで見かけたから期待しつつ調査中。
>>439 仰るとおり、タイトルバーの高さならそれで取れますが、
他にも色々取れたら何かと便利ではと思い
質問した次第であります。
どうなんでしょ。
>>443 ↓こんなプログラムを作って desktopProperties を取り出してみたが空っぽの Map が
取れただけだったな。そもそもプロパティ名って環境依存だから公式発表無いんじゃないか。
import java.awt.*;
import java.lang.reflect.*;
import java.util.*;
public class a{
public static void main(String[] args) throws Exception{
Toolkit tk = Toolkit.getDefaultToolkit();
Field field = Toolkit.class.getDeclaredField("desktopProperties");
field.setAccessible(true);
Map desktopProperties = (Map)field.get(tk);
System.out.println(desktopProperties);
}
}
>>440 困ったらソース嫁。
今MockStrutsTestCaseのソース読んでたら、setUp()にこんなコードがあった。
if (actionServlet == null)
actionServlet = new ActionServlet();
つまりActionServletクラスで決め打ちになってて、
残念ながらweb.xmlを読みそこで指定されたクラスを使うような作りにはなってない様子。
一応、変数actionServletは、MockStrutsTestCaseのprotectedなインスタンス変数なので、
自前で初期化する余地はある。ガンガレ。
それから、ActionServlet#init(ServletConfig)は、
デフォルトの実装ではactionPerform()実行時に行われるみたい。これも注意。
読み違えてるかもしれんが、参考になれば。健闘を祈る。
446 :
デフォルトの名無しさん :05/02/23 13:32:43
413です。 署名付のappletで全て解決しました。 というのも、署名付のappletを信頼してしまうと、通常のローカルのアプリケーションと同じように ローカルリソースにアクセスできてしまいます。 もちろん通常のアプリケーションと同じように動いちゃいけないんでしょうが、お客さんがOKしているので あとは関係者に「責任者がOK」したっつ〜ことを連絡して、なんかあったらそいつのせいにしてねっていう 根回しだけしておきます。 ちなみにpolicyの問題は特にありませんでした。 もちろん全て駄々もれのpolicyなのである意味問題だらけですが(笑) みなさんご協力ありがとうございました。
>>445 ありがとん(・ω・)ガンガルよ。
ただいまカキュタス使おうとしてコネコネコネコネ。
日本語訳が進んでてありがたーいけど、それでも頭がパンクしそう。
>>437 クライアント数が少ないイントラなら、
「全クライアントのポリシーファイル設定」なんて大した労力じゃないんだろうね。
import java.util.Hashtable; class HashtableTest { public static void main(String args[]) { Hashtable numbers = new Hashtable(); numbers.put("one", new Integer(1)); } } を javac -Xlint:unchecked HashtableTest.java すると、 警告: [unchecked] raw型 java.util.Hashtable のメンバとしての put(K,V) への無検査呼び出しです。 と出てくるのですが、どうしたら回避できますか?
>>449 ソースを変えずに、
javac -source 1.4 -Xlint:unchecked HashtableTest.java
とするか、あるいは、ソースを、
Hashtable<String, Integer> numbers = new Hashtable<String, Integer>();
みたく変える。
451 :
デフォルトの名無しさん :05/02/23 20:10:34
javacの使い方でつまずいてます クラスパスには全てJARファイルがあります。 set clspath=c:\lib //JARファイルのパス それで javac -classpath %clspath% source.java がコンパイルできないのですが、どうするのでつか?
set clspath=c:\lib\*.jar
>>451 クラスパスは、クラスの置いてあるフォルダを指定するか、
JARファイルのパスを指定するかのどちらかです。
○ JARファイルのパスを指定する。(複数ある場合はセミコロン区切りで)
○ クラスの置いてあるフォルダを指定する。(パッケージ考慮して)
× JARファイルを置いてあるフォルダを指定する
>>362 おまえ、社会人入学した30代以降の大学院生に対して失礼だぞ。
現役でも博士課程は30ちかくなるしな。オーバードクターで30超えることもある
>>394 J2EE本がいいと思われ。
昔、JavaMail完全解説という本があったが使えなかった。
Apache James本もいいぞ。
JavaMailつかいたかったらネットでサンプルコードをみたほうが速いぞ
>>455 おまえ読解力無いな。
>>362 はそういうことは言ってないと思うが。
卒業したのにいつまでも学生気分に浸っているから人生終わってるって言われるんだよ。
java.nioに関してサンプルコードがある解説ページってないですか? 知る限りだと、Sunのサイトと洋書のJava Nioしかないみたいです。
nioか。櫻庭さんとこはどうよ?
>>459 みつけました<変わったハンドルの人で助かったw
ノンブロッキングのサンプルもゲットしたんで、とりあえず動かして
ちょっと変えて動かしての繰り返しで頑張ってみます。
ありがとうございました。
interface内でbooleanメソッド「A()」を定義した場合、 その実装クラスで「A()」の実装(宣言すら)をしなくても コンパイルエラーにならないのは何でですか? intメソッドにすると実装しろって怒られるんですが。。。
>>461 可能性1:
その実装クラスでは直接 A() を宣言してないけれど、
実装クラスの上位クラスで A() を宣言している。
結果として、実装クラスには継承されたメンバとして A() がある。
可能性2:
そのインタフェースの実装クラスが abstract クラスである。
まだあるかなぁ……。
# 大文字で始まるメソッド名キモイ。
現在とあるWebサービスの設計をしております。 環境はRedHat+Apache+Tomcat+JavaServlet+JSPのような構成を考えております。 要求仕様として、下記の内容があがっています。 ・サイト登録ユーザAとサイト登録ユーザBとの間でメールとファイル交換が可能 ・両ユーザは互いに相手のメールアドレス等の情報は非公開 ・メールの件名や本文などはサイト側にログとして残す ・ファイル交換用のファイルはサーバに一時的に保存される ・アップロードするファイルの制限サイズは少なくとも500MByte ・専用のクライアントアプリ等は作らない方向で というようなものです。 簡単にやろうと思えば、Web上からのプライベートメッセージ&アップローダになると思うのですが、 サイト登録者にメールサーバ及びFTPサーバのアカウントを自動的に発行するのが、 仕組み上スマートではないかとの話があがっております。 上記を踏まえた上で質問させてください。 ・メールサーバ及びFTPサーバのアカウントをServletから自動発行する事は現実的か? ・レンタルサーバ等でも可能か? ・それを行った場合の注意事項や制限事項 ・HTTPでのファイルアップロードの場合文頭に挙げた環境でファイルサイズの制限等がかかるのか ・制限がかかる場合の対処法 ・制限がかかる場合にレンタルサーバ等で対処できるか お分かりになる方いらっしゃいましたらご教授お願い致します。
>>448 ちゃうちゃう、JDK や業務ソフトや運用ソフトのセットアップしてマシン配布するだろ、って意味。
ヨドバシで買ってきたようなパソコンを勝手にイントラにつなげて業務できるようなセキュリティ
グズグズのイントラなんてありえん。
>>464 銀行系は業務ソフトセットアップ済みのマシン配布するとか言うのは分かるが
だからと言ってセキュリティポリシーを
>>424 のようにして良い訳が無い。
補足: 別に署名を否定しているわけではないので。
>>463 それのどこがWebサービス?
「Webサービス」と「Web上で提供するサービス」を混同してないか?
>>465 当たり前だ、どのリソースへの権限を与えるかなんてここで想定できないだろ。
誰が元の質問者の本番システムの設定を
>>424 の通りに書けなんて言ってる。
出来るか出来ないかの話。
>>467 webサービス=SOAPと混同していないか?
>>464 ヨソの仕事は知らないんですが、
「JDK や業務ソフトや運用ソフトのセットアップしてマシン配布」
しないイントラってありえないものなんですか…?
ウチはそこまでセットアップして配布なんてめったにないよ。
ウチの仕事が小規模なんだろうな。。。
>>470 すまん表現が悪かった。単にイントラというとファイルサーバ+簡単な Web/DB アプリくらいで済む
ものも含まれてしまうな。閉じたネットワークで専用端末使って顧客・契約情報扱うような、昔の
オンラインシステムのようなものだよ。
>>471 まさに、「ヨドバシで買ってきたようなパソコンを勝手にイントラにつなげて業務」できちゃうよ?
言い換えれば、セットアップが簡単なのさ!
>>469 467 じゃないけど、サーブレットや JSP が HTML 吐いてブラウザで表示させる類のものは
Web サービスとは呼ばないよ。
> ・メールサーバ及びFTPサーバのアカウントをServletから自動発行する事は現実的か?
サーブレットでアカウント管理用シェルを叩くのはたまにやる。前のプロジェクトの CVS
サーバをそれでやったし。
> ・レンタルサーバ等でも可能か?
root 権限がもらえる契約なら可能じゃない? レン鯖使ったことないから契約上
どう運用すれば良いか知らんけど。
> ・それを行った場合の注意事項や制限事項
サーブレットからシェルを起動するセキュリティに関してはいろいろあるから
自分で調べろ。特に、入力値をそのまま文字列連結してシェルとして起動する
のは危険極まりないから止めるように。
> ・HTTPでのファイルアップロードの場合文頭に挙げた環境でファイルサイズの制限等がかかるのか
1リクエストの制限サイズは Apache の設定で変更可能。
> ・制限がかかる場合の対処法
設定変えれ。
> ・制限がかかる場合にレンタルサーバ等で対処できるか
Apache の設定を変更する権限があるなら。root 持ってるならとりあえずOK。
>>472 それはそれでシステム設計としては理想的だから否定する気はないんだけど、出所の
分からないマシンを勝手に繋げられるというのを嫌う客は結構居るよ。台数足りないから
って家のノート PC 持ってきたらウィルス入ってたとか、P2P ソフトが裏で何か怪しいことを
やってたとか、プレインストールソフトが一生懸命どこかと通信しようとしてたとか、基幹
に繋がっているマシンが同時に AirH" でインターネットに剥き出し状態になってるとか。
特に金融関係でそんな運用してて金融庁の監査で発覚したらエラいことになる。
電子署名のCAへの問い合わせを閉じたイントラネットでどうやってるのか聞きたい。
接続先に制限を掛ければ済む話だが
閉じてねぇじゃんw
電子署名のために業務システムに穴を開けようとする SE が居る件について
OK ボタン押すといきなり AllPermission になる電子署名よりアクセス制御を細かく出来る セキュリティポリシーの方が安全だよ。
何だか難しい話の最中に申し訳ない。 自分で作ったクラスをrt.jarを弄らずに既存のクラスパッケージにぶち込む事って出来ますか? GridLayoutを継承したクラスが必要になったんですが、 Componentで使ってる変数がパッケージ外からだと使えんと言われたもんで。
>>480 その必要な変数に対する getter って無いのか? 変数名を挙げてみ。
>>479 だれがそのポリシーを管理するかだよね。アプレットの外注先
がサンプルで添付したポリシーファイルを中身読まないでクライアントに
追加させるダメダメ情シスって結構おおいよ。結果的にポリシーまで
アプレットの作成側に任せる(よく言えば信頼している)ことになるなら、
配布の手間が省けるぶん署名付アプレットのほうがましじゃんって
思うけど、めんどいから黙ってる。
「どうせ AllPermission 権限が必要なら署名にした方が楽」って話ならそうだけど、 話の前提を特殊ケース (ダメダメ情シス) に合わせるのは間違いと思われ。という 漏れも詳しくないんだけど、正式に電子署名を取得するのって VeriSign みたいな CA と契約(?)する必要があるんじゃない? なんかそっちの方が客的にめんどくさそう (´・ω・`)
ところでさ、AppletでなくてJavaWebStartじゃだめなん?
>>485 出来るならそっちの方が楽でしょ。アプリケーションに必要な権限も JNLP に記述できるし。
ただブラウザベースの Web アプリと連携やセッション情報共有しなきゃいけない場合は
アプレットじゃないとだめだね。
>>484 よく出てくる話だけど、テスト証明書で済ませちゃうっていうのはダメ?
良くないのは、分かってるんだけど。
しょぼいイントラのために、VeriSignまで申請するのはめんどくさいので、
小規模なイントラならテスト証明書もありかなぁーなんて思ってるんですが。やっぱダメ?
要クライアントセットアップだけは嫌なんだな。
WebStartもアプリケーションだけじゃなくてアプレットつかえるんだけどな あんまいみはないが
489 :
デフォルトの名無しさん :05/02/24 10:34:21
>>487 金と運用と使い勝手に絡むからダメかどうかは客が決めるでしょ。設計屋は選択肢を出すだけ。
1. CA に金払ってイントラから外部に繋がる穴を開ける
2. テスト証明書を使って毎回出る「この証明書は〜」ダイアログをガマンする (毎回出るんだっけ?)
3. ポリシー設定してクライアントに配布
大抵の客はイントラなら 2 か 3 だな。買って来た PC 繋げればそのまま使えるのが売りの
システムなら 2 だし、JRE 以外のアプリのインスコや配信が確立されてるなら 3 だし。
1 を選択するのはインターネット上で不特定多数に使わせる場合だけだと思う。
まぁ、初回だけテスト証明書使った AllPermission アプレットでセキュリティポリシーファイル
書き換えるという手もあるが。
>>491 それは結局端末セットアップが必要という話ではないのか。
493 :
デフォルトの名無しさん :05/02/24 11:37:26
JAVA初心者です。質問させてください。 1つのappletの中でCheckboxとChoiceは一緒には使えないのでしょうか? 使えるのならどうしたらよいか教えてください。
>>493 使えます。むしろ使えないと判断した理由を教えてください。
public class A extends Applet{
public void init(){
this.add(new Choice());
this.add(new Checkbox("orz"));
}
} // 超適当、これはもうコンパイルできるかもわからんね
495 :
デフォルトの名無しさん :05/02/24 11:45:04
レスありがとうございます。 ItemStateChangedのイベントのなかで両方を書くエラーが発生して、 片方だけにするとエラーなしなんです。
496 :
デフォルトの名無しさん :05/02/24 12:02:03
497 :
デフォルトの名無しさん :05/02/24 12:03:28
>>468 >>473 ご返答ありがとうございます。
Webサービスという言葉が誤解を招く表現だったようで申し訳ありません。
(このようなサービスの一般的な総称のようなものはあるのでしょうか?)
>>サーブレットでアカウント管理用シェルを叩くのはたまにやる。
>前のプロジェクトの CVSサーバをそれでやったし。
メールサーバやFTPサーバも同様の方法でできそうですね。
Sendmail(qmail)やImageMagicを叩いたりしたことはあったのですが、
別サーバのアカウント管理も気をつければ問題はなさそうですね。
また、root権限がないと今回の仕様は完全に実装できない事がわかりました。
この場合のroot権限というのはどのようなものを指すのでしょうか?
・サーバの管理者(もしくはそれに近い)権限
・ユーザ権限
・プログラムがotherではなくユーザ権限で動作する
つたない質問内容ですみません。
今まで頼り切っていたサーバ管理者さんと離れてしまい、知識とノウハウが殆どない状況です。
>>サーブレットからシェルを起動するセキュリティに関してはいろいろあるから>自分で調べろ。
>特に、入力値をそのまま文字列連結してシェルとして起動する>のは危険極まりないから止めるように。
了解しました。シェルに関する問題があった際の被害は想像を絶する規模だと自覚しておりますので、
セキュリティに関して入念に調べておきたいと思います。
また、レンタルサーバ各社の仕様等も含め調査していきたいと思います。
ご回答ありがとうございました。
>>491 テスト証明書でも、CAの証明書でもダイアログはどっちも出るよ。文言が違うけど。
#署名してあるだけでイキナリ実行はあり得ない。
テスト証明書:
「このコードをインストールおよび実行しないことを強くお勧めします」とか
CA:
「〜はこの内容が安全であることを表明しています。〜による表明を信頼する場合にのみ・・・」
あと、どちらも以後信頼して、ダイアログを出さないようにはできるので、
>>490 の1.と2.の違いは、ユーザの操作から見たら最初の違いだけ。
>あと、どちらも以後信頼して、ダイアログを出さないようにはできるので、 ごめん、この辺は、Plug-inのバージョンとか、Java Web Startだったりで多少違うかも。 不確かな情報でした。
>>490 >大抵の客はイントラなら 2 か 3 だな。買って来た PC 繋げればそのまま使えるのが売りの
>システムなら 2 だし、
やっぱりそれもアリですよね
ひろみちゅ からは怒られそうだけど。
>>495 第三者にも状況が伝わる日本語でおながいします
>>497 root 権限=サーバの管理者権限。つか、それがなければ FTP 鯖立てたりアカウント
追加なんて出来ないだろ。
>>500 普通、客なら「テスト証明書」なんて怪しげなものを嫌がって 2 が選択肢から外れる
のが多いけどな。
>>498 の「このコードをインストールおよび実行しないことを強く
お勧めします」なんてダイアログを利用者に出すくらいなら、「このファイルをここに
置け」って通達する方を選ぶ。どうせ JRE のインストールとか手順としてまとめるんだし。
無印 JavaHouse が Brewers と合併してからひろみちゅんとこは閑古鳥だな。
最近ずっと沈黙してないか。
>>497 root権限を知らないやつが、Web上でアカウント管理シェルを実行する
システムを設計するなんて、怖すぎやしないか?
>>502 ユーザ権限とか other とか理解してるみたいから、単に確認とちがうか。
じゃあ以降放置決定
505 :
デフォルトの名無しさん :05/02/24 14:27:04
JAVAド素人です。 大変くだらない問いかけで申し訳ないのですが、質問させて下さい。 JAVAプログラミングの参考書を見て勉強中なのですが、 コントロールパネルを使った環境変数の設定方法について教えてください。 当方のOSはWindows Meなのですが、 コントロールパネルを使って環境変数の登録をすることは、Meでは無理なのでしょうか? わからないながら調べたところによると、Windows Me は Config.sys を処理できないため、 環境変数を登録できない、というようなことが書いてありましたが、、、 まとめサイトを見ることができなかったので、質問してしまいました。 よろしくお願いします。
Me捨てる。これ基本あるね
UDP通信をしようとしています. 違うアプリケーションでパケットを送るSenderと受け取るRecieverは上手く 通信できました。 しかしそれらのコードを1つのアプリで包み、ユーザにSenderとRecieverを 選択させて同一マシンで通信しようとすると、後からSocketを作ろうとした ほうが、Socketを作れないみたいです。 この様なプログラムを制作するためには、アプリをSender、Recieverと2つ 作って置いて、その後コードを繋いで別機で実験というような方法を取るの でしょうか?
>>508 ゆとり教育世代?
第三者にも状況が分かるだけの国語を勉強してもう一度おこしください。
JavaのクラスからServletってどう呼び出すの? Linuxサーバ上でJavaを実行して別APサーバのServlet呼び出して動かしたい
>>512 URL クラスを使って HTTP で通信しる。
openStream() した後に入力ストリームからレスポンスを取り出せる。
iアプリ制作スレから誘導されました ネットワーク接続や記憶領域の書き込みのためにString←→byte配列の変換をしたいのですが、ビットシフトで出来るということは分かりましたが、どうコーディングすればよいか分かりません。 toStringなどメソッドを使う方法は見つかりましたが… 教えてください
>>515 ビットシフトは関係ないような気がする。
String → byte[] するには、getBytes() メソッド、あるいは、getBytes(String enc) メソッドを使い、
byte[] → String するには、String クラスのコンストラクタを使うとよいと思う。
以下、例。(例外処理は端折り気味)
public class Main {
public static void main(String[] args) throws java.io.UnsupportedEncodingException {
String org = "テスト文字列";
byte[] byteArr;
// 文字列 org をプラットフォームのデフォルト文字エンコーディングに従ってバイト配列に変換
byteArr = org.getBytes();
hexPrint(byteArr);
// 文字列 org を SJIS のバイト配列に変換
byteArr = org.getBytes("SJIS");
hexPrint(byteArr);
// 文字列 org を UTF-8 のバイト配列に変換
byteArr = org.getBytes("UTF-8");
hexPrint(byteArr);
// UTF-8 のバイト配列を文字列に直す
String str = new String(byteArr, "UTF-8");
System.out.println(str);
// UTF-8 のバイト配列を無理やり SJIS として文字列にしてみる
str = new String(byteArr, "SJIS");
System.out.println(str);
}
// 16進数で表示するメソッド public static void hexPrint(byte[] byteArr) { for (int i=0; i<byteArr.length; i++) { int val = byteArr[i] < 0 ? byteArr[i] + 0x100 : byteArr[i]; System.out.print(Integer.toHexString(val) + " "); } System.out.println(); } }
518 :
505 :05/02/24 23:25:19
JSPオブジェクトのAPIレファレンスってありますか?
>>519 request → javax.servlet.http.HttpServletRequest
response → javax.servlet.http.HttpServletResponse
application → javax.servlet.ServletContext
session → javax.servlet.http.HttpSession
JSP オブジェクトって何?
うほ、こんなにたくさん。有難うございました もう少しsunのサイトにも目を通しておきます
526 :
デフォルトの名無しさん :05/02/25 15:15:41
>>525 そのサーブレット、ブラウザで行ったときは、ちゃんと実行できるのか?
うん
>>525 例外がでてなければ
その続きが知りたい
>528 Javaクラスは正常終了。 でたらめなURLを入れると例外が出ることを考えると、 どうやらコネクション自体は正常に張れてるらしい。 問題はそこからでServlet内のメソッド内でSystem.outと ログ出力やってるんだがさっぱり出力されない。 ブラウザからURL直指定するとちゃんと出るんだけど。 WebLogicのaccess.logを見るにその時はちゃんとアクセスログ出てるし。 さぱーりわからん。 doGetが呼ばれるんとちゃうのかな?
>>528 出力ストリームをクローズしてないとか?
あと、HttpURLConnectionを使えばgetRequestMethodでPOSTかどうか
確認できるけどね
>530 HttpURLConnection使ったら行けたっぽい!! 問題はまだイパーイあるけど後は自力で調べます。 どうもありがとー
プロトコル理解してなかったのか・・・
無理だと思って、質問したことすら忘れてた
>>370 です。w
>意見を下さった皆様
ありがとうございました。
とりあえず、モノは趣味で組んでるものなので、
ここはあえて、javaw起動のjava製疑似コンソールで行ってみようかと思います。
最初からある程度出力の切替を想定して、
一番基底のクラスで一括してコンソール出力してたので、
GUIさえ立ててしまえば、それほど手間じゃないかもなぁと。
とりあえずお礼代わりに報告をば。
本当にありがとうございました。
>>525 もう解決したみたいだが、URL クラスや URLConnection クラスが実際に通信をするのは
URL#openStream()/URLConnection#getInputStream() で取得したストリームから最初の
1 バイトを取り出した時 (その他の条件でも発生するかも)。つまりクラスの使い方によって
通信が必要ないとみなされれば通信しないので注意。
Java初心者です。教えてください。 参照の実態はポインターなのに、「pointer」という言葉を使わず、 頑なに「reference」で通しているのに、なぜ例外の名前にだけ、 「pointer」を使うのですか ? これだけ例外なのですか?
例外だから
ぬるり より ぬるぽ のほうが良いだろ。それだけだ。
539 :
デフォルトの名無しさん :05/02/26 00:34:19
VEの勉強したいのですが、わかりやすいサイトもしくは本があれば教えてください。
頑なにreferenceで通してるかなあ。
>>536 参照は意外と難産の末に生まれてきたという歴史がある。
実態はポインターなんて言ったら参照の母ちゃんブチキレですよ?
ぬるり、これいいね! ぬめり具合がバグの性質を表している。
545 :
デフォルトの名無しさん :05/02/26 11:31:49
昔、C言語はポインターが難しいとかいいだす、極度のバカがいた。 そんなバカにも出来る言語をと、Javaからポインターという「言葉」が隠蔽された。
Javaのリファレンスは難しいw
あほか、勘違いするな。 Java に無いのはポインタじゃない。 ポインタ演算だ。
548 :
デフォルトの名無しさん :05/02/26 14:50:53
549 :
デフォルトの名無しさん :05/02/26 19:04:31
JavaアプリでXMLファイルを作成し、そのアプリからRuntime#execで wscript.exe jsファイル を呼び出しています。 jsファイルではOfficeのWord又はExcelのとあるファイルを開き、 対象のOfficeファイルのVBAを実行しています。 そのVBAの中で、先ほどJavaアプリで作成したXMLファイルを読み込みたいのですが、 エラーでできません。 エラー内容は "プロセスはファイルにアクセスできません。別のプロセスが使用中です。" というものです。 Javaアプリがその作成したXMLファイルを使用中、ということなのでしょうが、 どうしたら、そのXMLファイルからプロセスを解放できるのでしょうか? XMLファイルは TestFileMakerクラスのmakeメソッド内で、 java.io.File#createNewFileを呼び出して作成、 といった感じです。 WinXPProSP2、Eclipse3.0.1で開発しています。 よろしくお願いします。
550 :
デフォルトの名無しさん :05/02/26 19:41:39
>>549 javaで作ったファイルクローズしましょう
551 :
デフォルトの名無しさん :05/02/26 19:46:33
質問です リクエストをまたがってDBトランザクションを1つにすること可能でしょうか? 一回目のリクエストでbeginして 二回目のリクエストパラメータでCコミットするかロールバックするかを判断する と、いうようなことです
>>550 あう・・・。
できました。ありがとうございます。
>>551 できるよ。普通はそんなこと、しねーけどな。
楽観的ロックでググれ。
>>554 おまいとは開発対象としてる業務要件が違うのかもな。
俺は WebLogic、WebSphere、Tomcat で 10 以上の
Web システムを開発してきたが、リクエストをまたがるロックは
してないな。
リクエストをまたがる悲観的ロックが業務要件的に
必要なことはなかった。
>>551 一つ目のリクエストを投げて行ロックして、レスポンスが返ったあと、
二つ目のリクエストが来なかったらどうするんだ?
Image image = getImage(getDocumentBase() , getParameter("img")); PixelGrabber pg = new PixelGrabber(image , 0 , 0 , -1 , -1 , true); try { pg.grabPixels(); } catch (InterruptedException e) { } int px[] = (int[])pg.getPixels(); for(int index = 0 ; index < px.length ; index++) if (px[index] == ((255 << 24) | (255 << 16) | (255 << 8) | 255)) px[index] = (255 << 24); ImageProducer ip = new MemoryImageSource( pg.getWidth() , pg.getHeight() , px , 0 , pg.getWidth()); this.img = createImage(ip); これで画像の中の色が白いピクセルを黒に変換できる、らしいんですが 疑問1・for文のとこ、あれでなんで全部のピクセルをチェックできるの? 疑問2・255を左にシフトしてるけど24って・・・あふれてない? どうかご教授ねがいます!!
>>558 PixelGrabberを調べればその疑問は解決できる
即レス感謝です。 try { pg.grabPixels(); } で全部終わるまでし続けるわけですよね? それで疑問1は解決なんでしょうか?
>>561 どうも。黒をセットしようとしてるのはわかるんですが
255 << 24
これっていらなくないですか?馬鹿ですいません(・ω・` )
アルファ値が0だとどんな色でも透明になるよといってみるか
>>560 ちがうだろ。forで設定してるんだろ。
↓ピクセルがフルビット(白)なら
if (px[index] == ((255 << 24) | (255 << 16) | (255 << 8) | 255))
↓アルファ値だけ設定する(黒にする)
px[index] = (255 << 24);
え〜と・・今アルファ値を勉強してきました、がまだわかりません・・・OTL > ↓ピクセルがフルビット(白)なら >if (px[index] == ((255 << 24) | (255 << 16) | (255 << 8) | 255)) ”| ”ってORですよね?0xFF0000FFとか白じゃなくても真になりません? > ↓アルファ値だけ設定する(黒にする) >px[index] = (255 << 24); これは理解出来たかも。つまり0xFF000000をセットしてるわけですよね。
まずはbitを紙に書いてみよう
>>565 0xff000000 | 0x00ff0000 | 0x0000ff00 | 0x000000ff
↓
0xffffffff
>>567 うわ〜やっぱりそうなのか〜。それ一応考えたんだけど納得出来なかったんですよ。
でもこれでなんとか解決できそうです。レスしてくださった方々、ありがとうございました♪
納得云々以前に | は or ではない。|| なら or だがな。
bit演算のorだろ?
571 :
デフォルトの名無しさん :05/02/27 00:26:55
import java.awt.*; import java.awt.event.*; public class Color extends Frame{ public Color() { addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } public void paint(Graphics g) { g.setColor(Color.red); g.drawString("コメント",20,60); g.setColor(new Color(255,128,128)); g.drawString("コメント",20,80); } public static void main(String[] args) { Frame w = new Frame("Color"); w.show(); } } コンパイルするとエラーになります。どうしてですか?
あほか。
ダイアログでX、Y座標を入力させたいと思います X : [JTextField] Y : [JTextFiels] という感じにしたいのですが、この二行のコンポーネント(1行にJLabelとJTextFledなので合計4つ)を TitledBorder で囲みたいのですが、どうすればシンプル?に上手く出来るでしょうか? 現在は、JPanelをGridLayoutで(2, 2)に区切って、それを TitledBorderで囲っているのですが グリッドの大きさがテキストフィールドに合ってしまうので、どうもバランスが良くないのです。 どうすればもっと上手くレイアウトできますか?
>>573 GridLayout(Col=1, Row=2)の中に、JPanel2枚をFLowLayoutで置いて、
それぞれに、JLabelとJTextFieldを置く。
JPanel(GrindLayout) ←TitledBorder設定
JPanel(FlowLayout)
JLabel(X:)
JTextField
JPanel(FlowLayout)
JLabel(Y:)
JTextField
もしくはGridBagLayoutをつかう。
>>569 ,570
そもそもbooleanでも | は使えるけどね。
その場合はショートカットの無いor。
String の配列があり、これを ArrayList に入れたいのですが、 ArrayList のインスタンスを作ったあと、そこに配列の要素を1個ずつ、 add していくしかないのでしょうか。
>>576 Arrays.asList(Object[])
UTF8の日本語を含むiniファイルを操作出来るjava.util.Propertiesのようなクラスはありますか?
>576 java.util.Arrays.asList()
めっちゃ出遅れたorz
>580 一応 [section] key=value ;comment line てな感じでは。
>>579 ありがとうございます、まず調べてみますです。
>>580 既存のUTF8で書かれたiniファイルを変更したいので…。
java.util.Propertiesでは文字コードの指定が出来ないっぽくて困ってました。
>>579 って違うレスじゃん…orz
>>582 その通りです、仕様を自分で決めれるなら
J2SE5.0にしてProperties.storeToXML使ってみたかったです。
586 :
dahoi :05/02/27 02:34:53
class Sukashi { static BufferedImage Suka(){ File f = new File("kaiwo.jpg"); try { BufferedImage image = ImageIO.read(f); } catch (IOException ex) { ex.printStackTrace(); } return image; } public static void main(String args[]){ Suka suka = new Suka(); int gets = suka.image.getRGB(100,100); int r = (gets >> 16) &0x000000ff; int g = (gets >> 8) &0x000000ff; int b = (gets >> 0) &0x000000ff; System.out.println(r); System.out.println(g); System.out.println(b); } } ごめんなさい。。。 今自分でプログラム組んでるんですけど どうもうまく動かなくて。。。 よろしかったらどなたか教えていただけませんか?
何をだ
スカシっ屁
>>585 Sectionまで対応しててよさげなClassだったのですが、
文字コードの問題には触れていないので根本的解決にはならなかったようです。
私は
>>585 じゃないけど、ほんのちょっと変更かするだけで、
いろんな文字コードに対応できるとおもうんだけど。
そうは思わないかい?
>>589 どこに文字コードの問題があるんだ。
文字エンコーディングを指定するだけだろ。
>>590 >>592 申し訳ない、load methodがFileInputStream渡しかと思ったら
InputStreamReader渡しだったんですね。それなら文字コード指定出来ます。
しかしなんで書きのほうはPrintWriterなんだろう…。
Tomcat でServlet+JSPで開発をしたいのですが eclipseを使って開発するのが普通ですか?
595 :
デフォルトの名無しさん :05/02/27 15:09:30
import java.io.*; class monndai { public static void main(String args[]) throws IOException { System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readline(); int num = Integer.parseInt(str); System.out.println("あなたは"+ num +"です。"); } } をコンパイルすると monndai.java:11: シンボルを解決できません。 シンボル: メソッド readline () 場所 : java.io.BufferedReader の クラス String str = br.readline(); ^ と出ます。どう直せば動きますか?
br.readLine();
echo も可
>>597 など
いやいや、それはわかってるのですけど
昔は秀丸で開発してたんですけど
最近はどうなのかなと。eclipseなるものが
流行ってるみたいなのでどうかなと。
Javaは久しぶりなのでどうかなと。
その辺をよろしくです。
>>602 Eclipseスレで聞いたらEclipse使ってるという回答が返ってくる可能性が高いでしょう
>>600 にもあるけど、あなたが何をもって「普通」としているのかもわからないし
>>603 普通というのはまあ普通にシェアと思っていただければいいかと
Servlet+JSPの開発ツールで一番のシェアは?
ということになるような気がしないでもないです。
なんというか秀丸より開発しやすいのかなとeclipseは。 それとももっといいのがあったりするのかなと。 その辺どうよ?ってことです。
.netは開発しやすかったのでJavaに戻ってきて また秀丸じゃやだなーと。そんなわけです。
て言うか、そこそこの経験値持ってるならEclipseが普通に使えるはず。 先ず試してみようとなぜ考えないのか? VS.NETの影響で誤解してるのかもしれないけど、Eclipseは気に入ら なければアンインストールする事で綺麗さっぱり消えてなくなるよ? MSの開発ツールみたいに、入れたら最後もう元には戻らないという事 はない。
>>607 >て言うか、そこそこの経験値持ってるならEclipseが普通に使えるはず。
そこそこのマシンを持っていないので・・・
>>608 ごちゃごちゃ言わずに Eclipse 使え。
はっきり言って Java 出来ます、Eclipse 使えません
じゃ、開発者として話しにならん。
>>608 P3-600Mhz+440BX+384MB+Win98SEという環境だけど、起動するのに
1分くらい掛かるのと、EclipseUMLでクラス図の出力にちょいと待たされる
事があるくらいで、コーディング中に不快を感じた事はないな。
コンパイルもテストユニット単位で行うから全然問題ないし、マシンに対す
る要求は高くないと思うが?
あっと付け足し。 EclipseUMLでソース→クラス図というパターン自体が稀だから 普通はクラス図→ソースとなるわけで、通常使用時に関して言 えばEclipseUMLは普通に快適。
eclipseに標準でUML出力なんてあった?
え、他人のソース見るときはソースからクラス図つくるだろ?
標準じゃないけどって言うか、いい加減ググれ。 EclipseUMLと書いてるんだから、それをそのままキーにしてググれ。
>>613 頻度(ソース→クラス図という工程を繰り返す事はない)と状況(クラス図
生成の指示を出した後はソースを斜め読みしながら待つ)的に言って問
題ないと俺は判断する。
いやね。みんながeclipseを使ってるなら使うよ。 ありがと
strutsはあまり好きじゃないな
620 :
デフォルトの名無しさん :05/02/27 21:17:58
Interfaceの使い方について、よく判ってないんですけど、 Interfaceを実装したabstractクラス、それをextendsした基本クラス、さらにextendsした派生クラス っていうのと abstractクラスを省いて、Interfaceを実装した基本クラス、さらにextendsした派生クラス ってやるのとでは、 abstractクラスがあるのと無いので、こっちがこういう場合に都合が悪いとかありますか?
設計の思想次第だから一概には言えないが、、、 (その例なら無くても良い ボソ)
>>621 なくても良い、ってなんで分かるんだよ。w
一概には言えないってのには同意するが。
>>620 設計が完璧じゃない場合に、
「ここでAbstractなクラスを一段カマしてるけど、要らなくない?」とか、
「ここにAbstractなクラスを一段カマしたほうが、良くない?」ってことはあるかも。
>>622 Abstract クラスとその下の基本クラスが意味的に大切なレイヤーを築いてるなら良いんだけどね。
624 :
教えてください :05/02/27 22:26:29
素数を求めるプログラムを、メインプログラムに組み込みたいです。 メインのプログラムでは、素因数分解をするのですが その際に今の場合だと 単純に2から割っていってるので 時間がとてもかかってしまっています。 やらなくてはいけないことは 素数のプログラムをクラスライブラリ形式 にしてメインで呼べばいいというのは なんとなく分かるのですが 具体的にどうしたらいいのかわかりません。 よろしくおねがいします。
>>620 基本的にはアダプタクラスとして継承した基本クラスを提供して終わりにする場合
が多い(この場合は利便性のみを目的としたもので継承を強要しない)。
一方で、複数のブランチが見えてる場合に共通部分を括ったり、実装を特定の方
向へ導きたい時に抽象クラスを提供する場合もある。
ただし、全方位とか考えて無闇に利用してると、無駄に枝が伸びて何でも使えそう
でいて、実際には使う機会がないという事になりかねない。
インターフェイス
├アダプタ─実装クラス
├抽象クラスA─アダプタ─実装クラス
└抽象クラスB─アダプタ─実装クラス
一部の実装が必須か否か、空の実装を許容するか否か等を考慮して適時使い分
けるというのが模範的な解答になるのかな?
↑WindowListener に対する WindowAdapter のように「アダプタクラス」って言葉 使ってると思うんだけど、アダプタパターンを適用したクラスと思う人も多いから。
627 :
デフォルトの名無しさん :05/02/27 23:35:52
例えば下記の内容のようなファイルをJavaで読み込んで 出力させたい時に Name="〜"だけを抜き出した〜の内容だけ出力させるにはどうすればいいのでしょうか? 教えてください 下記の例だと aiueo kakikukeko abcde 12345 になります File aiueo Name="aiueo" age="10",Name="kakikukeko" Name="abcde" Name="12345",age="10" age="10"
>>627 宿題でなければその無駄に柔軟なファイルフォーマットをどうにかすべきだが。
BufferedReader in = new BufferedReader(new FileReader("aiueo"));
while(true){
String line = in.readLine();
if(line == null) break;
// ここで読み込んだ行を解析...
}
区切りの仕様がコンマだけなのか、ダブルクォート中にコンマが現れたら
どうエスケープされるのか等等、フォーマットの仕様が明らかにされないと続きは何とも。
629 :
デフォルトの名無しさん :05/02/27 23:55:54
>>628 ありがとうございます
順番はバラバラですが、区切りの使用はカンマだけです。
またダブルクォートの中にはハイフンやピリオドはありえますが
カンマはないです
この場合は StreamTokenizer に改行またはコンマをセパレータとして取り出した方が良いか。 取り出したトークンを等号で分割し、前が Name と等しいなら、後ろの文字列のダブルクォートを 取り外す。 後は自力で
>>624 私もjava初心者なので、クラスライブラリ形式というのが良くわかりませんが、
以下のようなメソッドではだめですか?
private static int[] getPrimeNumbers(int max){
if (max<2 || max>65535){
throw new IllegalArgumentException("かんべんしてね");
}
int [] temp=new int[max/2+1];
int index=0;
temp[index++]=2;
for (int i=3;i<=max;i+=2){
sex:{
for (int j=0;j<index;j++){
if (i%temp[j]==0){
break sex;
}
}
temp[index++]=i;
}
}
int[] ret=new int[index];
System.arraycopy(temp,0,ret,0,index);
return ret;
}
>>631 ためしに書いてみた。欲しかったら言ってね。使ってるJavaのVersionと。
それにしても、tiger(Java5.0) 便利。
今まで (1.4) だと、こんな風に書いていたのが、
for (int i=0; i<list.length; i++)
System.out.println(list[i]);
5.0 だと、これで済む。
for (String str : list)
System.out.println(str);
楽チン。
でも、ループの中で 別な要素(list[i+1])ってのにアクセスできないのよね。 大半のケースでは便利だと思うけど。
>>627 ほらよ。
import java.io.*;
import java.util.regex.*;
public class Example {
public static void main( String[] args) {
try {
String line;
Pattern pt = Pattern.compile( "Name=¥"(¥¥w+)¥"");
BufferedReader br = new BufferedReader( new FileReader( "test.txt"));
for( line = br.readLine(); line != null; line = br.readLine()) {
Matcher matcher = pt.matcher(line);
while( matcher.find()) {
String name = matcher.group(1);
if( name != null) {
System.out.println( name);
}
}
}
} catch( Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}
636 :
624 :05/02/28 01:46:17
>>632 さん
ありがとうございます。
実際にどうやったら実行できるのかもよくわかりません。。。
このプログラムでは、素数を計算して、
それをどうやって素因数分解の時にひっぱってくればいいのでしょうか。
>>609 うちのプロジェクトにはEclipse使いもEmacs使いもvi使いもいるけど、何も問題になってないよ。
ちなみに漏れはEmacs使い。
Eclipseは便利そうだね。
>>624 パッとしないロジックですみません。
mainでnumの素因数分解をするのであれば、mainメソッドの後ろに
>>632 のコードを書いて、mainで
int[] primeNumbers=getPrimeNumbers(num);
とすれば、n以下の素数の一覧が戻ってくるはずなのですが、
そういう意味ではなくて ?
キーボードイベントを監視するんじゃなくて、その逆にキーボードイベントを 発生させるのはどうやるのでしょうか? 例えばAというキーが押されたら、Bというキーが押されたというイベントを発生 させるメソッドでは、テキストエディタを開いてAと入力すると、ABと書かれることになる という事です。
メソッドでは、って何か日本語がおかしいですが、気にしないで下さい
public class testClass() { private int foo = 0; public void test(){ foo++; } } というようなtestClassというクラスを作り、 public class jikkou() { Map hm = new HashMap(); hm.put("a" , new testClass()); hm.put("b" , new testClass()); hm.put("c" , new testClass()); } というようにMapに格納していった場合、それぞれのtestClassオブジェクトの インスタンスメソッドを実行するにはどうしたらいいでしょうか?
Mapから値の集合valuesを取得。 イテレーターでループしながら、一つずつ要素を取得して、 キャストしてメソッドを呼ぶ
スクリーンのある領域と同じ大きさのBMP画像と比較して 領域とBMP画像が等しいか否かを実時間で返すメソッドを定義したいのですが、 どうすればいいでしょう? また、Javaは遅いといわれて来ましたが、このような処理は実時間で できるのでしょうか?(マシンスペックに依存するとは思いますが) javax.imageio.ImageIOを用いて、こんな感じになるのでしょうか…? File f = new File("foo.bmp"); BufferedImage bi = ImageIO.read(f); boolean hoge(BufferedImage bi, int x, int y) { //処理 }
毎回イメージ全体を比較する必要はない 左上の1ドットだけ比較して、違えばそこでやめる 同じなら次の1ドット比較して、違えばそこでやめる 以上繰り返す
時間はサイズによるな どうせこういうループはすぐにコンパイルされるから速度はCとかわらんよ 遅いと思ったら使い方が悪いはずだ
647 :
デフォルトの名無しさん :05/02/28 11:53:18
DirectX並の高速描画は可能ですか?
Java から OpenGL 使うライブラリもあるよ。
ものにはよるがアクセラレーションがきくようになってるよ 1.4.1からね WindowsならDirectDrawとかDirect3DとかGDIとか 5.0からOpenGLも使ってアクセラレーションできるようになってるけど 対応しているビデオチップがATIかnVIDIAだけなのでちと問題あり
>>647 ハードの進歩はすさまじいから、後数年もすれば充分実用的な速度になる。
JAVAって昔は遅すぎてウンコーみたいな扱いだったっけ
>>650 そういわれつづけて早10年・・・
まあ、Java5は早くなったと思うけどね。
アニメーションを表示するプログラムを作っておるのですが、少々質問があります。 例えば一秒間に一万回(極端ですが)の描写処理をするプログラムを作ったとしても、 表示しているディスプレイのリフレッシュレートが60だとしたら 結局画面上では一秒あたり60回しか更新はされず、残りの9940回はあんま意味無い、 という理解は合ってますか?
>>645-646 すいません、コーディングの例か関連するサイトなどを教えて貰えませんでしょうか?
Java 画像 比較 とかでググっているのですが、やり方が見つからなくて…。
>>651-652 JMFのMP3プラグインでアプレットから音楽mp3の再生してみたら
1GHzのCPUでも使いもんにならなかった。2GHz程度必要。orz
>>653 っつーか普通リフレッシュレートのタイミングに合わせてバッファに描画するだろ?
>>655 Mp3より負荷の高いOggVorbisが1GHzのマシンで負荷5%以下だぞ
>>643 キャストという発想がありませんでした、
アドバイスのお陰で参考になるサンプルをみつけられました。
ありがとうございます。
>>656 あ、そうなんですか。
何分この分野は不勉強なもので。いやいやお恥ずかしい。
660 :
デフォルトの名無しさん :05/02/28 22:14:09
Math.random()メソッドって、どういうふうに ランダムさ(?)を実現してるのですか?
そりゃ単なるソフトが物理乱数行ってたら怖いがな
>>660 APIリファレンスに線型合同法って書いてあったはずだが。
線型合同法を知らないんだったら、やっぱりAPIリファレンスに書いてあるけど、
クヌースの本でも買って読んでくれw
質問です 日付を求めるCalenderクラスを見つけましたが、時間を求めるにはどうすればよいですか? ちょうどPerlやPHPのtime関数のような感じのを探しています
Calendarは日付も時刻も入ってるけど?
swinで簡単なテキストエディタを作成したのですが、 メニューバー等のフォントを一括に設定する方法がわかりません。 全てのメニューのフォントをOsaka-UIの12ptに設定したいのですが、 MenuBarを司るクラスに以下の文を追加してもメニューバーの文字は変わってくれません。 JMenuBar.setFont(new java.awt.Font("Osaka-UI", java.awt.Font.PLAIN, 12)); メニューバーのアイテム一つ一つに hoge.setFont(new java.awt.Font("Osaka-UI", java.awt.Font.PLAIN, 12)); と書いていくしか無いのでしょうか? それとも一括でフォントを変更する方法があるのでしょうか? よろしくお願いします。
コンストラクタでフォントを設定する、JMenuとJxxxMenuItemのサブクラスを作って、 自分で使うメニュー類は全部そのサブクラスにしたらダメなの? ていうかsetFont一行がそんなに面倒かなぁ。
GUIエディタつかえ
669 :
デフォルトの名無しさん :05/03/01 00:20:38
SDKとJDKって何が違うの?とりあえずJDKインストールしたが・・・ 超初心者でスマソ
Java 2 SDK = JDK
671 :
デフォルトの名無しさん :05/03/01 00:28:39
VJ#.NETってJavaで書いたプログラムもコンパイルできるんですか?
673 :
デフォルトの名無しさん :05/03/01 00:30:40
674 :
デフォルトの名無しさん :05/03/01 00:51:17
家計簿ソフトをJAVAで作ろうと思っていますが、何からはじめていいか全くわかりません。環境は作りました。誰か教えてください。
>>674 家計簿ソフトなら市販のからフリーからいくらでもあるが、どうしても自分で作りたいのなら
まず Access で作ってみ。Java 使うのは Access だけじゃどうしても出来ないことが出て
きたらで良い。それでもというならとりあえず…
・GUI アプリを作ってみる
・ファイルの入出力を覚える
あたりからやってみたらどうだろうか。
>>661 >>662 >>663 ありがとうございます。
線形合同法という言葉初見でした。
調べてみます。
…線形計画法なら知ってますが、
全然関係ないですよね。…はい、すいません。
>>676 とりあえず、java.util.Randomクラスの説明を読むといいよ。
計算式も書いてあるから。
>>677 ありがとうございます!
発見しました。
が、む、難しい…
APIリファレンスってのは…
まともに読めるようになるまで
覚えることたくさんありそうですね。orz
読み進めるのに、いちいち言葉の意味をググってますが…
がんばります。
乱数生成が具体的にどういう原理に基づいてるか なんてのは、必ずしも理解する必要はないよ。 すくなくともAPIを身につけようとする段階で理解しても しょうがない。 なんか難しい計算をするとなぜかばらついた数列が できるのね、くらいにおもっとくだけでいい。
初心者です。教えてください。 CellRendererPaneをつかって、中にセルに相当するコンポーネントを 持たないコンテナ(JTreeを縦書きにしたようなやつ)を作りました。 このコンテナ内で、あるセルを別なセルの上にドラッグドロップします。 ターゲットのセルを知るためにドロップ時のマウス位置が必要です。 デフォルトのTransferHandler.SwingDropTarget を置き換えて、コンテナに 自前のDroptTarget を設定して、そのdrop(DropTargetDropEvent) メソッドのDropTargetDropEventgetLocation() でマウス位置を持ってきて とりあえず動いているのですが、これで問題ないでしょうか。
681 :
デフォルトの名無しさん :05/03/01 04:56:33
ものすごく基本的な質問をします 180という数字をファイルに保存して「B4 00 」となっている データのファイルを読み込みます。 読み込む際にbyte型のバッファに流し込んでshort型で 値を取得したいのですが上手く行きません… byte data[2]; short aaa; // dataデータを読み込む data[0] = B4; data[1] = 0; // aaaに180というshort型のデータを入れたい 宜しくお願いします…
>>681 short aaa; byte [] data = new byte[2]; ...;
aaa = (short)(data[1] & 0xff) << 8 + (data[0] & 0xff);
バイナリはEndianの影響があるから取り扱い注意。unsigned byteが欲しい今日この頃。
訂正 & より << の方が結合が強かったよ。 aaa = (short)(((data[0] & 0xff) << 8) + (data[1] & 0xff));
何度も訂正すまそ。チラシの(略・・とかAA張られそうだ。 << より + の方が結合が強いでした orz
ちゃんとチラシの裏でソースレビューしてこい
質問です。 SWTでGUIのアプリを作ろうとしています。 そこで、Textの入力欄が3つ(仮にtext1,text2,text3)あるんですが、 空欄があればメッセージダイアログで警告を出そうと思っています。 text1,text2,text3のそれぞれに警告のダイアログを出したいんですが、 どういう風に条件分岐すれば良いのでしょうか? 試しに書いてみたんですがうまく動かないみたいです・・・ 空欄があればその都度、どのテキストボックスが空欄なのか、警告を出したいのですが・・・ 根本的に間違ってます? getText1 = text1.getText(); getText2 = text2.getText(); getText3 = text3.getText(); if(getText1 == "") { Alert1 = new MessageBox(sShell,SWT.ICON_WARNING); Alert1.setText("警告"); Alert1.setMessage("Text1が空欄です"); Alert1.open(); return; } else if (getText2 == "") { Alert2 = new MessageBox(sShell,SWT.ICON_WARNING); Alert2.setText("警告"); Alert2.setMessage("Text2が空欄です"); return; } else if (getText3 == "") { Alert3 = new MessageBox(sShell,SWT.ICON_WARNING); Alert3.setText("警告"); Alert3.setMessage("Text3が空欄です!"); return; } よろしくお願いします。
Stringの比較はequals使えよ
SWT固有ならSWTスレいけばいい
>>666 Font font = new Font("Osaka-UI", java.awt.Font.PLAIN, 12);
UIManager.put("Menu.font", font);
UIManager.put("MenuItem.font", font);
>>689 さん
即レスどうもです。
直しましたけど動きは一緒みたいです…_| ̄|○
>>690 さん
まだまだ初心者レベルの質問なのですが、ここではまずいですか?
向こうはチョッとレベルが高いみたいなんで…
693 :
デフォルトの名無しさん :05/03/01 14:31:46
>>680 1.4以前は、TransferHandler#importData()内で、そのコンポーネント内での
ドロップ時のマウス座標を求める術がなかったので、別途にDropTargetを
実装しなければなりませんでしたが、1.5以降は、Component#getMousePosition()
というメソッドが追加されたので、TransferHandlerだけでもドロップ時の
マウス座標によるアクションの振り分けができるようになりました。
680のやり方でも問題ないですが(と言うか1.4以前は皆それをしてた)
1.5以降はTransferHandlerだけで十分になりました。もっと早くこうしろって
感じですね。
別のクラスの変数を参照する場合 class A { B b=new B(); int y=b.x; } class B { int x=0; } としているんですが、これを相互に行うにはどうすればいいんでしょうか? class A { B b=new B(); int z=1; int y=b.x; } class B { A a=new A(); int x=0; int w=a.z; } とすると無限ループみたいになってしまうので何かいい対処法ありませんか?
とりあえずクラスとインスタンスの区別を付けよう。
クラスとインスタンスの区別も正直よく分かりません・・・ クラスの場合は B b=new B();ではなくextendsで継承しろということでしょうか? その場合クラス同士が継承し合っても問題ないのですか?
>>696 相互に行おうとするなよ
設計から考え直せ
698 :
デフォルトの名無しさん :05/03/01 18:22:40
質問です。 画像を表示させたいのですが、うまく表示されません。 そこで以下のようなことをしたら直線は表示され、 画像が表示されずに"faild"が返ってきたのですが、 なぜ表示されないのでしょうか? g.drawLine(0, 15, 300, 15); Image img = Toolkit.getDefaultToolkit().getImage("black.gif"); g.drawImage(img, 0, 0, Color.black. this); boolean bool1= g.drawImage(img, 0, 0, Color.black, this); if(bool1 == false) System.out.println("faild"); black.gifはカレントフォルダに置いてます。
非同期メソッドつかってるのでは? drawImageの最後の引数しらないでつかってるのかな
はい
とりあえずマニュアルくらい読もう
>>694 AとBの関係がよくわからんけどこれじゃ駄目?
class A {
B b;
int z=1;
int y;
A() {
B b=new B(this);
y=b.x;
}
}
class B {
A a;
int x=0;
int w;
B(A a) {
this.a=a;
w=a.z;
}
}
Appletでソフトを作成しているのですが、 jarsignerを利用して証明書をつけて実行させるようにしようと考えています。 2000,XPでのIE5.5,6.0での動作は確認できたのですが NT4.0 SP5+IE5.5の環境ではApplet not initedになってしまいました。 ちなみにAppletは、Runtime#Execを行っています。 どなたかこのあたりの情報ご存知のかたいらっしゃいませんか(;´Д`) 使っているJDKは1.3.0です よろしくおねがいします。
>>693 > 680のやり方でも問題ないですが(と言うか1.4以前は皆それをしてた)
一般的なやり方なようで安心しました。まだ1.4を使用中なのでこのまま
行きます。ありがとうございました。
Component#getMousePosition() 見てきました。いいですね。
JFrame#add(Component) よりはまっとうな進化のような気がする。
JScrollPaneにJPanelを貼り付けて、JPanelに画像を表示させているんですが スクロールバーが表示されません。 どうすれば画像をスクロールさせられるでしょうか?
JPanel を貼り付けるときに使っているメソッドは?
>>706 setViewportViewです。
なんか、調べていたらどうもgetPreferredSizeをどうにかしないと駄目みたいだけど
まだJava始めたばかりなのでイマイチ理解しきれません
これを自前で処理すれば良いようだということは分かった気がしますが。
>>707 JPanelをsetPreferredSizeで画像の大きさに合わせればでるんじゃない?
Viewportが画像より小さくなければスクロールバーは表示されないけど
>>688 まとめて判別するために条件分岐するんじゃなくて、Textウィジット一つ一つに
VerifyListenerをつけて、そのなかでリアルタイムにチェックしたほうが
スマートじゃないかなあ。Eclipseのウィザードなんかだとそんな感じに
書いてあるよね。
public void setAction(Action a) { Action oldValue = getAction(); if (action==null || !action.equals(a)) { action = a; if (oldValue!=null) { removeActionListener(oldValue); oldValue.removePropertyChangeListener(actionPropertyChangeListener); … AbstractButtonクラスのsetActionというメソッドです. removePropertyChangeListenerというメソッドはinterface Actionに予約さ れていますが実際コードは書かれていません.この場合何が呼ばれているの ですか?
たいていは、Actionインターエイスのほとんどの メソッドを実装したAbstractActionクラスのサブクラスを setActionに渡すことになるだろうね。 Action quitAction = new AbstractAction("quit") { ... }; setAction(quitAction); とか。 もちろん自分で class MyAction implements Action { // public void removePropertyChangeListener(...) { ... } } と一から手間かけて実装したやつを渡してもいい。 どっちにせよ、渡すインスタンスのクラス階層がAction にたどりつくまでのどこかで実装されているはず。
2行目、サブクラスのインスタンスを、です。
public synchronized void removePropertyChangeListener(PropertyChangeListener listener) { if (changeSupport == null) { return; } changeSupport.removePropertyChangeListener(listener); } 失礼しました。AbstractActionクラスに↑がありました。ありがとうござ います。 Propertyってお前は何々だっていうIDみたいなものなのでしょうか?
Bean でググるよろし
715 :
デフォルトの名無しさん :05/03/02 22:19:13
newの理解度が低いです。 ↓こちらのソースはargs[]に入れたファイルの1行1列めの数字を読み取り 表示させるものです。 何故、String s; は new しなくていいんですか? よろしくおねがいします。 import java.io.*; import java.util.*; public class temp { public static void main(String[] args) throws IOException { FileReader fr = new FileReader(args[0]); BufferedReader br = new BufferedReader(fr); String s ; s = br.readLine() ; double a =(Double.valueOf(s.substring(0,1))).doubleValue(); System.out.println(a); } }
>>709 さん
ありがとうございます。
1つ1つにVerifyListenerをつけるんですか、なるほど。
一度、試してみます。
で、お聞きしたいんですが、Eclipseのウィザードって何でしょうか?
Eclipse自体、便利なエディター程度にしか使えてない初心者なんで、
よろしければ教えてやってもらえませんか。
>715 大雑把に言えば、FileReader#readLine()の中(の中の、かも)でnewされてるから。
>>716 たとえばEclipseでJavaプロジェクトを新しく作成しようとして、
ファイル->新規->プロジェクトってたどった時に開く
ダイアログを特にウィザードという。Eclipseに限らず最近だと
UIの一般的な用語になってると思う。688の例でいえば、
なにか次の状態に移行しようとしたときに初めて
メッセージダイアログで警告を出すんじゃなくて、
VerifyListener使って次に移行できる状態かどうか
常にモニタしてステータスバーか何かに「Text1が
空白です。」って表示しておく。それでもなおユーザが
次に進もうとしたときにVerifyListenerが設定したフラグ
見てダイアログ出すってほうが段階を踏んでいて親切でしょ。
まあそもそも条件がそろわないと次に移行できないようにボタン等を
disableにしておくのも多いけど。ウィザードはこういうのがおおいね。
>>715 ,717
String s; は宣言だから。
>>652 アルゴリズムの処理はすでに数年前(J2SE1.3時代)から
Cとさほどかわりなくなってきているぞ。
3D関係は条件がうまく揃わないと速くならぬ。
JDK 5.0 で消されてしまった 各種 compareTo(Object)メソッドなんですけど ナゼいきなり消されてしまったかわかる方います? deprecatedになっていたのならともかく・・・ 確かに挙動的には、Objectが呼び出し元と違うクラスのときClassCastExceptionを投げるだけなんで 呼び出し前に 明示的にキャストするほうがいいのはわかるんですけどいきなり消えたもので・・・
Javaは一通りマスターしちゃった感があるなぁ もちろんSOAPだのAspectJだのをやろうと思えば幅は広がるんだけど コア部分のJavaについてもっと詳しく知りたいかなーって コア部分のJavaについて詳しい参考書とかWebとか教えて あとね、アサーションについて詳しいWebページもきぼん
>>722 分かる。分かる。
Javaは、外の言語経験があれば結構早くマスターするよね。
俺もC++出身だけど、Javaはシンプルなのはいいけど正直ちょっと
物足りない気がする。
>>715 俺も初心者だけど
StringはClassだけど、特例として宣言して代入するだけでも実体化するらしい。
だから String s = new String(br.readLine());でも同じ。
一度クラスを自分で作ってみたら理解が深まると思う。
…ということでよろしかったでしょうか先輩方。
>>722 自己レス
1.4のドキュメントにアサーションについて詳しく書かれてるね
>>723 そうなんだよね
C++みたいな細かいところまでいじれるといいんだけどなぁ
C#2.0でもやろうかな
>>722 動的にバイトコードをいじるようなことをやると面白いよ。
今ではBCELとかJavassistみたいなライブラリを使わないといけないけど
将来バイトコードをいじるAPIはコアに取り入れられるという話しだし。
br.readline()の戻り値がStringなんだからStringとして宣言された変数に代入出来るのは当たり前じゃないか。 別に特別でもなんでもないだろ。 Rectangle rect; rect=c.getBounds(); とか普通だろ。 Stringの特殊性を挙げるなら、 String str=゙文字列゙; が通ることを挙げるべきじゃないか?
>>727 おお、BCELってあったね
リフレクションいじってたときにちょっとかじったっけ
VMの仕様とかも合わせて勉強してみるかな
>>722 ,723
5.0はもうぜんぶおっかけた?
あとJava2Dのアクセラレーションの効き具合とかは
1.4.0、1.4.1、1.4.2とおっかけていて大変だったけどたのしかったよ
UDPで送ったパケットが届かなかった場合, 受け取る側で”来るはずなのに来ない,おかしいな?”と判断したらもう一度 ”メッセージをくれ”と要求するようなプログラミングはよくやります?
そういうのがやりたかったらTCPのがよくね?
描画するオブジェクトを、一度Color(0,0,0,0)で塗りつぶしたレイアに描画 します。 その後実際に移すスクリーンにバックグラウンドを描画してからそのレイア をコピーすると透過しません。この構想では駄目なんでしょうか?
734 :
デフォルトの名無しさん :05/03/03 04:31:32
obj.eval("System.out.println("eval")");//evalと表示される こんな風にJAVAで書きたいのだが何かいい方法ないかい??
ないよ
>>733 それだと Color(0, 0, 0) が不透明度 0 の分だけ書きこまれている、
つまり完全に透明な黒を書き込んでいるだけ。
g2.getComposite() のデフォルトは SrcOver なので、
g2.setComposite(AlphaComposite.Clear);
g2.fillRect(0, 0, width, height); // 色は何でも良し
g2.setColor(new Color(255, 255, 255, 127));
g2.setComposite(AlphaComposite.SrcOver);
g2.fill(shape);
こんな風にするとイケるはず。もっと詳しくは↓
http://www-106.ibm.com/developerworks/java/library/j-mer0918/
あ、これでもいいのか。 g2.setBackground(new Color(0, 0, 0, 0)); g2.clearRect(0, 0, width, height);
>>721 > JDK 5.0 で消されてしまった 各種 compareTo(Object)メソッドなんですけど
> ナゼいきなり消されてしまったかわかる方います? deprecatedになっていたのならともかく・・・
んなもんあるか? たとえばどんなクラス?
逆に追加されたcompareToなら見かけるが。Calendarクラスなど
考えられるものとしえは他のクラスに委譲されたとかだろ
一旦そのオブジェクトを他のオブジェクトに変換してからcompareToとするところかな
> 確かに挙動的には、Objectが呼び出し元と違うクラスのときClassCastExceptionを投げるだけなんで
> 呼び出し前に 明示的にキャストするほうがいいのはわかるんですけどいきなり消えたもので・・・
>>734 どっかでみたことがあるな
Jakarta にそのてのAPIねえか?
リフレクション使うって手もあるぞ
740 :
デフォルトの名無しさん :05/03/03 09:50:19
最初に private String[] filelist; を宣言して あとから filelist = list(); と値を代入するコードを書いてるのですが ビルドすると TEST.java:39: シンボルを解決できません。 シンボル: 変数 filelist 場所 : CC の クラス filelist = list(); ^ となります list()は用意されたもので public java.lang.String[] list() となってます 何か手続きが足りないのでしょうか?
>>740 ソース晒せ
宣言と使用してるのが別クラスとか言うオチじゃねーだろうな
742 :
デフォルトの名無しさん :05/03/03 10:00:17
>>741 ありがとうございます。別クラスでした。
人のソースを改造してたので気が付きませんでした。
アプレットでgifアニメ使いたいんだけどあらかじめgifアニメの画像を読み込んでおくことってできる? jpgやアニメじゃないgifなんかは普通にあらかじめMediaTrackerに読み込んでおけるんだけど、gifアニメに関しては どうもそれがはじめて使用されたときに読み込まれてる感があるのよね。 できないのか、それともやり方が悪いのか、助言頼む。
744 :
デフォルトの名無しさん :05/03/03 10:31:18
newがnullを返すことって可能でしたっけ?
>>744 そんなケースはありえません。
構築に失敗したら必ず何らかの例外が発生します。
>>745 ありがとうございます。
newした直後にnullチェックしてるソースを見かけたもので、
ひょっとしてすごい裏技でもあるのかと。
>>746 マルチスレッド環境で static 宣言したクラス変数を御莫迦な使い方してるのかもしれない。
多次元配列のリフレクションの方法を教えてください。 public class Hoge { private static int[][] hoge = new int[10][20]; } public class Ref { } クラスRefからクラスHogeのフィールドhogeにアクセスしたいのですが どうすればいいのでしょうか? 配列サイズはRef側で直打ちでもいいのでRef側でhogehoge[][]な形で アクセス出来るでしょうか? 教えてください
アクセサメソッド作ればいいんじゃ?
>>749 アクセサメソッドでアクセスすることも出来るのですが
最終的には外部に公開しないデータなので削除するメソッドになります。
いちいち公開のたびにアクセサメソッドを削除する
のはめんどうなので外部のクラスRef内でテスト出来るようにしたいのです。
Hogeクラス内にテスト用コードを書きたくないということです
リフレクション方法を教えてください。
>>748 HogeとRefを同じpackageに置いて
Hoge.hogeをパッケージアクセスにするってのはダメ?
>>750 つーか、テストなら、メソッドの引数と返値の整合性をテストするだけでいいだろ
>>751 それだったらアクセサメソッドをパッケージアクセスにしろよ
>>748 JUnitとかで使うの?できるけど面倒くさいよ。
Field f = Hoge.class.getDeclaredField("hoge");
f.setAccessible(true);//privateフィールドへのアクセスを許す
int[][] hoge = (int[][])f.get(null);//staticなので引数nullでよし
System.out.println(hoge[1][1]);
688です。
>>718 さん
ありがとうございます。
なるほど、そういう事だったんですか。
ウィザードの事はは一応、判ってたんですが、
そういう風にチェックして行くと良いって事ですか。
>Eclipseのウィザードなんかだとそんな感じに
>書いてあるよね。
と、あったのでEclipse本体で出来る何かの事を仰っていたのかと(汗)
一回調べてみます。
まだまだ初心者なんですが頑張ります。
でも、やはりSWTはまだまだ情報も少ないので初心者向きでは無いんでしょうか・・・
>>736 ありがとうございます。
そこいいサイトだね。
現在Java Web Start + SWTでクライアントアプリを作成中です。 JWSもSWTも順調に動いているのですが一つ問題が・・・。 それはJWSの起動方法によってカレントパスがそれぞれ違うことです。 ブラウザから起動すればブラウザの実行ファイルがある場所がカレントパスになり、スタートメニューから起動するとC:\Program Files\Common Files\System\Mapi\1041になり、デスクトップのショートカットから起動するとデスクトップがカレントパスになります。 設定ファイルやログファイルをカレントパスに保存するようにしているのですが起動方法によって設定ファイルが分かれてしまいます。 Windowsだけならどこか専用のフォルダを絶対パスで作成すればよいですがLinuxだとそうは行きません。 カレントパスに左右されず、自由に設定ファイルなどが配置できる方法があればお願いします。
プリファレンスつかうとか?
>>756 システムプロパティuser.homeに適当なディレクトリ作って保存するようにしたら?
Unixなら/home/hogehogeあたり、
Windows2000かXPなら、C:\Documents and Settings\hogehogeあたりを
返してくれるはず。
すみません、 VBのReDimみたいに配列を動的に作成したいのですが どうしたらよいんでしょう?一次元ならList使えば出来るんだけど、、、
>>751-753 ありがとうございます。
>>753 JUnitで使います。
シンプルなソースを貼ってもらったのでわかりやすく
全然面倒くさくありません。
751-752
製品コード内にテスト用のコードを入れたくなかったので
リフレクションが一番ベストな方法でした。
ですが、パッケージアクセスさせると思いつくほどの知識も
なかったので勉強になりました。
751-753サンクスですた
>>759 2次元のやり方がわからないという意味?
Listの中に配列入れるとか。
ListのなかにList入れるとか。
配列でも普通に動的に作成できるだろ。
int[][] a = new int[3][2];
ただRedimのように、中身の入ったサイズを変更するときは、
新しく作り直して中身をコピーする必要あり。System#arrayCopy
(それをやってくれるのがArrayListだけど)
>761 ありがとうarrayCopyを使ってコピーするしかないかぁ。。。 最終的にプリミティブ型の配列として持ちたいので Arraylistとか使いたくなかったんですよ。。。
>>762 最終的に?
途中はArrayListでもよいのであれば、
ArrayList使って最後にtoArrayで、配列にコピーできる。
public class Hoge { public void run() { //処理 result = doHoge(); //処理 } } で、doHogeの中身が2種類ある時、どのように実装すれば良いのでしょうか? 子クラスを2個作って各々でdoHogeをオーバーライドするのか、それとも Hogeをインターフェースにして、doHogeをabstract宣言して 2種類のクラスで実装すればいいのでしょうか? いまいちインターフェースとabstractをどう使って良いのか分からないのですが…
>734 亀だがBeanShellとかGroovyのソース眺めてみては。
766 :
デフォルトの名無しさん :05/03/03 22:57:34
>>764 デザインパターンの勉強をすればどうすればいいかわかる。
わからないときはとりあえずabstractに汁
arrayCopyがArraysではなくSystemにある件について
769 :
デフォルトの名無しさん :05/03/03 23:29:40
以下のような感じでZipデータを解凍してるんですが、できるときと 出来ないときがあります。 出来ないときには「ZipException」が出るのですが、何が原因なのか よくわかりません。 Zipデータはファイルではなく、Zip圧縮されたデータです。 ----------------- java.util.zip.Inflater inflt = new java.util.zip.Inflater(); InflaterInputStream in = new InflaterInputStream(sis,inflt,zlen); ByteArrayOutputStream inflatedOut = new ByteArrayOutputStream(); int readLength; while(inflt.getTotalIn()<zlen){ byte[] block = new byte[8192]; if((readLength = in.read(block,0,1)) == -1){ break; } inflatedOut.write(block, 0, readLength); } inflatedOut.flush(); byte[] datas = inflatedOut.toByteArray(); inflt.reset(); inflt.end(); ----------------- StandardWrapperValve[jsp]: サーブレット jsp のServlet.service()が例外を投げました java.util.zip.ZipException: unknown compression method at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:140) at org.apache.jsp.hogehoge_jsp._jspService(hogehoge.java:349)
>>767 Arrays は JDK 1.2 から導入されたクラスなわけだが。
>>769 ZIP データの解凍で ZipFile や ZipInputStream ではなく Infrator を使用している理由は?
>>770 レスありがとうございます。
Serverと通信していて、そのデータがZip圧縮されたものでZIPファイルそのものでは
無いため使えないと思ってたのですが
バイト化けか送信側の手順が悪いか…。GZIPInputStream/GZIPOutputStream 使ったらどうなる? ところで 8192 バイトのバッファを用意しておきながら in.read() で 1 バイトづつしか 読み込んでないよ、それ。それにバッファはループの外で確保しなきゃ一回回るたびに 無駄なバッファが使い捨てられる。
public static final int BLOCK_SIZE = 8192; …… byte[] block = new byte[BLOCK_SIZE]; while ((readSize = in.read(block, 0, block.length)) != -1 ){ inflatedOut.write(block, 0, readSize); } 慣用句だとおもう。
>>770 だからさ、システムとは関係無い配列コピーが
なんでSystemに入れられたのか不思議なワケよ。
初期にはSystemを単なるユーティリティークラスとして
使うつもりだったのかもしらんが、Java2になってあちこち
リファクタリングされてるのに、なんでこいつをdeprecatedにして
Arraysに移動しなかったのか? って謎なのよ。
たぶんマンドクセーからだと思うんだが。
>>772 サーバの方はコンパイル済みのものしかないので
ソースの変更はできないです
クライアントだけGZIPInputStreamを使ったらこんなのがでました。
バッファのところはデバッグ中なんで変な書き方になってます
-------
StandardWrapperValve[jsp]: サーブレット jsp のServlet.service()が例外を投げました
java.io.IOException: Not in GZIP format
at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:132)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:58)
at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:68)
>>774 んー、意味的にメモリブロックのコピーだから結構低レベルな機能として System で良いと思うけど。
まぁ主観的あるべき論ネタなので深くは主張しないけどね。
実は俺も byte は 1 バイト符号なしデータであり、「数値」として使用する 1 バイト符号付整数は別で
用意すべきだったろ、とか似たような事思ってるけどね。short⇔char のように tiny(仮)⇔byte というような。
>>774 nativeで実装されているからでない?
779 :
デフォルトの名無しさん :05/03/04 00:57:51
ファイルを読み込んで、その中に不正な文字が含まれているかを 調べるプログラムを作っています。 SHIFT_JISで、ファイルを読み込んで、1文字取得まではできました。 Character chr = new Character(line.charAt(i)); そこで質問なのですが、 その文字のコードを表示するにはどうすればいいですか? その文字が特定の文字コード(たとえば半角かな)かどうかを 調べるには、どうすればいいですか? いろいろ調べたのですが、Characterの中にどのように文字が収められているか わからず、先に進みません。 よろしくお願いします。
>>778 JNI で実装されていても引数が変わらなければクラス間の移動やメソッド名の変更は
所詮ライブラリレベルの変更なのでたいした変更負荷じゃないと思うけど。リフレクションとかで
何か問題あったっけ?
>>779 文字コードじゃなくて文字ブロックだな。
Character.UnicodeBlock block = Character.UnicodeBlock.of(line.charAt(i));
System.out.println(block.toString());
if(block.equals(Character.UnicodeBlock.BASIC_LATIN)){
...
}
781 :
デフォルトの名無しさん :05/03/04 01:20:28
>>780 なるほど、文字コードがどのブロックに該当するかを調べるのですね。
勉強になりました。ありがとうございました。
ただ、今回自分が判定したいのは
JIS第一水準かどうか
JIS第二水準かどうか
半角カナかどうか
なので、この方法だと上記のブロックが用意されていないので
無理みたいです。(新しいブロックを作ればいいのかな?)
(質問があいまいで申し訳ありませんでした。)
そのあたり、ご存知であれば教えてもらえないでしょうか?
>>781 JIS, Shift_JIS, EUC なら JIS 第一水準と第二水準が明確に分かれているけど、Unicode は
中国語と漢字が共用されているため、JIS とはかけ離れてバラバラに割り振られてる。
どうしてもやらなきゃならないなら Unicode のままやるのは非現実的で、一回 Shift_JIS 等の
バイト配列に変換して C/C++ でやるようにしなければならないね。
byte[] binary = line.getBytes("MS932");
783 :
デフォルトの名無しさん :05/03/04 01:34:01
>>781 getBytesですか。なるほど。自分が知りたかったのはそれのようです。
byteに変換できれば、あとは、他の言語みたいに比較できますもんね。
ありがとうございました。
xerces で以下のように XML 出力を行うプログラムを作っています。 --------------------------------------------------------- Document doc ; OutputStream os = HttpServletResponse.getOutputStream(); OutputFormat format = new OutputFormat(doc); format.setIndenting(true); Writer writer = new OutputStreamWriter(out, "Shift_JIS"); XMLSerializer serial = new XMLSerializer(writer, format); serial.asDOMSerializer(); serial.serialize(doc); --------------------------------------------------------- 上記のコードだと、例えば <Test>1234 5</Test> のようなテキストノード内に改行が入っていると <Test>1234 5</Test> と改行がスペースに置き換わってしまうのですが、 この現象の回避策はあるのでしょうか? 宜しくお願いします。
>>780 移動が簡単だとか難しいとかでなく、
nativeで実装されているからこそ、Systemでいいんじゃないかと。
currentTimeMillis, setIn, SetOutはSystemにあるのは気にならないの?
どんなユーティリティメソッドなら、Systemにあるべきだと思うの?
>>785 いや arraycopy() が System にあるのは変って主張してるのは俺じゃないんだが。
しかし native だからってそんな実装ベタベタな理由で設計の話するのはおかしくない?
787 :
781 :05/03/04 04:03:46
byteの比較で行き詰まってしまいました。 たとえば、「亜」が0x889E〜0x9872の範囲に入っているかを調べたいのですが うまくできません。 byte[] binary = "亜".getBytes("Shift_JIS"); とした場合に、 binary[0] = -120 binary[1] = -97 となってしまいます。 これを0x889Eと比較する場合はどうすればいいのでしょう? if (0x889E <= ? && ? <= 0x9872) 見たいな感じで比較したいと思ったのですが、 binarry[]を?に変換するところでつまずいています。 [0]が上位バイトで[1]が下位バイトだから、 binary[0]*256 + binary[1]でいいかと思ったのですが、 そうではないようですし・・・。(そもそも-120とかだし) よい方法をお願いします。
コンソールでの開発はそこそこやれるようになってきたので、Microsoft VisualStudio.net(J#)で フォームアプリケーションの製作に挑戦してみようかと思ったのですが、製作の過程がだいぶ違います。 使い方を調べようにもヘルプは意味不明ですし取説は薄っぺらいのしかついてきてません。 どこかに「Javaの使い方」というより「J#の使い方」をまとめたようなページはないでしょうか。
789 :
781 :05/03/04 04:38:25
あーそっか、自己解決しました。 byteが、-127〜126だから、0以下なら+256すればいいんですね。 (((argByte[0] < 0) ? (argByte[0] + 256) : argByte[0]) * 256) + ((argByte[1] < 0) ? (argByte[1] + 256) : argByte[1]) こんな感じでうまくいきました。 ありがとうございました。
>>786 System.arraycopy()
は、まだJITすら無かったJDK0.9とかの頃に、JVM上で配列コピーするとあまりに遅いので、
ネイティブ側でmemcpyとか使って素早く配列コピーするメソッドを用意したって理解してたけど。
そもそも設計と性能のトレードオフで性能を取ったものだから、
> native だからってそんな実装ベタベタな理由で設計の話するのはおかしくない?
こういうことも含めて性能を取って現在の形になってるんだと思うよ。
>>789 byte[] binary = "亜".getBytes("Shift_JIS");
int ch = ((binary[0] & 0xff) << 8) | (binary[0] & 0xff);
if (0x889E <= ch && ch <= 0x9872) {
}
>>791 JITだろうが普通にコピーしたら遅いだろ。
ループでぐるぐるまわしてたら毎回範囲チェックせにゃならん。
中で何やってるかまで見て最適化なんて厳しいだろうし。
>>792 そー思うなら java.lang.System#arraycopy とループでコピーする場合の速度比較でもやってみると良いよ。
マイクロベンチの結果はあんましあてにならんとは言うけどね。
>>790 >>772 の言うように送信データがおかしいというのが素直な結論だが。
zipフォーマットじゃないテキトーなデータを投げてみたら
(わざとエラーを出させてみたら)どうなるのかな。
同じエラーが出る?
あと、
>>769 はデバッグ中コードでバッファが変な書き方
だそうですが、デバッグ中じゃないコードはどうなってるの?
795 :
デフォルトの名無しさん :05/03/04 13:40:24
>>792 int ch = ((binary[0] & 0xff) << 8) | (binary[0] & 0xff);
最後のbinary[0]ってbinary[1]じゃない?
>>757 ,758
user.homeを使うことで解決できました。ありがとうございました。
ちなみにlog4jでログ出力していたのですがその出力先も
<param name="File" value="${user.home}/logfile.log" />
とすることでホームディレクトリに出力することができました。
>>790 そういや通信相手はサーブレットだったな。
Zip データじゃなくて 500 Internal Server Error の HTML なんかが
落ちてきてるんじゃないのか? レスポンスコード 200 は確認してる?
798 :
デフォルトの名無しさん :05/03/04 15:57:06
swingコンポーネント上に図形を描いているのですが、 起動してすぐの描画がやたらと重くて困っています。 ウィンドウを手動で一度最小化して戻したり、 Javaを起動したDOS窓を最小化するとなぜか軽くなります。 あることをすれば軽くなるのでマシンスペックの問題ではないと思うのですが このような経験がある、解決したという方、先人の知恵をお貸しくださいorz あと円の描画(Ellipse2D)が重いようで、 円を描くときCPU稼働率が100%かそれに近い値になってしまいます。
>>784 やってみたけど、現象が確認できない。
シリアライザのコンストラクタに、Writer を渡すのじゃなくて、
単なる OutputStream を渡したらどお?エンコーディングは、format に指定。
こんな感じで。
// 私はファイルに書いて試したけど、HttpServletResponse.getOutputStream(); でもおなじ事。
OutputStream os = new FileOutputStream(fileName);
OutputFormat format = new OutputFormat(doc);
format.setIndenting(true);
format.setEncoding("Shift_JIS");
XMLSerializer serial = new XMLSerializer(os, format);
serial.asDOMSerializer();
serial.serialize(doc);
ImageObserverがどういったものかよくわかりません。 getWidth(ImageObserver observer)でイメージの横幅を返してくれるらしいのですが どういったものを代入すればいいのかわかりません。 ImageObserver obs = になんて代入すればいいのでしょうか? よろしくお願いします。
>>800 ImageObserver を implement してるのは Applet や Panel やらの Component サブクラス。
まぁ普通はその Image を描画しようとしてるコンポーネントだが、null でも良かったような。
元々「ネットワークで重いデータ」として、画像は非同期ロードされる設計になっている。
ImageObserver は対象画像のロード完了やロード結果をコールバックするものだが、
あまり意図したようにアプリケーションで使用されていないのが現状。
>>801 そうだね。
java.awt.MediaTracker で読み込んだ事を確認してから処理しちゃう事も多いし。
>>801-802 ありがとうございます。
自分は現在Appeletで作成していて、指定した画像の大きさをint型変数に代入したかったので
調べたところImageObserverが出てきて困ってました。
未だにImageObserverの事がよくわからないのですが、
これを使用せずに指定した画像のサイズを取得する場合どのようにすればいのでしょうか?
>>803 Applet#getImage() とかは画像の読み込みを開始するだけで、
画像の読み込みが完了しなくても呼び出し元に返ってくる可能性がある。
画像の読み込みが完了していない場合は、getImage() とかで返された
Image は自分自身の高さも横幅もわからない状態にあるわけね。
そんなときに、ImageObserver を使うんだよね。
getWidth() で -1(前述のような画像の読み込みが完了していないので
Image が自分自身の横幅を知らない状態の場合は -1 を返す) を返されても
ImageObserver を渡しておくと、画像の読み込みが完了した時点で、横幅が通知されるってわけね。
java.awt.MediaTracker に addImage() した後、waitForAll() とかすれば読み込みが完了しているはず。
なんでこんな面倒くさい仕掛けが必要かというと、
ナローバンドが主流だった数年前のインターネット環境だと画像のダウンロードには時間がかかったから。
>>803 簡単に言うと、getWidth(null) すれば(画像の読み込みが完了してれば)横幅が返ってくるはず。
レスありがとうございます!
>>794 正しいデータかどうかはバイナリデータ確認するしかないですかね・・・
>>797 200が返ってきてるのは確認してますー
>>798 Ellipse2Dってアクセラレーションきいてる描画だったっけ?
VRAM容量とか画面モードとかJREのバージョンとかいろいろと原因あるし
そもそも描画はダブルバッファつかってるのか(1.4以上はオーナーがダブルバッファデフォでしてくれたような)
不揮発性メモリつかってるかとか
稼動環境やコードの断片かいてもらわんと
>>806 そもそも、正しく動く事もあれば間違って動く事もあるとなると
アルゴリズムが間違ってるとは思えないので
単純に通信失敗じゃないかと思うのだが
>正しいデータかどうかはバイナリデータ確認するしかないですかね・・・
それが一番確実だが・・・
サイズ見れねーか
809 :
デフォルトの名無しさん :05/03/04 20:11:44
class A{} class main { A a = new A(); pointer p; main() { p = a; a = p; } } のような事がやりたいのですが Javaに参照を格納できるポインタ型みたいなものはないのでしょうか?
参照というのはC++でいう参照のことか、そうでないか? ポインタというのはJavaでいう参照のことか、そうでないか? このへんをどう理解していますか?
>>809 いまいちナニをしたいか分からんが・・・
A a = new A();
と書いたら、a は参照型ですよ。
Cで言うポインタと思ってもらっても結構ですが、
Javaではポインタ「演算」が出来ない事に注意してください。
>>809 に合わせた書き方すると、
class A{}
class main {
A a = new A();
A b;
main{
b = a;
a = b;
}
}
でいいんじゃね?多分こういうことがやりたいのだと思うが
意味あるかは別として
813 :
デフォルトの名無しさん :05/03/04 20:33:46
すみません、Javaそのものがまだ全然わかってなくて クラスを一時的に保管したいのです class Data_a { String name, adr; } class main{ Data data = new Data(); pointer[] p = new pointer[10]; main{ data.name='Yamada'; data.adr='tokyo'; p[0] = data; //保管 ... data = p[0]; //取り出し } } このpointerに匹敵するものがあるのかなと ただ、格納するものがdataだけと限らず他のクラスになる場合もあるので 汎用性の持ったものが作れればと思ったのです
ってー事は、dataしかない、と言う場合はOKなのね? じゃあ、 pointer[] p = new pointer[10]; を Object[] p = new Object[10]; にする もしくは、dataにくる可能性のあるクラスの共通スーパークラス を作って継承させ、 DataSuper[] p = new DataSuper[10]; にする Objectは全てのクラスのスーパークラスです。
>>808 レスありがとうございます。
>>正しく動く事もあれば間違って動く事もあるとなると
なんですが、ランダムじゃなくて、1回目は成功、2回目以降は失敗となるので
処理方法がおかしいのかと思ったりもしてますが、データ自体は同じ種類の
ものがきてるはずなのでどこが悪いのか悩んでるとこです('A`)
>>サイズ見れねーか
サイズというのは圧縮されたデータのサイズ?
最小が80ぐらいで大きいものだと36000ぐらいですが
そこから何かわかりますか?
816 :
デフォルトの名無しさん :05/03/04 20:49:04
ありがとうございます。Objectで無事動きました。
>サイズというのは圧縮されたデータのサイズ? >最小が80ぐらいで大きいものだと36000ぐらいですが >そこから何かわかりますか? いや、俺が言いたかったのは単純に送り側と受け側の データサイズを比べてみたらどうかな?ってこと。 異なってたら通信失敗、同じなら通信は成功、って事になるから。 なんだけど・・・ 必ず >ランダムじゃなくて、1回目は成功、2回目以降は失敗となる ならアルゴリズムですね。 見当違いでスマソ...orz
>>817 >データサイズを比べてみたらどうかな?ってこと。
そういうことですか、鈍くて申し訳ないです。
>見当違いでスマソ...orz
いえいえ、結構つまらないことを勘違いしてたりするので
いろいろ言っていただけると助かります。
819 :
デフォルトの名無しさん :05/03/04 21:07:02
あるフォルダを監視して ファイルが新規に追加されたり削除されたといったことを 検出するapiはありますか?
>>820 それを確認できる方法ってありますでしょうか?
質問ばかりで申し訳ないです
JDK5.0日本語が落とせん
>>821 それこそ2回目のデータのサイズを比較してみたら?
サイズ不一致>データが間違い
サイズ一致>アルゴリズムが間違い
ってことになっから
>>823 比べて見ましたがサイズは一緒でした
アルゴリズムか・・・2回目以降は違うアルゴリズムなのかなぁ('A`)
826 :
訂正 :05/03/04 22:01:45
655は間違いす。別スレの方ですたorz
>>792 俺はJITになれば普通にコピーしても早くなるとは言ってないけどw
「JITすら無かった頃」と言ったのは、まだJavaが最適化のための努力をしていなかった頃という意味で言っただけだ。
> ループでぐるぐるまわしてたら毎回範囲チェックせにゃならん。
> 中で何やってるかまで見て最適化なんて厳しいだろうし。
この部分は意味不明。何がどう厳しいの?
静的解析によって配列の範囲チェックを省く最適化をするのが現実的な時間で出来ないってこと?
828 :
デフォルトの名無しさん :05/03/04 23:42:39
Listのようにクラスを配列として扱って要素を増減させたいのですが クラスの中でどのような方法を使ってるのでしょうか? 検索してもなかなか見つからず 何をキーワードにすればいいのかもちょっと思いつきません サンプルソースのあるサイトとかあればURLだけでもお願いします
>>825 お手数おかけしてます。
データをダンプしてみてみたところ、どうやら
送られてるデータがおかしいっぽいみたいです。
そちらのほうを調べてみようと思います。
相談にのっていただいてありがとうございました。
結果がでたらまた報告にきますー<m(_)m>
>828 ベタな方法としては、内部にArrayListを持って、基本的な仕事は全部丸投げ。 Iteratorくらいは専用のを仕立てて……かな。 サンプルソース? えーとえーと…… 達人の答えを待つorz
>>828 何で自前で作りたいの?
ArrayListの実装を見たいのなら、JDK入れた時に一緒についてくるsrc.zipを展開すれば
ArrayList.javaが有るよ。
Listの実装クラスのソースを見てみればいい。 ArrayListとLinkedListでやってることは違うが、 データ構造の基本だ。
833 :
デフォルトの名無しさん :05/03/05 01:19:28
初心者の質問で申し訳ないんですが try〜catchの例外処理とthrowsの例外処理は何が違うのでしょう。 いまいち分かりません。
try-catchは例外処理をしていますが throwsは例外処理をしていません。
今、ヒープの圧迫で困ってます。 以下のような例です。 -------------------------------------------------------------- 1:public class A{ 2: public static void moto(String data){ 3: String mes ="1つめ" + data; 4: B.saki(mes); 5: } 6:} 7: 8:public class B{ 9: public static void saki(String message){ 10: String writeData ="2つめ" + message; 11: write(writeData); ←ログへの書出しメソッド 12: } 13:} ---------------------------------------------------------------- Aのmotoメソッドに渡される文字列が膨大な場合、 Aのmotoメソッド、Bのsakiメソッドでヘッダをつけた文字列を さらに作っているので2倍、3倍の値でヒープを食いつぶしているようです。 このロジックに複数アクセスが起きるとGC対象が足りずOutOfMemoryが 発生してしまいます。 そこで質問をさせていただきたいのですが 1.10,11行目にmessage=null;を入れることでwriteメソッドの結果を待たずに GC対象とすることができるでしょうか? 2.ヘッダをつけるロジックをStringBuffer(文字列数)に置き換えることで 中間データの発生を抑制することができるでしょうか? どうぞよろしくお願いします。
>835 2つめの質問はyes StringBuffer使え。 1つめの質問はno。 messageは、10行目が終わった時点でnullにせずとも既にunreachableなので、GC対象になる。
>>836 うそつけ、message はスタックから reachable だ。
GC はスタックに乗ってる参照が「その後使われないか」までは判断しない。
ところでスタックって知ってるよな?
ログ吐き杉。
839 :
デフォルトの名無しさん :05/03/05 02:13:49
新人研修のJava講座を設計する教育部署のものです(現場の人間ではない)。 俺はJavaの文法だけではなく、オブジェクト指向の基本概念そのもの(クラス、オブジェクト、インスタンス、 継承、カプセル化、ポリモーフィズム)を例えで分かりやーすく教え、頭の中でイメージできるようにしつつ、 Javaでのオブジェクト生成・利用、継承、インターフェイス、アクセス修飾子等を教えたほうが絶対に効率的 で理解しやすいと思う。 しかし、ある現場の人は「新人にオブジェクト指向は詰め込みすぎ。文法だけでよい。」という。 多少時間はとっても、クラスやオブジェクト等がイメージできるようにしたほうが最終的には近道だと思うけど、 どうでしょ?
多少時間はとっても、と言うのだったら手続き型処理から初めてモジュール化、 ブラックボックス化 (クラス化) の必要性に続いてオブジェクト指向の話に入った 方が良い。 ただ新人研修程度だったら、その時点で内容はよく分からなくても、予めいくつかの 「キーワード」を与えておいてやると後々の仕事で無知アレルギー出さなくてすむ。 つまり「あーそれどこかで聞いたなぁ」というだけでその後のアクションがかなり違うでしょう。
841 :
デフォルトの名無しさん :05/03/05 02:34:08
session.setAttribute("hoge",2); 上記のものがコンパイルにとおる理由がわかる人教えてください setAttributeの二つ目の引数はobjectでなくてもいいのでしょうか?
>>837 スマソ。そう言われたらそうだな。
理論的にはコンパイラが10行目と11行目の間にmessage=nullするコードを挿入する
(or解放する)最適化は可能だと思うけど、どっちにせよGCではないな。
もうGC書いて遊んでたのが10年位前なので、ボケた事を書いてしまった。恥ずかしい。
zipデータの質問をしてたものですが、 ようやく解決しました。 サーバのデータがちょっと特殊で、2回目以降は 先頭2バイト分のデータが同じ場合は その2バイトが省略されて来るようになってたようです。 質問に答えてくださった方、どうもありがとうございました!
>>842 いくらB.sakiメソッド内でmessage=nullとしようが
A.motoメソッドを抜けるまでreachableなのはわかってるよな?
>>841 J2EE 1.4 でも HttpSession にそのような API はないが。
session って分け分からんフレームワークで再発明された車輪のようなセッション類似機能じゃないよな?
>>842 ノシ
>>841 ,845
単にAutoboxingされてるのではないのかね?
public class Main { public static void foo(Object o) { System.out.println(o.getClass().getName()); } public static void main(String[] args) { foo((byte)3); foo((short)3); foo(3); foo(3L); foo(3f); foo(3d); foo('\u0033'); foo(true); } } 確かに、 Java5 ならエラー無しで動く。怖ぁー。以下実行結果。 java.lang.Byte java.lang.Short java.lang.Integer java.lang.Long java.lang.Float java.lang.Double java.lang.Character java.lang.Boolean
へぇ、Java5 対応の J2EE 製品ってもう出てるのかね。
>>849 APIで削除されたやつとか使ってなければ普通に動くはずよ。
JDBCドライバとかが問題起こすかもしれんがな。
851 :
デフォルトの名無しさん :05/03/05 10:53:34
初歩的な質問なんですが、あるデーターをセッションに登録して5分立ったら そのセッションを破棄するようタイムアウトを設定しているとします。 ユーザーがなにもしないまま(画面遷移など)5分たったらもちろん破棄される と思いますが、画面遷移などのアクションをしていても5分たったら セッションは破棄されてしまうのでしょうか? 教えてエライ人
>>851 セッションのタイムアウトに使われる時間は最後のリクエストからの経過時間のはず
853 :
デフォルトの名無しさん :05/03/05 12:37:22
Javaってブラウザ上でプレイするゲームしかつくれないんですか? それしか見たこと無いので気になってました。
jarというファイルを発見しました。普通のプレイもできるってことですね。
>>849 Tomcat5.5 も知らない初心者ですか?
別に有料じゃなくてもプログラムは*製品*と呼べると思うが…
product ね。
学生必死だな
商品と製品の区別が出来ないひとのいるスレはここですか?
jdk日本語版が今ちょうど落とせないのですが、英語版との違いは各種メッセージだけですか?
Apache Forrestより使い勝手がいいWebドキュメント構築ツールって何かない?
IBM の製品、RedHat の製品とは言うが、Apache Foundation の製品? GNU の製品? なんちゃってシステム屋以外使わねぇな。
Linux + Tomcat + PostgreSQL のセコイ環境しか使えない奴増えてんのかね ┐(´ー`)┌
Ruby以外の言語は糞。 ましてJavaをや
春の厨房強化月間
Ruby絶賛のあらし! Rubyさいこう¥!!!!!!!!!!!111!
Ruby is nanbar one!
新しい言語が必ずしも優れているとは思えないが、Rubyが最良の物 の1つであることは確かだ。というよりも、これにはまったら、他の言語が みんな糞というか化石のように思えてくることもあるが、どうだろう? 俺と同じような感想を持っている人はいないか?
なんでみんなRubyを貶すのかなー? もしかして劣等感?僻んでる? 日本発の言語で世界に評価されているのはRubyしか存在しないんだから みんなでRubyを盛り上げてC++やJavaなんて、プププのプーってぐらいに しなきゃ。 実際今まで500年ぐらいプログラミングしてきた俺だけど、Rubyより優れた 言語に出会った事がないよ。 やっぱり新しい言語は優れているんだろうね。
ksh でシェル作ってくれ、といったら全部 Ruby で作って来た莫迦派遣が居たのでさっさと切った。
shige の頃から Ruby は糞ですが何か?
Rubyの偉い人によると、 「Javaなんてうんこ」 らしいですよ。 プゲラwwwwwwwwwwwwwwwwwwwwwwwwwwww
>>856 は?w
Servlet API で AutoBoxing だったら、知ってるならまっ先に
Tomcat5.5 が思い浮かぶはずだが、それを知らないお前が勝手に
J2EE 製品とか、まとはずれなハズカシイこと言ったんだろw
>>875 まー、Java リファクタリングで有名なマーチン・ファウラーでさえ
Ruby のほうを持ち上げてるからな。
しかしコンパイル時の「そんなメソッドはない」エラーや、Eclipseなどのコード保管機能で 助けられてる身としては、Ruby的な「なんでも実行時解決だぜ」ってのはちょっとおそろしい。
880 :
デフォルトの名無しさん :05/03/05 17:12:28
>>877 Rubyのメインユーザーはほとんど日本人だからね。
日本だけで完結して、いわゆる開発のスタンダードにはならないだろ。
ちなみに世界各国ごとに、こういう国産で国内だけのメジャー言語は
結構存在してる。
>>835 StringBuffer mes = new StringBuffer( "1つめ" ).append( data );
StringBuffer writeData = new StringBuffer( "2つめ" ).append( message );
先生!これでいいですか?
>>878 Java の先人達は DI や AOP で実行時解決に向かってるけどな。
あと、JDK5.0 の Instrument API もな。
ただ DI や AOP であっても実行時解決がおそろしいってのは同意。
雑誌に踊らされるプロジェクトが多発しないことを祈るばかり。
読み込んだ画像をウインドウ内に原寸表示したいのですが、 画像からgetWidth,getHeightした数値をsetSizeでセットすると ウインドウの枠も含めたサイズになってしまい困ってます。 ウインドウの枠を含めないで中のパネル?の部分のサイズをセットするにはどうすればいいのでしょうか? よろしくお願いします。
>>876 横レスだがおまいのレスは痛い
「製品」と強調されてオレは納得したがな
>>884 いや、最初のレスで
「製品」っていっただろ!とか言うなよ、
とか書こうと思ったが、あとで反撃する予定だった。
イタく見えたか、そうですか。
ってか、香具師は Servlet API の話でどっから製品って言葉持ち出したの?
Tomcat は使うに値しないのか。
まー、俺も WebLogic と WebSphere でしかシステム構築してないけどな。
>>883 SwingでJFrame使っているとしたら、setSizeではなく、
JFrameのContentPaneにJPanel1枚を全面に貼り付け、(BorderLayoutのCENTER)
そのJPanelのpreferredSizeで(画像の)サイズを指定し、JFrameに対してpack()してから
表示すればOK
>881 String mes ="1つめ" + data; は String mes = new StringBuffer().append("1つめ").append(data).toString(); にコンパイル時に置き換えられるから等価だと思ってたけど違うんかな? むしろString mes = new StringBuffer(data.length()+6).append("1つめ").append(data).toString(); みたいに最初からバッファの容量をきちんと取っておけば、StringBuffer内部で使ってる char配列が余分に作られなくてよさげ。
>
>>886 ありがとうございました。
上手くできました。
javaに、cのincludeみたいに他ファイルをソースに挿入する機能ってありますか?
890 :
デフォルトの名無しさん :05/03/05 20:40:57
>>830-832 Vアプリを作っているのですが
多分岐ツリー構造をどうやって再現するか考えた結果
Listによるツリー管理が楽だと思ったのです
が、MIDPにはオブジェクトを保管できるListらしきものが見当たりません
そこで自分で作ってしまえと思ったのですがソースを見てもちょっと難しいので
いまはString.javaのソースを鑑賞してます
このまま理解が出来なければ配列でツリーを作るしかなさそうですが
それも視野に入れながら考えてます
挿入ソートは、人が並び替える時にやるやり方に近いですね。 つまり、コンピュータで実装させるとそれなりの演算量がかかります。 挿入ソートを改良し、演算量を減らしたシェルソートというのもあります。
0から任意のnまでの乱数を生成するにはどうすればいいのでしょうか?
>>892 int i = (int)(Math.random()*(n+1));
Random r = new Random(); int i = r.nextInt(n+1); だろ。
世の中には本当のことはいくつもあるのに、 彼女はね、それがひとつしかないと思い込むタイプなのよ。
896 :
デフォルトの名無しさん :05/03/06 00:39:34
スレッドについて質問なんですが、スレッドで囲んだ処理が終了したら そのスレッドは明示的に破棄する処理を書いて破棄しないといけないのでしょうか? なにかプロセスが残ってしまうとかあるのでしょうか? 教えてエライ人
>>844 ああ、また不正確なことを言ってしまった。
「解放する最適化は可能」と読み替えてくれぃ。
スレ汚し失礼。
898 :
デフォルトの名無しさん :05/03/06 01:00:27
>896 無いよ 自動でVMが回収する。 VMによるが、再利用にまわされるために、外から見ればスレッド数が減らないけど。
EntityBeanを含むSessionBean以下をEclipseでデバッグする方法は 無いでしょうか? SessionBeanだけなら、SessionBeanのクラスを普通のクラスのように 呼び出せば良いんですが、EntityBeanが中に入ると どうやれば良いのやら・・・・
>900 言い忘れたけど、参照はすべてクリアされた場合が回収対象になるよ。 HogeHogeThread thread = new HogeHogeThread(); thread.run(); thread = null; 参照クリアはしてくださいな。
>>899 普通にデバッグできると思うが?
Eclipse内で起動できないならリモートデバッグで対応。
後はコードにブレークポイント張っとけ。
>902 J2EEサーバ何使ってますか? 環境教えてください。
J2SEをDLしてインストールしようとしたんですけど WARNING: Default charset MS932 not supported, using ISO-8859-1 instead と出てきてインストールできません。原因を教えていただけないでしょうか?
>>876 何顔真っ赤にしてんだ、意味の通った日本語しゃべれよw
「製品」と強調されてピンと来ない奴が WebLogic とか WebSphere とか言っても 知ってる単語並べただけにしか見えねぇ (w
>>907 すまんな、自称 SE に引っ張られたw
>>904 ちゃんと Multi-Language 版ダウンロードした?
909 :
デフォルトの名無しさん :05/03/06 04:00:33
オラアなんも解らん
>>903 サーバー側のVMをデバッグオプション付きで起動汁。
今までに何種類か使ってるけどどれも問題ないよ。
>>905 あー、すまんな w 分かりやすく言うと
Tomcat5.5 も JDK5.0 もよく分かってない香具師は黙っとけ。
>>908 SE だなんて言ってないが?
今まで 20 システムほど組んできたが、今は客先に
方式決定支援に廻ってるくらいだな。
ファイルチューザーのフォントはどうやって設定すればいいんですか? private JFileChooser filec = new JFileChooser(); public filechooser() { filec.addActionListener(this); } public void actionPerformed(ActionEvent e) { ... } こんな感じで本に載ってた通りに書いてます。 よろしくお願いします。
913 :
デフォルトの名無しさん :05/03/06 13:19:21
最近 JDK1.5.0_01 を入れたのですが、普通にインストールすると、JRE もインストールされます。 JDK1.5.0_01 ディレクトリの中にも、jre というディレクトリが出来いて、なんか無駄に容量食ってる 気がするのですが、単なる JRE と、JDK ディレクトリの中の JRE の2つをインストールさせられる 理由ってなんなんでしょう?2つも律儀にインストールした私がマヌケなだけなのでしょうか。
>>913 そのJREはブラウザとか、システムディレクトリのjava.exeとかが使うはず。
アプリケーションの追加と削除で消せると思うけど。
あと、JREにはHotSpot clientエンジンしか入ってないけど、
JDKのJREにはHotSpot serverエンジンも入ってたりとか若干違ったと思う。
1.5.0ってインストール時にJRE入れないオプションなかったっけ?
>>914 ありがとうございます。
確かに、「単なるJREのbin/ 」には無いディレクトリ「server/ 」が、
「JDKの中のJREの bin/ 」の中にはありました。
それぞれのファイルの diff を取ってみると、java.exe そのものには違いが
無いものの、各種DLLはほとんど全部別物のようです。
> 1.5.0ってインストール時にJRE入れないオプションなかったっけ?
あったかもしれない。よく覚えてないです。
# eclipse をソースからビルドするのに J2SDK1.4.2 も必要だったので、
# 結局 JRE を4つも持つことになってしまった。
>>908 J2SEのDLページまで飛んで日本語表記にして一番上にある
プログラムをとってきたんですけどそれじゃだめなのでしょうか?
>>917 ># eclipse をソースからビルドするのに J2SDK1.4.2 も必要だったので、
># 結局 JRE を4つも持つことになってしまった。
Eclipseをビルドする最小構成は、Eclipse + JRE1.4.2。
JDK(1.5)やSDK(1.4)はなくてもビルドは出来る。HDDの
容量を気にするなら覚えといてもいいかも。
ある文字列の中のシングルクォーテーション「'」を「''」に置き換えたいんですが、 replace('\'','\'\'') も replace('\u0027','\u0027\u0027') も もちろん replace(''','''') もダメでした。 僕はどうすれば良いのでしょうか・・・ このままでは家に帰れません・・・
>>918 replaceAll("\'", "\'\'") じゃダメですか?
replaceAll("'", "''"); シングルクオートはエスケープいらない。
Ooops. 素人が適当に答えちゃってすみません。 勉強になりました。
923 :
918 :05/03/06 16:23:22
莫迦が釣られて自己紹介w
925 :
名無し :05/03/06 18:47:53
あのぉ〜 ある文字を2進数で表示したいのですが 何か方法はありませんか??
Integer.toString(n, 2) Integer.toBinaryString(n)
遊びで複数の立方体を面どうし張り合わせた形が何パターンあるか調べるプログラムを作ったんだけど、 OS(WindowsXP)がJavaVMに割り当てるメモリ量ってどうやったら調節できるの? タスクマネージャで見てて、使用メモリが約75MBに増えたところでOuyOfMemoryで終了してしまう。
-Xmx256m 詳しくはツールドキュメントか java -X で。
なんでswingでJFrameにbuttonを貼り付けたらボタンのサイズが ウインドウのサイズと同じになってしまうんですか? JButton bt = new JButton(); bt.setSize(100,30); のように指定しても意味が無いのでレイアウトができないのですが・・・?
931 :
デフォルトの名無しさん :05/03/06 21:33:51
すみません どなたか教えてください コマンドライン上から受け取った3つの数字の最大値をmathクラスを使って 答えをだすにはどうすればよいのでしょうか?
>>930 Java レイアウトマネージャ でぐぐれば?
>>931 int max = Math.max(Math.max(Integer.parseInt(args[0]),Integer.parseInt(args[1])),Integer.parseInt(args[2]));
934 :
デフォルトの名無しさん :05/03/06 21:51:46
>>933 なるほど こうやってやればいいのですか・・・
がんばって続けてみます ありがとうでした〜
935 :
名無し :05/03/06 22:19:35
>>926 できました。
これって一文字づつしかできないんですか?
もし複数文字ではできないんですか?
例えば hanikami という文字を
2進数表示とか??
>>935 やさしいおじさんが「for」というキーワードを教えてやろう。
937 :
デフォルトの名無しさん :05/03/06 23:28:12
Javaの環境のインストール時に、手動でパスを入力するじゃないですか。 あれは、複数の環境が用いられることを考えてるために、あーなってるのですか? なぜなんですか? インストール時にパスを作ることができないんですか?
>>937 出来るけど、Java の 1.4 や 1.5 を切り替えて開発するような人も居ることを考えたら
各自でやった方がいいでしょ。それすら面倒なら Eclipse なんかの統合開発環境
使えば良いじゃん。
そもそも手作業でパスを入力するのは開発する人だけ。実行するだけならパス設定は不要。
開発者に環境切り替えて使うだけの知識があると考えるのは常識の範囲。
939 :
名無し :05/03/07 00:37:08
>>936 もしかして、文字を一回配列化して それから、一文字一文字をforを使って 取り出して、それで〜2進数表示 するってことですか???
>>939 そう。配列化をする必要はないけど、大体そんな感じ。
何か不都合でも?
だな、文字列を2進数表記するなんて宿題みたいな特殊機能はコアライブラリに無い。
>>864 > Linux + Tomcat + PostgreSQL のセコイ環境しか使えない奴増えてんのかね ┐(´ー`)┌
顧客がその環境を押しつける案件が多いよ。
けどこっちとしては
J2SE5に対応したTomcat5.5を使わせて欲しい以外は
全然不満はないな。
まだつづくのks
セコイ環境しか使えない = セコイプロジェクトしか入れない
>>942 別に Tomcat はモノとしては良いとは思うが (自宅鯖でガンガン使ってるし)、サーバ製品
ケチる客とは深くお付き合いしたくないなぁ。
946 :
デフォルトの名無しさん :05/03/07 04:45:23
お客とかもうここは初心者レベルのスレじゃないね
初心者も歓迎するだけであって、初心者専用のスレじゃないから
「Tomcat5.5」は、「参照渡し」、「ポインタ」についで このスレでの禁句に認定されました。
949 :
デフォルトの名無しさん :05/03/07 10:17:25
java.lang.*」がインポートされずにつかえるのにはどのような意味があるのですか?
全てのクラスがObjectを継承してるので、全てのクラスでlangのインポート必要になる。 だったら、わざわざやらせる必要もないだろうということだ。
String のようなどのプログラムでもほぼ確実に使うクラスの import 宣言をわざわざしなくても済む様に。 参照渡し
> 全てのクラスがObjectを継承してるので、全てのクラスでlangのインポート必要になる。 必須なのは直接継承するクラスまでです。
953 :
名無し :05/03/07 12:19:12
>>940 一回それでやってみます
954 :
名無し :05/03/07 12:36:55
String name = "hanikami"; int namae = name.length(); for(i = 0; i <= namae; i++); System.out.println(Integer.toString(i, 2)); これじゃやっぱりダメですかね?
for(int i=0; i<name.length(); i++){ System.out.println(Integer.toString(name.charAt(i), 2)); }
956 :
名無し :05/03/07 13:25:05
>>955 できるのはできたんですが こんなエラーが出ます Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6
>>956 >>954 でやってる文字列の範囲指定の間違い、
> for(i = 0; i <= namae; i++)
(name != null なら name.charAt(name.length()) は IndexOutOfBoundsException を投げる)
を
>>955 のに持ち込んだだけでは?
958 :
名無し :05/03/07 13:43:49
>>957 たぶんそうかも・・・ String name = "hanika"; int namae = name.length(); System.out.println(namae); int i; for(i = 0; i <= name.length(); i++){ System.out.println(Integer.toString(name.charAt(i),2)); } こんな感じにしてます・・・
おいおい <=じゃ100%えらーでるだろう
>>958 0から数えるから終了条件も0を含めた数にあわせないといけないな
961 :
名無し :05/03/07 14:04:26
>>959 あっほんまや! <=にしてる(笑)
<だけにしたらエラーが出なくなりました。
どうもです。
あと>>960の意味なんですが
よくわからないんですけど・・
そもそもエラーメッセージが詳細に出てるっつーのに 6番目のインデックスは範囲外といっておる
Java以前にコンピュータ言語自体が初心者なのか
とりあえずJavaの初心者向けの本1冊かったほうがいい 基本的な文法がわかっていないのと、言語自体が不慣れなようだから
965 :
名無し :05/03/07 14:11:16
>>963 はい、javaを初めてちょっとしかたってないし はじめてプログラミングしてますし・・・ 一応本は持ってるんですけど いまいち頭に入って来なくて・・・
966 :
名無し :05/03/07 14:13:07
実際、本を買っても 今聞いているような事が載ってなくて(自分が理解してないだけかもしれないですけど) ほんとにワケワカメです・・・
びびらすな 回線切って首吊るところだった
キーボードからの入力を時間が来たら切れる ようにしたいのですがどうすればよいのでしょう?
0を含めたってのは、0番から数えるってこと。 そうすると、最後の文字は「長さマイナス1番目」になるでしょ。 <=だと「長さ」番目そのものまで見ようとしてエラーになる。
>>961 配列の長さ(要素数)と添字の違いに注意しる。
長さが3なら、添字は、0,1,2だろ?添字3は存在しねえ。
"<=" を使うって事は、i=3の時もループ終了条件は満たしてないから
(4の時に初めて満たす)、存在しない添字3を参照してるってことだ。
まあ、
int ary[] = new int[10];
for(int i = 0 ; i < ary.length ; i++) {
ary[i] = うんちゃらかんちゃら
}
は慣用句だとおもって叩き込め
ちなみに俺は他言語でもループの条件式で "<=" を使っているのは
ほとんど見たことがないぬるぽ。
> ちなみに俺は他言語でもループの条件式で "<=" を使っているのは > ほとんど見たことがないぬるぽ。 いや、さすがにそれは経験不(以下略)
スマン、同じ内容になってしまった。
しかも
>>969 の方が簡潔で分かりやすい希ガス...orz
>>968 System#currentTimeMillisでも使ってみたら?
Applet#play(URL) くらいしか音を鳴らす方法を知らないので なんかもっとこう、ローカルのアプリケーション向けの play(File) みたいなことができるクラスがあったら教えてください
配列の要素数を増減させるにはnewするしかないのですか?
977 :
デフォルトの名無しさん :
05/03/07 18:16:55 無いので使えないのです