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

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

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

( ゚Д゚) < カキコする前に>>2-10をチェックしとけゴルァ!!
>>2 過去スレの一覧
>>3 Javaの基礎と よくある質問 (初心者はここをチェック!)
>>4 Java関連スレいろいろ
>>5 Javaを撲滅させたい方、死滅を心配してる方、Cとの違いを知りたい方はこちらへ
* 諸般の事情により、リンクがずれる事もあります。
0054デフォルトの名無しさんNGNG
>>39
この間医者に行ったんだけど、医者の問診ってプログラマの障害解析に似てると思ったよ。
「今日はどうしましたか?」「腹が痛いです」「どのようにですか?」「キリキリ痛みます」「いつ頃からですか?」「二日前からです」…
医者も「人体」という巨大なシステムのメンテナンスやってるんだなと思ったよ。

ネット上で話していると相手がプロなのか素人なのかわからないからねー。いくら医者
でも医者同士で「患者が体調悪いと言っていますけどどうしたらよいですか」なんて間抜け
なことは言わないだろうし、かといって素人だと問診してやらないと原因突き止められないし。

俺は最初の「どうしましたか」で技術屋としての状況解析能力を試されているような気がして
のーみそフル駆動でムキになって状況説明してしまった。

つうか、独り言なので sage
0055デフォルトの名無しさんNGNG
>>53
うお、ホンマや。
鬱だ…
0056デフォルトの名無しさんNGNG
JPopupMenuで困っております。

自分の作ったアプリでJPopupMenuがポップアップ表示されないんです。
で、OSがWindowsなので右クリックでポップアップされるはずなんですが、
自分のコードが駄目なんで他人の正常なコードで試したら、それでもやっぱり
駄目でした。
ので、これはコードが原因ではなく、自分が使っているPCが悪いと思うんですが。
ちなみに普段はWindows98で右クリックは正常に動作しています。
解決策を教えてください。
0057デフォルトの名無しさんNGNG
TurboLinux7.0で、Sun Java 2 SDK1.3.1_02使ってます。
AWTで、LabelとTextFieldとButtonをGridbagLayoutつかって
Frame上に配置。setSize()とsetLocation()で位置合わせ。
このパターンで、画面を作成し、javacでコンパイルしたら、
他のフレームはokだったんだけど、一つだけ、
Frameの一番下に背景色で、Layoutしていないはずなのに
背景色の物体(見た目Frameに区切り線入れただけ)が
ついて来るんですけど、同じソースでWindow98SE+JDK1.3.1だと
出ないんですけど、Bugでしょうか?
0058 NGNG
>>49
プラグイン。
0059デフォルトの名無しさんNGNG
IEでアプレットを表示したときに、
マウスのホイールでスクロールさせた場合に表示がボロボロになるのは何とかならないの?
0060デフォルトの名無しさんNGNG
>56
mousePressedとmouseReleasedの両方で
チェックしてる?
public void mousePressed(MouseEvent e) {
 if(e.isPopupTrigger()) {
  hoge();
 }
}
public void mouseReleased(MouseEvent e) {
 if(e.isPopupTrigger()) {
  hoge();
 }
}

マウスイベント自体はちゃんと受け取れてる?
JDKのバージョンは?
0061デフォルトの名無しさんNGNG
>59
IEのバージョンを変えてみるとか、
Java Plug-inを試してみるとか、
ブラウザを替えてみるとか。
ビデオカードのドライバは・・・関係ないか。
006259NGNG
>61
NC4.75だと、問題なく動いた。素晴らしい!
でも個人的に動けばOKという話でなく、JAVA1.1のアプレットで作っったのでグローバルに動きます…
みたいなことがしたいので、環境変えて対応ってのは問題解決にならなかった。
残念!
0063デフォルトの名無しさんNGNG
Javaの資格って持ってる?
問題集を探しています。
0064デッドロックの質問ですNGNG
改行が多いとのエラーが出て書き込めなかったのでリンクを貼ります。
ご指導よろしくお願いします。
ttp://maebashi.cool.ne.jp/l654/2ch/deadlock.txt
0065デフォルトの名無しさんNGNG
その部分はただの代入文だしょ
aのフィールドbにローカル変数bの値を代入。
bのフィールドaにローカル変数aの値を代入。
こう書き換えたほうがわかりやすい?

