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

ネタ心者歓迎!今更ながらにJava相談室 その4

■ このスレッドは過去ログ倉庫に格納されています
00011NGNG
                        
 || ̄ ̄|   ∧_∧
 ||Java|  (     )   ∧∧    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ||__|  ( ○  )  (   ) < 俺達の旅はここから始まる。
   ||    │ |  │   /  |    \___________
((二二)) .(_(__)〜(___ノ

( ゚Д゚) < カキコする前に>>2-10をチェックしとけゴルァ!!
>>2 過去スレの一覧
>>3 Javaの基礎と よくある質問 (初心者はここをチェック!)
>>4 Java関連スレいろいろ
>>5 Javaを撲滅させたい方、死滅を心配してる方、Cとの違いを知りたい方はこちらへ
* 諸般の事情により、リンクがずれる事もあります。
0320デフォルトの名無しさんNGNG
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>. Java
0321308NGNG
>>319
動きました!
ありがとうございます。
でも原因が分かってないです。
d:\java\ってしてたのが悪かったんでしょうか?
環境変数の問題なんでしょうか?
0322デフォルトの名無しさんNGNG
両方かもね。
0323308NGNG
>>319
すみません。自己解決?しました。
DOSでd:\java>java Helloで動きました。
これ以降は自分で調べます。
遅くまでありがとうございました。
0324デフォルトの名無しさんNGNG
そういうのは自己解決とは…
0325308NGNG
>>324
表現の仕方が悪かったですね。
「何となく原因が判ったので、これ以降は自分で調べます。」に置き換えてください。
スレ汚しすみませんでした。
0326hogeNGNG
Java2Dの質問です。
環境は、JDK1.3 win2kです。

ある図形を,AffineTransformを使って、回転しました。
マウスを使ってその図形をドラックしようとしたところ、うまく行きません。多分、画面の上ではマ図形をウスで
クリックしているつもりでも、図面は、変換された座標上に有るので、一致しないのだと思います。
マウスが図形の中に入っているかどうかの判定は,図形r.contains(p)でやっています。
それで、二つ方法を考えました。
一つは、マウスのポイントを図形の座標へと変換する。
二つ目は、図形の座標を、実際の座標に変換し、マウスポインタと比較する。
一つ目の方法で、マウスのポイントをtransformしましたが、うまく変換していないみたいです。
二つ目の方法は、どの様にして良いのか分かりませんでした。
皆さんは、どんな方法で、マウスが図形の中に有るか判定してますか?
0327デフォルトの名無しさんNGNG
やったことないのでわからんけど、二つ目で、
AffinTransform#createTransformedShape()
で帰ってきたShapeをGraphicsにdrawするようにしたらどうでしょうか?
0328デフォルトの名無しさんNGNG
>>287
おたくの会社、
頭堅いやつばっかりでしょ?
0329デフォルトの名無しさんNGNG
TextFieldをGrigbagLayoutしたら、Frame下部に変な仕切りが
できてしまったのですが、逝っていいですか?
Linux+JDK1.3.1_02だす。
0330デフォルトの名無しさんNGNG
>>329
あ、それ経験があるYO!
いろいろレイアウトを弄って何とか消した記憶がある。
消し方は忘れたけど、消せるはず。
0331デフォルトの名無しさんNGNG
は〜〜。
「俺cobolしか書けないYO!」とか言われ、
java->cobolの呼び出しを実現できるのか調査してます。
microfocus cobolにはライブラリがあるようですが、
一般的な手法で何か参考になるようなwebとかご存知ないでしょうか?
0332デフォルトの名無しさんNGNG
>>331
COBOLオンリーな奴は、プロジェクトからはずすのが正解。
Cならまだしも。
0333331NGNG
それは提案もしたのですが・・・。
java->C->cobolと三段経由しか無いんでしょうか?
cobolなんて全く知らないんで、どうしたらいいでしょう。
0334331NGNG
連続カキコスマソ。

Javaを勉強する気が無い人たちに、
CORBAを理解させるのも同じぐらい骨が折れそうだし・・・。
0335 NGNG
JVM用のCOBOLコンパイラがあるでしょうが。
0336331NGNG
>>335
PREcobolというものでしょうか?ググルで検索したらありました。
ちょっと、調べてみます。

しかし、こういうものって、実際の業務で使われているのでしょうかね?
使ったことある方おられますか?
0337教えてクンNGNG
3つのソースファイルを作りました。
Mother.java
Human.java
Elevator.java
です。
# Mother.java #
public class Mother {
Mother() {}

public static void main(String args[]) {
/* クラスの生成 */
Elevator ev = new Elevator(***);
NewHuman hu = new NewHuman(***);
}
}

こうやってElavatorクラスの関数をNewHumanくらすが、
NewHumanの関数をElavatorクラスが使うにはどうしたらいいの?
0338 NGNG
static public
0339 NGNG
static public 関数で定義してー

Elevetor.関数名()で呼び出し。
0340デフォルトの名無しさんNGNG
>337
・同パッケージにする。
か、
・importする。
か、
・プルパスで記述する。

いじょ。
0341337NGNG
>>338
どういうことですか?
>>337
***の部分にはそれぞれなんて書けばいいのですか?
0342337NGNG
ちょっと用事ができたのでしばらく抜けます。
m(__)m
0343デフォルトの名無しさんNGNG
ひょっとして、new を関数と思っているのか?
こりゃ、コンストラクタなんで、あなたのつくったその
Elevator なり、NewHumanなりのコンストラクタの引数を書く。
で、ev.メソッド名()でメソッドが呼べる。
338さんが言っているのは、staticメソッドにしておけば、
インスタンスを生成しなくてもメソッドが呼べるってこと。

いじょ。
0344329NGNG
おお、同志がイタノカ・・・。
レイアウトからTextField抜いたYo!
文字列入力制御がイタイヨ。
0345風呂がま洗いNGNG
IPv6でちょっとしたツール書きたいんだけど、Javaじゃムリでしょうか?
すでに作ったことある人がいるなら、僕もJavaでがんばってみようかなと思ってます。
ムリならC逝きます。。。どシロウトだけど。
0346デフォルトの名無しさんNGNG
Inet6Address だかを使うんじゃないの?良く知らんけど。
このクラスって 1.4beta からだっけ?
0347風呂がま洗いNGNG
>>346
さんきゅー!
Inet6Addressでサーチしてみます。
なんとかなりそうで嬉。
0348332NGNG
>>331
どうしてCOBOLオンリーの奴をプロジェクトからはずせないのか、非常に気になる。
なんかすごい技術を持ってるの?

スレ違いだから、プログラマー板の愚痴スレにでも来てよ。
0349デフォルトの名無しさんNGNG
>>336
漏れも知りたい。
誰か人柱プロジェクトきぼんぬ。
http://flp.cs.tu-berlin.de/~tolk/vmlanguages.html
0350デフォルトの名無しさんNGNG
サーバー間との送受信データ量を調べたいのですが
どこかにサンプルプログラムとかないですか?
0351デフォルトの名無しさんNGNG
JVMについて知りたくなったのですが、
JVMのアセンブラーやCライクな言語でおすすめは?
0352デフォルトの名無しさんNGNG
Java仮想マシン仕様を読めばよし!
0353331NGNG
>348
漏れは技術支援業務だから、プロジェクト進行には関係ないのさ。
方針とかはお客様が勝手に決めてるYO!

結局IBM-UDBのストアドプロシージャ機能を推しておいた。
人柱になれなくてスマソ。
javaとあんまし関係ないんでsage
035475NGNG
ずいぶん前に質問したのですが、放置されっぱなしで
ちょっと悲しいです。
>>75
の様な事は普通は誰もやらないのでしょうか?
0355 NGNG
JAVAでGUIはやらないもん。
0356デフォルトの名無しさんNGNG
サーブレットスレかサーバサイドスレに書くべき内容だと思うんですが、
繁盛しているこっちに書かせてください。

今Servletを作っているんですが、その中で入力パラメータの禁止文字チェックやってます。
で、Tomcatでは以下のコードでうまくいってたのですが、IBMのWebSphereに移行したら
2バイト文字が全部禁止文字としてひっかかるようになってしまいました。
これって、あまりよいやり方じゃないんでしょうか?
もっとどのAPサーバに持っていっても汎用的に使える方法ってあるんでしょうか?
以下ソース。

String str = request.getParameter( "text" );
isvalid = new String( str.getBytes( "8859_1" ), "JISAutoDetect" );
java.text.StringCharacterIterator sci = new java.text.StringCharacterIterator( isvalid );
for( char c = sci.first(); c != java.text.CharacterIterator.DONE; c = sci.next() ) {
  if( "<>&\"\';^[:]\\,!#$%()=|{`+*}?".indexOf( ( int )c ) != -1 ) {
    throw new Exception( "記号文字を入力することはできません。" );
  }
}
0357デフォルトの名無しさんNGNG
tomcatの設定できたけど
おく物がなんもねえ
0358デフォルトの名無しさんNGNG
>356
2行目は不要かと
0359356NGNG
そうなのですか?>>358
参考書やネットでよくでてくる書き方なので、そのままコピーして使ったんですけど・・・。
0360デフォルトの名無しさんNGNG
WebSphere自体が文字コードの処理をやってくれてるはず。
弄ると逆にうまくいかない。
Tomcatだと自分でコーディングしないといけないけどね。
0361デフォルトの名無しさんNGNG
JDKでコンパイルして、コンパイルエラーになると
エラー個所のソースの行数を表示してくれますよね。
Antを使ってコンパイルすると、この行数が表示されなく
なってしまう(build.xmlの設定次第なのでしょうが)のですが、
エラー時にソースの行数が表示されるのは、どのような条件の時
なのでしょうか?
0362332NGNG
>>353
技術支援業務ってなんかかっこいいな。コンサルみたいなもんか。
いまだに、コボラーを飼ってる会社って凄いなあ。
プロジェクトは失敗する、に5000DIVISION!
0363 NGNG

>>356
それはJava Scriptですか?
0364デフォルトの名無しさんNGNG
J2EE1.3のJMSやJTAを業務システム開発で使ってる人って、います?
面白そうなんだけど、仕事で使うとなるとコンセンサス得るのが
大変そうな気がしまして…
0365 NGNG
Jなんとかって3文字のは嫌いだ。
良くある方法に名前つけちゃって、肥大化したライブラリなぞ見る気に
ならない。
0366デフォルトの名無しさんNGNG
JCB
JRA
JFK
0367デフォルトの名無しさんNGNG
最後のは J.F.K. だ
0368デフォルトの名無しさんNGNG
>>365
アンタみたいな奴が、「そんなの簡単そうだから自分で作る」とか
言い出して、独り善がりで間抜けなライブラリを生み出すおろかな
行為が、日本では多く見られます。

ウチの上司もソレなんだよ…なんでだろうね?糞上司のオナニー
ライブラリなんか保守していくのやだぞ、まじで。
0369 NGNG
>>368
sunのことかな?
0370 NGNG
メッセージのAPIにネットトランザクションのAPIか
おめでてーな。
俺ならメソッド3つか4つで終わるな。
つうかメッセージの方はいちいちAPI作らんわ。
0371 NGNG
あ、死滅スレと間違えてたり・・・。ゴメンネ
0372デフォルトの名無しさんNGNG
>>370
どうやるの?
Publish-Subsclibeモデルだの2フェーズコミットだのを?
0373 NGNG
んなものは必要ない。
グローバルなメッセージプールとロックとメッセージ送るのと
受けてなんか起動するメソッドあれば十分。
0374デフォルトの名無しさんNGNG
かくして壮大な車輪の再発明は続く、、、。
0375デフォルトの名無しさんNGNG
>>356

String str = request.getParameter( "text" );
if(request.getCharacterEncoding() == null){
  isvalid = new String( str.getBytes( "8859_1" ), "JISAutoDetect" );
}

多分これで Tomcat も WebSphere も通るコードになる。サーブレットエンジンが適切な
文字エンコーディングを認識できていれば文字コード変換しなくてもよいということ。
0376デフォルトの名無しさんNGNG
ちょっと手が空いたので楽しみにしてた Struts のフレームワークを使ってみたら
俺らとその周辺で散々再発明しつくされたされたフレームワークでやんの。
俺が仕事で JDK1.1.6 の頃作ったヤツよりヘボいフレームワークだったよ。がっかり。
0377デフォルトの名無しさんNGNG
へぇぇぇ、すごいすごぉい!
0378デフォルトの名無しさんNGNG
マウスをクリックした時、mousePressed, mousedReleased, mousedClickedは
どのような順番で呼び出されるんですか?
0379デフォルトの名無しさんNGNG
>>378
自分の手でやっても
0380デフォルトの名無しさんNGNG
隣のプロジェクト、IBM-MQモドキを再発明している途中です。
ソース見たら、間抜けきわまるライブラリでした。本気で売る
つもりなのかな?
0381デフォルトの名無しさんNGNG
>>373
その程度の事ならRMIでそのままやるだけじゃん。メソッド作るまでもない。
(つうか、それ用のメソッド作ってる人はアホだと思う。)
その上の層をいちいち自分で実装するのか、ライブラリにして標準化して
おくのかの差でしょ。
0382デフォルトの名無しさんNGNG
JMSって、JDBCみたいな単なるインターフェイス定義でしょ?
実装はIBM-MQとかで、そういう商品に対するブリッジドライバが提供される
だけだと思ってたんだけど、違うのかな?
0383デフォルトの名無しさんNGNG
アプレットで、AWTのボタンを使用しています。
Button button1 = new Button("ちんぽ");
といった感じで、ボタンに文字列を表示させてます。

普通にIEで実行(標準の古い規格のJVM)すると、ちゃんと表示されていました。

しかし、昨日JavaPlug-in(1.3)を入れたら(Java2Dもやりたいので)、
ボタンの文字が ロロロ のように、四角に化けてしまいました。
この化けかたって、UNICODE<->SJIS間の化け方だと思うのですが、
なぜPlug-inを入れただけでこんなになってしまうのでしょうか?
Sunのfaqとか見てもいまいちわかんないし・・・

しかし、Javaplug-in入れたとたんに、いきなり動作が重くなったんだけど・・・
こんなもんなの?
0384デフォルトの名無しさんNGNG
>>383
最新のJavaPlug-inは、Appletを感知した時になにかのデーモンを立ち上げる
ようになっているようなので、ソレの起動に時間が掛かってるとおもわれます。
タスクトレイに変なのがでるでしょ?2回目起動からはそんなに遅くないと思う
んだけど。

マシンのロケールが日本語になってないと、画面表示のときにUNICODE→
SJISエンコードしてくれないよ。
0385383NGNG
>>384
立ち上げもそうなんだけど、
実行中も重くなっちゃったんだよね。
例えば、文字のスクロールとかさせてるんだけど、前はいつでもスムーズだったのに、
plug-in入れてからは、ちょっとスクロールバー動かしたりすると
ガクガクしちゃったり・・・

ロケールは、見直してみます。
JVMの設定?
0386 NGNG
>>383
まちがって英語版のプラグイン入れてるからだよ。
International版いれればOK。
0387 NGNG
↓ここにInternational版もある。
java.sun.com/j2se/1.3/ja/jre/download-windows.html
0388デフォルトの名無しさんNGNG
RunnableとThreadの違いは何?
0389デフォルトの名無しさんNGNG
>>388
クラスとインターフェースの違い。
Runnableのほうが応用が利く。
0390383NGNG
international版いれて解決しました
ありがとう

これのサイレントインストールって、サーバー側にissファイルを置いておくと、
アクセスした人はなにも操作しないで、勝手にインストールしてくれるのですか?
それは違う?
0391デフォルトの名無しさんNGNG
Jpegを読み込みたく、下記のようなものを作ったのですが
小さいサイズのものは読めるのですが
大きいサイズ(10M程度)のものがOutOfMemoryが出てしまいます
なにか、回避策はありますか?

private BufferedImage getImage( InputStream inf ){
  JPEGImageDecoder id = null;
BufferedImage inbuf = null;
  //画像の読み込み
try {
id = JPEGCodec.createJPEGDecoder( inf );
//BufferdImageへの変換
inbuf = id.decodeAsBufferedImage();
} catch ( Exception ex ) {
ex.printStackTrace();
}
return inbuf;
}
0392388NGNG
以下はあるプログラムの一部ですが、バグがあるらしく
Human Remove!!
と表示されません。何でですか?
ちなみに、vec_time, vec_planの要素数は同じです。
エラーメッセージは
java.util.NoSuchElementException
at java.util.Vector.firstElement(Unknown Source)
at (クラス名).run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
です。

public void run(){
Integer now, goal;
Integer wait;

try {
do {
wait = (Integer)vec_time.firstElement();
vec_time.removeElementAt(0);
now = (Integer)vec_plan.firstElement();
vec_plan.removeElementAt(0);
goal = (Integer)vec_plan.firstElement();
ev.set_now(now, goal);
th.sleep(wait.intValue());
}while(vec_plan.size() != 1);
System.out.println("Human Remove!!");
th.sleep(3000);
}
catch(InterruptedException e) {
System.out.println(e);
}
}
0393デフォルトの名無しさんNGNG
>391
-Xmxオプションつけて実行すれば最大メモリ使用量増やせるよ

java -Xmx128m Hoge
とか
0394デフォルトの名無しさんNGNG
removeしたらelementが無くなったに1票
0395393NGNG
>>391
あんがとです、出来ました
0396391NGNG
ぐはぁ
↑間違えた

>>393
ありがと。
0397デフォルトの名無しさんNGNG
>392
while(vec_plain.size() > 1) {
//...
}
て書き直せばよいかもね
0398デフォルトの名無しさんNGNG
StringのメソッドindexOf(String s, index i)ってあるじゃないですか。
これをsを大文字小文字無視でやりたいんですけど、どうしたらよいでしょう?
0399  NGNG
一度コピーして全部大文字か小文字に変換せよ。
0400デフォルトの名無しさんNGNG
小文字だとドイツ語のエスツェットが正しく比較できない。大文字に変換せよ。
0401***********NGNG
リフレクションAPIを使ってprivateなFieldへのアクセスしたいんだけど
上手く出来なくて・・・。
プログラム全体はこれです。

import java.lang.reflect.*;
import java.security.*;

public class AccessPri {
private int x = 32;
public AccessPri(){}
public static void main(String[] args){
try{
Class cls = Class.forName("AccessPri");
Field[] fields = cls.getDeclaredFields();
Constructor c = cls.getConstructor(null);
Object object = c.newInstance(null);
for(int i=0; i<fields.length; i++){
MyAction m = new MyAction(fields[i],object);
AccessController.doPrivileged(m);
System.out.println(m.get().toString());
}
}catch(Exception e){e.printStackTrace();}
}
}
class MyAction implements PrivilegedAction {
Field field;
Object object,rturn;
public MyAction(Field f,Object obj){
field = f;
object = obj;
}
public Object run(){
try{
rturn = field.get(object);
return rturn;
}catch(IllegalAccessException e){e.printStackTrace();return null;}
}
public Object get(){
return rturn;
}
}

実行するとField.get(Object)の所で
IllegalAccessException
がどうしても出ちゃう・・・。
これじゃダメなの?
0402デフォルトの名無しさんNGNG
原則としてprivateなフィールドには触れないよ
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/lang/reflect/Field.html#get(java.lang.Object)
0403***********NGNG
原則以外にアクセスできるらしいと・・・
http://www.gimlay.org/~javafaq/S031.html
やり方書いて欲しかった・・・。
0404デフォルトの名無しさんNGNG
>>403
見たけどちゃんと書いてあるよ…

まぁ読んで意味わからない人は
使わない方が良いと思うけど。
0405デフォルトの名無しさんNGNG
久しぶりに先行者見たらディテールがきれいになってパワーアップしてるみた

http://mydomain9.justnet.ne.jp/~hinden5/senkousha/gamesnow2.html
0406 NGNG
>>405
作成者自作自演
0407デフォルトの名無しさんNGNG
>>404
確かに俺は使いたくないよ・・・。
でも先輩が
「取ってくる事出来るんでしょ、じゃあ、とって来て!」
って・・・。
しかも期限が来週・・・。
お願いします。
さっき書いたプログラムでどこがいけないか教えて!
0408 NGNG
>AccessController と PrivilegedAction を使用すればできますが...。

0409デフォルトの名無しさんNGNG
>>408
使い方は>>401でいいんですか?どこか間違ってますか?
0410デフォルトの名無しさんNGNG
SecurityManagerをリインストールしちまえ。
ReflectPermissionをノーチェックにしてしまえばなんでもし放題。
0411410NGNG
>>407
仕事でそんなことさせるような先輩はぶち殺して首にしておくのが
最良の解決策と思われ。
0412401NGNG
>>411
確かにそれが最良w
privateにアクセスするのは
やはりあまり良くないし。
普通 public だけで十分だよ。
SecurityManagerをいじるってのは
自分のPCでしか使えないから
私が求めるのとは少し違うかな?
最終兵器はサポート外かな?
でも誰か知ってたらお願い。
0413デフォルトの名無しさんNGNG
>>普通 public だけで十分だよ。
アクセスメソッド書けよ、
とツッコミ入れてる原理主義者が何人かいると思われ。
0414410NGNG
>>412
System#setSecurityManagerで、いかがわしい?自作SecurityManagerサブクラスを
インストールしてしまうことが可能だよ。ブートストラップ位置自分で決められるん
でしょ?アプリケーションサーバとかじゃなければどこでも可能だよ。可能なんだけど、
やろうとは思わんが。
0415410NGNG
privateにアクセスするのが悪いんじゃなくて、
そんな必要があるような設計のクラスが存在することがイカレテル。

だれがそのクラスをつくったのか?何でアクセスする必要があるのか?
理由を記述せよ。
0416401NGNG
あるクラス(なんでもいい)に値を変えてメソッドを動かして
仕様通りに動いているか確認するのを作ってます。
確認するのにprivateの値を見れたら
確認がしやすくなるという理由により
privateなFieldにアクセスしたいのです。
その方法をきぼんぬ。
0417410NGNG
>>416
ああ、単体試験用ね。じゃあ、仕方ないね。

起動オプション-Djava.security.policy=ファイル名

で、AllPermissionを許すPolicyファイル食わせるか、mainメソッドの入り口で

System.setSecurityManager(new SecurityManager(){
 public void checkPermission(Permission p)throws SecurityException{
  return;
 }
});
とやって、パミッションチェックなしのSecurityManagerインストールしちまえ。
0418デフォルトの名無しさんNGNG
>>417
410じゃないんだけどさ、
試してみたけど、ダメっぽいんだけど。

------------ AllPermission.policy ---------
grant {
 permission java.security.AllPermission;
};
-------------------------------------------
で
java -Djava.security.policy=AllPermission.policy クラス名
ってやったけど Field介して private フィールドへのアクセスすると
IllegalAccessException 食らうっす。
setSecurityManagaerもやったけど。
J2SE 1.3.1_02 と J2SE 1.4 と IBM の JDK 1.3 で全滅。

なんか手順間違ったかな?
410の人は出来た?
0419ななしNGNG
相談じゃねえんだ。提案だ、聞いてくれ。

逝った瞬間にペニスが破裂していた......そんな感覚の
ORB、「HORB」を使ってみてくれ。
http://horb.etl.go.jp/horb-j/
■ このスレッドは過去ログ倉庫に格納されています