A a1 = new A();
B b1 = new B();

a1.b = b1;
b1.a = a1;


a1とb1が互いに参照しあっていて
2つのスレッドがそれぞれをロックしたまま
もう一方にアクセスしようとしてるから、
デッドロックが起こる、と。
0066sysNGNG
>>22
getContentPane().setLayout(null);
してから
button_hogehoge.setBounds(int left, int bottom, int width, int height);
な感じじゃだめ?
widthだけ固定でheightはレイアウトにあわせて可変にしたいってこと?
006764ですNGNG
>>65さん有難うございます。
なんとなくわかりましたが、
a1.b = b1;
b1.a = a1;
↑これのフィールドaとbの指しているものが
まだよくわかりません。
お手数ですが再度ご教授お願いします。
0068デフォルトの名無しさんNGNG
class A {
 B b;
}
class B {
 A a;
}
class Hoge {
 public static void main(String args[]) {
  A a1 = new A();
  B b1 = new B();
  a1.b = b1;
  b1.a = a1;
 }
}

これの意味がわからないってこと?
まぁ、入門書の一冊でも買って
じっくりがんばってください。
006964ですNGNG
>>68さん有難うございます。
その書き込みでさらにわかりました。
その代入文は今まで勉強してきて、
初めてでてきたので....
aやbの部分はメソッドだけだと思ってました。
お手数をお掛けしました。
0070デフォルトの名無しさんNGNG
>>41
漏れはこれを使っている。
ttp://member.nifty.ne.jp/k-takata/mysoft/rderr.html
0071デフォルトの名無しさんNGNG
レッドハット7.2ってJDKのバージョンなんですか?
調べるコマンドありましたっけ?
0072デフォルトの名無しさんNGNG
>>71
パスがとおっているなら
java -version
で、JVMのバージョンが表示されると思うけど…
RHってJDKバンドルされてたのね。知らんかったYO。
0073デフォルトの名無しさんNGNG
>>72
7.2から?
うちのRedHat7.1では見かけてなくてSunから落としたよ。
単に漏れがよくみなかっただけか?
007456NGNG
>>60
>mousePressedとmouseReleasedの両方で
>チェックしてる?

してます

>マウスイベント自体はちゃんと受け取れてる?

受け取れてます

>JDKのバージョンは?

1.3です。
0075デフォルトの名無しさんNGNG
あるパネルの上に張り付けたパネルに対してマウスのドラッグ操作で
そのパネルのサイズを変更したいんですけど、どうやってやるのが
一般的なんでしょう?
javax.swing.JInternalFrame
みたいに使えるパネルを作りたいんです。
JInternalFrameのソースみてみたんですけど、JInternalFrameでは
マウスイベントとか取ってないんですよね。
良かったら誰か教えて下さい。
0076デフォルトの名無しさんNGNG
>74
isPopupTrigger()がtrueを返してくれないってこと?
それとも、その後のポップアップの表示がうまくいかない?

あとmouseClickedでもチェックした方がいいみたい。
007756=74NGNG
>>76
isPopupTrigger()がtrueでSystem.out.println("aaa")としてだめだったので
trueは返していないと思いました。
ところが、ためしに!isPopupTrigger()にしてみても、これまただめでした。
うんともすんともいいません。
ちなみにチェックをしているのはmousePressed, mouseReleased, mouseClickedです。
0078デフォルトの名無しさんNGNG
>77
if(!e.isPopupTrigger()) System.out.println("aaa");
で試してもaaaと表示されなかった、ってことだよね?
やっぱりマウスイベント自体が受け取れてないんでわ。。
とりあえず問題が再現する最小限のコードを書いてみてほしいす
0079デフォルトの名無しさんNGNG
取り敢えず,
component.enableEvents( AWTEvent.MOUSE_EVENT_MASK )
して
component.processMouseEvent( MouseEvent event )
上書きでやってみて、isPopupTrigger() な
イベント捕まえられるか試してみるとか。
008056=74=77NGNG
>>78
そのとおりです。
これがそのコードです。どこかおかしいでしょうか?

public void checkPopup(MouseEvent e) {
if (e.isPopupTrigger()) {
popup.show(this, e.getX(), e.getY());
}
}

public void mousePressed(MouseEvent e) { checkPopup(e); }
public void mouseClicked(MouseEvent e) { checkPopup(e); }
public void mouseEntered(MouseEvent e) {}
public void mouseExited (MouseEvent e) {}
public void mouseReleased(MouseEvent e){ checkPopup(e); }
0081デフォルトの名無しさんNGNG
一応聞くけど addMouseListener 登録してないとかないよね?
008256=74=77=80NGNG
>>81
あ、それは大丈夫です。登録してます。
0083デフォルトの名無しさんNGNG
最近Javaを始めたのですが、
変数の扱い(基本型以外は参照になる)など
いろいろとC++の違いに戸惑いながら勉強中。

時間をかければいずれ習得できるとは思いますが、
C++がわかる人向けのJava解説本とか
解説ページはご存じないでしょうか。

解説ページ:C++ vs Java(そこそこ参考になりました)
http://www.njk.co.jp/otg/Study/comp-language/cpp-java/
0084デフォルトの名無しさんNGNG
import java.awt.*;
import java.awt.event.*;

public class test extends Frame implements MouseListener{
 public test7( String title ){
  super( title );
  super.addMouseListener( this );
 }

 public void checkPopup(MouseEvent e) {
  if (e.isPopupTrigger())
   System.out.println( "PopupTrigger event" );
 }
 public void mousePressed(MouseEvent e) { checkPopup(e); }
 public void mouseClicked(MouseEvent e) { checkPopup(e); }
 public void mouseEntered(MouseEvent e) {}
 public void mouseExited (MouseEvent e) {}
 public void mouseReleased(MouseEvent e){ checkPopup(e); }

 public static void main( String[] args ){
  test window = new test( "test" );
  window.setSize( 100, 100 );
  window.setVisible( true );
 }
}

む、PopupTrigger event って表示されたけど。
環境疑うとか、自前のコンポーネントに
マウスイベント全部取られてないか疑ってみるとか。
0085デフォルトの名無しさんNGNG
あ、コンストラクタ修正し忘れた。
008680NGNG
>>84
ありがとう。
自前のコンポーネントにマウスイベント全部取られるって、どういう状態でしょうか?
いまやっているのは、Frameの上にボタンとかキャンバスとかがあって、
キャンバスの上で右クリックを押したときにポップアップが出てくるっていうふうに
したいんですが、この辺りが怪しいんでしょうか?
008780NGNG
>>84
さきほどif(!isPopupTrigger())でもaaaが表示されないと言いましたが、
あれは間違いで、aaaが表示されています。だから、trueを返していないようです。
一回クリックすると2回表示されます。PressとReleaseですかね。
サンプルコード試しても駄目だったんで、やっぱり環境がおかしいんでしょうか?
そこらへんを調べるにはどうしたらいいんですか?
0088デフォルトの名無しさんNGNG
isPopupTrigger がtrueになる マウスイベントは
Windowsの場合
WmMouseUp時、
SendMouseEvent(
 java_awt_event_MouseEvent_MOUSE_RELEASED,
 nowMillis(),
x, y,
 GetJavaModifiers(flags, button),
 clickCount,
 (button == RIGHT_BUTTON? 1 : 0), //これが PopupTrigger
 msg
);
ぐらいみたいなので(ちゃんと調べてないけど)、
VisualC とか持ってたら
マウスイベント出力させて調べてみるとか。
ぐらいしか思い浮かばない。

マウスのドライバが ボタン離された方の
イベント送らない、なんてことは無いと思うけど…
008971NGNG
バージョン1.1かよ!
最新のいれろや・・・
0090デフォルトの名無しさんNGNG
ゲイツ君とこのVMがいつまで経っても1.1だから、
作る側も上げにくいよな
0091デフォルトの名無しさんNGNG
それはSunが自分でやったことだからしかたない。
0092デフォルトの名無しさんNGNG
public class JP extends JPanel{
  pbulic JP(){
    JButton JB = new JButton("button") ;
    JB.addActionListener( new JBListener() ) ;
    add( JB ) ;
  }
  class JBListener implements ActionListener{
    public void actionPerformed(ActionEvent e){
    }
  }
  public static void main(String args[]){
   JFrame frm = new JFrame("frame") ;
   Container cont = frm.getContentPane() ;
   JP jp = new JP() ;
   cont.add(jp) ;
}

のようなプログラムで、ボタンJBを押したときにパネルjpが
隠れるようにしたいのですが、setVisibleを使うのでしょうか?
0093 NGNG
>>92
なんで自分で試さないわけ?
0094デフォルトの名無しさんNGNG
>>93
すいません。どこでどう使うのかわからないんです。
jp.setVisible(false)
ってやってもだめですよね
0095デフォルトの名無しさんNGNG
>>94
どこでどう使うのか分からないのに、なんでアクションリスナーが
しかもインナークラスであるのか教えてくれ…
009629NGNG
やっぱjarできない汗
jarをWクリックすると
MainClassを見つけられなかった。と英語で出ます。
app.classにmainメソッドがあって
jarに圧縮するときはMain-Class: appとしました。
物分り悪くて鬱…
0097デフォルトの名無しさんNGNG
>>29
うへ、まだやってたのか…
jar -xf して解凍して、
META-INF/MANIFEST.MFがどうなってるか晒してくれ。
0098デフォルトの名無しさんNGNG
>>29
あと、app.classのパッケージとjar内部のパス位置はどうなってる?
パッケージまでのフル名じゃないとダメで、jar(zip)内部のパスが
パッケージと一致してないとダメだよ。
0099 NGNG
正直、jarファイルでそこまで悩むなんて凄いよ。
0100デフォルトの名無しさんNGNG
こういうところで徹底的に調べておくと
あとあと役に立つから無駄にはならないよ。
頑張れ!jarが理解できない人!
010129NGNG
Manifest-Version: 1.0
Main-Class: app
Created-By: 1.3.1 (Sun Microsystems Inc.)
こういう風になってます。
パッケージ云々はよくわからないんだけど
同じフォルダに入ってます。
0102 NGNG
パッケージは?
010329NGNG
パッケージってなんでしょう?(^^;
ちなみにソース。適当です。
import java.awt.*;

public class app{
public static void main(String args[]){
app1 a = new app1("TITLE");
a.setSize(500,500);
a.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}});

a.show();
}
}

class app1 extends Frame{
Label label;
app1(String title){
super(title);
setLayout(new FlowLayout());
label1 = new Label("aa");
add(label1);}
}
010429NGNG
表示を簡潔にするために削ったら、labelに1がついてませんね。
あとeventもimportしてないし(^^;
0105 NGNG
よくわからんが
>>104の修正をすれば
jarのダブルクリックで起動できたけどね。

とりあえず、トラブルの再現方法を克明且つ正確に書いてみなよ。
010629NGNG
マヂですか…
じゃぁ書く。
>>103-104のファイルを用意。
Main-Class:appと空行の2行のファイルaiueoを用意。
そのファイルを同じフォルダに入れる。
jar cvfm app.jar aiueo *.class
を実行し、Wクリック。何も起こらない。
jar -xf app.jarを実行。
Manifest-Version: 1.0
Main-Class: app
Created-By: 1.3.1 (Sun Microsystems Inc.)
こういう風になってます。
WクリックしてもCould not find main class..(うろ覚え)さえ出ない。
#Ctrl+Alt+Deleteやってみるとjavawが待機してるではありませんか…
#これは開かれるはずだったやつだと思うけど関係ない?
0107 NGNG
>>106
それで動くはずだけどね。

ちなみに、
java app と普通にコマンド入力して起動するの?

あと関係無いけど、クラス名の先頭文字は大文字にしなよ。
Javaの慣例だから。
0108デフォルトの名無しさんNGNG
>>106

jarからの起動は今までやったこと無かったので勉強がてらやってみたけど出来たぞ。。
以下手順。
1.下のソース(App.java)を作成してコンパイル。
2.Main-Class: appと記述して改行しただけのファイルaiueoを作成。
3.jar cvfm App.jar aiueo *.class を実行
4.App.jarをWクリック→フレームが起動→(゚д゚)ウマー

-------App.java---------
import java.awt.*;
import java.awt.event.*;
public class App {
public static void main(String args[]){
App1 a = new App1("TITLE");
a.setSize(500,500);
a.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}});
a.show();
}
}
class App1 extends Frame {
Label label1;
App1(String title) {
super(title);
setLayout(new FlowLayout());
label1 = new Label("aa");
add(label1);
}
}
-------App.java ここまで---------
0109デフォルトの名無しさんNGNG
>>106では
Main-Class:app
とかいてあるけど
Main-Class: app
では?
0110109NGNG
でもそしたらjarでエラーがでるはずか・・。
0111デフォルトの名無しさんNGNG
>>106
ダブルクリック起動だと例外発生してもどこにも何も
表示されないから、コンソールから起動トライしてみそ。

java -jar app.jar
011229NGNG
出かけるから帰ってきたらやってみる。
0113デフォルトの名無しさんNGNG
ant の javadoc タスクで質問なんだけど

<target name="apidocs" depends="compile">
<mkdir dir="${apidocs.dir}"/>
<javadoc sourcepath="${src.dir}" destdir="${apidocs.dir}"
link="http://java.sun.com/products/jdk/1.3/docs/api"
Locale="en_US"
packagenames="${package_name}" />
</target>


というふうに Locale を指定しても、相も変わらず日本語が混じった javadoc
が出力されます。

これってバグ?
ちなみに、私の環境は windows98 + cygwin でございます。


`javadoc\
-locale en_US\
-link http://java.sun.com/products/jdk/1.3/docs/api\
-sourcepath ../../src/ com.narucy.util`

とすると、英語で出力されます。
(ただし、Locale オプションを最期に指定するとダメだったりしますが・・・)
0114デフォルトの名無しさんNGNG
>>113
Ant使ったことないけど、"L"ocaleじゃ属性が違うとかじゃないの?
0115デフォルトの名無しさんNGNG
http://jakarta.apache.org/ant/manual/CoreTasks/javadoc.html

"Locale" です。


(ant ってあんまり、ね。これで JUnit 自動テストとかいっても、それなら
Ruby で build スクリプト書いたほうが全然いいし、みんな大抵 Ruby くらい
はインストールしてるだろうから、Write once,run anywhere が崩れること
ないだろうし自由度高いから。なんで ant がこんなに流行っているかが分からん)
0116デフォルトの名無しさんNGNG
>>115
JavaHouseで 今年の1月3日に同じ質問でてるよ。

以下はそのときの解決法。
http://java-house.jp/ml/archive/j-h-b/048034.html#body
011729NGNG
java -jar app.jarの結果
Exception in thread "main" java.lang.NoClassDefFoundError: app
とでます。メインメソッドあるのになぜじゃ…
0118デフォルトの名無しさんNGNG
GUI中のボタンからファイルログを出し、入出力ファイルを指定するとこまでは出来
たのですが、それを利用してボタンを押したらソフトを動かすコマンドをJavaのGUI
で作りたいのですが・・・(ソフト名<入力ファイル>出力ファイル)
0119デフォルトの名無しさんNGNG
>118
ttp://java.sun.com/j2se/1.3/docs/api/java/lang/Runtime.html#exec(java.lang.String)
ttp://java-house.jp/ml/topics/topics.html#core-runtime
0120クソみたいな質問ですまんNGNG
WindowsでJAVAの開発ツールって何を使ってます?
VJ++とJBuilderしか知らないんですが、他にもあるんですか?
0121デフォルトの名無しさんNGNG
ForteとかVisualCafeとかVisualAgeとかEclipseとかCodeWarriorとか
0122デフォルトの名無しさんNGNG
>>120
Forte
VAJ
VCafe
0123121NGNG
勝った!
0124デフォルトの名無しさんNGNG
JavaでできてるIDEは遅いから嫌いだ。
VAJはWebアプリ作るのがWebSphereを前提としてるから嫌いだ。
だからJDKを使うのだ。
0125デフォルトの名無しさんNGNG
Java開発ツールってなんでクソばっかりなの?
0126デフォルトの名無しさんNGNG
return;
の意味って、Perlでいうところの"exit;"と同じなの?
012729NGNG
jarでででできました。
皆さん助言ありがとうございました。
理由は何でなのかわかりませんが…(^^;
でもありがとうございました。
これからは教える立場に回ろうと思います…
0128デフォルトの名無しさんNGNG
System.out.printlnっすか?
0129デフォルトの名無しさんNGNG
すみませんが、javaでフラクタル(コッホ曲線=雪片曲線)を描きたいんです。
でも再帰的な処理のところがよくわかりません。
とりあえず最小単位の

_/\_

は作れたのですが、これを繰り返すことができません。
詳しい方お願いします。
0130デフォルトの名無しさんNGNG
>>129
CでもPASCALでもやり方はいっしょだよ。
013129NGNG
あぁできたのに違うやつやったらまたエラーだ…
java.io.IOException: 既存 jar ファイルの書き込み中にエラーが発生しました。
at sun.tools.jar.Main.run(Main.java:179)
at sun.tools.jar.Main.main(Main.java:904)
これはどういう意味でしょう…
0132デフォルトの名無しさんNGNG
見てのとおり書き込みエラーじゃ
テンポラリの容量とか書き込み許可属性とか見れ
0133デフォルトの名無しさんNGNG
>>127
こらこら。色々助言受けといてそれで終わりかい?

もし次に同じ事で悩む厨房が出たらどうする?全く同じ事の繰り返すじゃないか。
一連のコメント達が、君の役だけにしか立たない事になる。
それは2chサーバ資源や、質問に答えてくれた親切な人達の厚意を無駄にする事だ。

何故上手くいったのかを書き残せば、未来の厨房の役にも立つかもしれないだろう。
君にはその責任がある!!
013429NGNG
>>133
理由はわかりません…
Appの人のをコピペしたらできたんで。
>>131はbbb b = new bbb();のbをbbbに直したらできました。
0135デフォルトの名無しさんNGNG
Jpanel上にあるコンポーネントをおいて表示させたいのですが
実行するとパネルはでるのですが灰色のままなにもおこりません。
プログラムがおかしいの?
0136デフォルトの名無しさんNGNG
>>134
コピペって、それで 127 みたいな発言できるとは…
キミ将来大物になれるかもよ。
失敗したらズタボロの人生歩むかもしれないけど。
0137デフォルトの名無しさんNGNG
>>135
それだけじゃわからん。
0138デフォルトの名無しさんNGNG
>>127
つーかさ、jarで悩むとか以前の問題な、きっと。
コピペして動いたって何も理解してないじゃん。

こういうやつがあぼーんしたくなるソースを量産するのだな・・・
013929NGNG
コピペのやつのとおりに
自分で作りなおしてもできましたし、やり方は理解できました。
問題は$1を移動するのを忘れてただけかもしれない…
0140 NGNG
なんか、実りが無いね。フゥ。
0141デフォルトの名無しさんNGNG
あるアニメーションを正典、逆転ボタンをおすことにより動かしたいんですが
ボタン無しで動かすことはできました。
ボタンを追加しようとすると、これはイベントリスナーの知識がいりますか?
0142デフォルトの名無しさんNGNG
javacでコンパイルするとき、そのソースの中で使われてるクラスどもは
いっしょにコンパイルされちまいますね
0143デフォルトの名無しさんNGNG
>>120-125
teikadeの開発って、もうまったくやってない(進まない)のかな?

teikade無しではまともに開発できないカラダになってしまったのだけど。
0144デフォルトの名無しさんNGNG
>>143
もうだめぽ
0145デフォルトの名無しさんNGNG
キーとインデックスの両方で要素を特定できるコレクションAPIって、
Javaのデフォルトパッケージにはあるのでしょうか?
HashtableやHashmapはキーは指定できてもインデックスでの指定は出来ないみたいだし。

自分でその機能を持つクラスを作るしかないのでしょうか?
0146109NGNG
>>145
1.1.xの頃そういうのが見つからなくて、取得したEnumerationの順番を
保証するようなHashtableを作った覚えがある。
0147デフォルトの名無しさんNGNG
>>145
JDK1.3までなら、自作しかないです。
JDK1.4ならLinkedHashMapというクラスが追加になってますので
それを使いましょう。
0148145NGNG
まあ、HashMapと、keyによるLinkedListをdelgeteeにした
Mapのコンクリートクラス一個自作すればいいだけだけど。
0149147NGNG
145じゃないや、メンゴ。
0150デフォルトの名無しさんNGNG
if(resources[i].allocated == false) {
resources[i].allocated = true; }
以下の中で、なぜ上記の部分を削除してコンパイル実行するとResourceが0だけになるんでしょうか?
class Resource {
boolean allocated;
int rid;
Resource(int rid) {
allocated = false;
this.rid = rid; }
void use(int uid) { try {
System.out.println("User " + uid + " uses resource " + rid);
Thread.sleep((int)(5000 + 5000 * Math.random())); }
catch(Exception e) { e.printStackTrace(); } } }
class ResourceCoordinator {
private final static int NUMRESOURCES = 3;
private int totalAllocated;
private Resource resources[];
ResourceCoordinator() {
totalAllocated = 0;
resources = new Resource[NUMRESOURCES];
for(int rid = 0; rid < NUMRESOURCES; rid++) {
resources[rid] = new Resource(rid); } }
synchronized Resource get() {
while(totalAllocated == NUMRESOURCES) {
try { wait(); }
catch(InterruptedException ie) {
ie.printStackTrace();
System.exit(0); } }
Resource r = null;
for(int i = 0; i < NUMRESOURCES; i++) {
if(resources[i].allocated == false) {
resources[i].allocated = true;
r = resources[i]; break; } }
++totalAllocated;
notifyAll();
return r; }
synchronized void put(Resource r) {
r.allocated = false;
--totalAllocated;
notifyAll(); } }
class User extends Thread {
ResourceCoordinator rc;
int uid;
User(ResourceCoordinator rc, int uid) {
this.rc = rc;
this.uid = uid; }
public void run() {
try { while(true) {
Resource r = rc.get();
r.use(uid);
rc.put(r);
sleep(3000); } }
catch(Exception e) {
e.printStackTrace(); } } }
class Zero { private final static int NUMUSERS = 10;
public static void main(String args[]) {
ResourceCoordinator rc = new ResourceCoordinator();
for(int uid = 0; uid < NUMUSERS; uid++) {
new User(rc, uid).start(); } } }
0151 NGNG
丸投げすんなボケ。
0152デフォルトの名無しさんNGNG
クラスパスについて質問。

時々 jre/lib/ext/ に入れるのではダメで、任意のディレクトリに
置いて、クラスパスを設定しないといけない JAR ライブラリとか
あるけど、これはどうして?

jre/lib/ext/ に置くのと、クラスパスを設定するのとの違いは
何なのですか? 解説しているWebサイトなどご存知でしたら
ご教授ください。
0153152NGNG
ここに説明があった。
http://java.sun.com/products/jdk/1.2/ja/docs/ja/guide/extensions/

なんとなく分かったような。つまり、分かってない。
0154デフォルトの名無しさんNGNG
単にJDK側のjre/lib/ext/にJARおいて
JRE側のjavaコマンド呼んじゃってる、とかじゃないの?
■ このスレッドは過去ログ倉庫に格納されています