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

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

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

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

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

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

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

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

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
0577デフォルトの名無しさんNGNG
アメリカでJAVAを使っているのですが、日本語が見れなくてかわりに 
□□□ と表示されます。誰か直し方知ってましたら教えてください。
初心者なのでできればわかりやすくお願いします
0578デフォルトの名無しさんNGNG
>>577
日本でVAIOでも買って使え
0579デフォルトの名無しさんNGNG
>>565
具体的に何がくる?
転職の参考にするからオシエレ
0580デフォルトの名無しさんNGNG
>>579
死滅スレからの出張に手を出すのやめれ
0581579NGNG
スマンコ
0582デフォルトの名無しさんNGNG
>>579
信長
0583デフォルトの名無しさんNGNG
>>578
え? 修復不可能?
0584デフォルトの名無しさんNGNG
>>583
>初心者なのでできればわかりやすくお願いします
0585デフォルトの名無しさんNGNG
>>584
まぁそういわれれば(笑)
質問スレなんだからいちいち初心者おちょくんなよ。

0586デフォルトの名無しさんNGNG
>>577
コンパネの「地域と言語のオプション」から日本語入れてもだめ?
0587デフォルトの名無しさんNGNG
//Enshuu43.java
class Enshuu43{
public static void main(String[]args){
int a=1;
int b=2;
int c=3;
System.out.println("a+b+c="+a+b+c);
}
}
のプログラムを実行すると
表示がa+b+c=6
にならないのはなぜ?
0588デフォルトの名無しさんNGNG
>>587
"a+b+c="+a+b+c は ((("a+b+c="+a)+b)+c) と同じ。
0589587NGNG
>>588
即レス サンクス
0590デフォルトの名無しさんNGNG
アプレットの実行中に、appletviewerの再読込みと同じような動作をさせるには
どのようにすればいいのでしょうか?
「ボタンを押すとアプレットが再読込みされる」
というものを作りたいと思っています。
0591デフォルトの名無しさんNGNG
>>590 getAppletContext().showDocument()で開きなおしじゃだめなん?
0592デフォルトの名無しさんNGNG
>>587
面白い題材だね。
0593デフォルトの名無しさんNGNG
java.exeとjavaw.exeの違いはなんですか?
0594デフォルトの名無しさんNGNG
>593
AWTかSwingでアプリケーション作って(アプレットじゃあかんですよ)
それぞれで実行してみ。すぐ分かる。
0595デフォルトの名無しさんNGNG
javawはコンソールを使わないjava。
0596デフォルトの名無しさんNGNG
Object[]からHoge[]にキャストするにはどうすればいいんですか?
0597デフォルトの名無しさんNGNG
(Hoge[])array
ただし、array は Hoge もしくはサブクラスの配列のインスタンスを持っている必要がある。
0598r/556NGNG
>>559
Genericsは関係ないのでは
0599デフォルトの名無しさんNGNG
超初心者です。javaのジャも知りません。
このスレは初心者歓迎らしいので質問させていただきます。

あるホームページでExecutable Jar Fileとjavaバーチャルマシンというものを
ダウンロードしました。このマシンでファイルが実行できる(半導体材料の物性値,移動度の
キャリヤ濃度依存を様子がパラメータを変えつつ対数グラフで観察できる)のですが
このファイルに書かれている数式やプログラムが見たいときはどうすればいいのでしょうか。
メモ帳でみても漢字ばかりのものになってしまいます。
 
0600デフォルトの名無しさんNGNG
>>599
プログラム知らないなら見ても理解できないと思うが?
0601デフォルトの名無しさんNGNG
>599
必ずできますが基本的に無理です
0602デフォルトの名無しさんNGNG
>>599
ダウンロード元のホームページの作者に聞けよ。
0603575NGNG
>>576
すまん、Win
0604デフォルトの名無しさんNGNG
>600 プログラムというよりは数式が知りたいので。
   それがわかればigorで作れると思います。 
0605デフォルトの名無しさんNGNG
>>604
だからお前さんにゃプログラムから数式を読みとることができねーだろって。
ここは初心者歓迎かもしれんが、ド素人はお断りだ。
0606デフォルトの名無しさんNGNG
>>605
何を言ってるんだよ。
プログラム読めば数式くらい読み取れるに決まってるだろ。
>>599は、あかでみっくな人と見た。
んなくだらない野次入れる前に質問に素直に答えたらどうだ?
分からないのなら分からないって素直に言えばいいだろ。
ここはお前さんのみじめな現実の憂さ晴らしをする為に
ストレス解消スレッドじゃないんだよ。
他人を中傷したいだけなら外のスレッドに行ってくれ。
0607デフォルトの名無しさんNGNG
>>606
jad や jode みたいなデコンパイラ使え。
デコンパイラの使い方やどこでダウンロードできるかは google 使って自分で探せ。
0608デフォルトの名無しさんNGNG
>607
ありがとうございます。調べてみます。
 
0609デフォルトの名無しさんNGNG
>>606
>>605は>>599がJavaを知らないから、数式を読みとれないと言いたいのでは?
0610デフォルトの名無しさんNGNG
>>606
なんでお前は教えてあげなかったの?
0611606NGNG
うるさい。黙れ。クズどもが。
俺は天才だ。
0612デフォルトの名無しさんNGNG
というお話だったのサ。AA略
0613デフォルトの名無しさんNGNG
みんな仲がいいな。夫婦漫才みたいだ。
このスレ気に入ったよ。
0614デフォルトの名無しさんNGNG
>607
DJ java decompiler を使ってできました。ありがとうございました。
 普通に数式わかりました。
 
0615デフォルトの名無しさんNGNG
JTextField を継承して OriginalTextFieldを作成しています。

JComponent > JTextComponent > JTextField > OriginalTextField

こういう継承でJTextComponentのgetPreferredSize()を取得するには
どのようにすればよいのでしょうか。

super.super.getPreferredSize();

という方法ではうまくいかないようです。

どなたかお教え下さい。
宜しくお願いいたします。
0616デフォルトの名無しさんNGNG
JTextFieldとJTextComponentとJComponentの
getPreferredSize()は同じものなので、
普通にsuper.getPreferredSize()とするだけでいいです。
JAVAでは、スーパークラスより上を遡ってのメソッド呼び出しは
できません。
0617606NGNG
もう一度言う。
俺は天才だ。
0618デフォルトの名無しさんNGNG
> 616

やっぱりスーパークラスより上は無理なんですね。

JDK1.4ですがそれぞれ実装は違うんですよ。
一個上ではcolumnsの計算が追加されています。
(そこだけ変えようと考えていました)

とりあえず出来ないことが判ればOKです。
ありがとうございました。
0619デフォルトの名無しさんNGNG
>>618
columsの計算とはなんですか?
0620デフォルトの名無しさんNGNG
>619

文字数でサイズを計算する処理です。
JTextFieldの計算だと、LookAndFeelのせいか、文字数より若干切れることが
あるので、自分で実装しようとしてました。
0621デフォルトの名無しさんNGNG
文字数でサイズって……
FontMetrics.stringWidth()か、
SwingUtilities.computeStringWidth()
あたりを使うんじゃあ?
0622デフォルトの名無しさんNGNG
>>620
それは、もしかしてJTextFieldの先頭部分の文字が少し切れてしまう
(左側の部分が表示されない)という事ですか?
0623デフォルトの名無しさんNGNG
よくあるGUIで
上下の矢印(スクロールバーの矢印のやつ)があってそれをおすと
隣のラベルかなんかの中の数字が増えたり減ったりするやつ作りたいんですが
あれはどうやればいいんですか?リストでやろうとしたけど選択されないからイベントが拾えなかったです
0624デフォルトの名無しさんNGNG
>>623
javax.swing.JSpinnerを使いましょう。
ttp://java.sun.com/j2se/1.4/ja/docs/ja/guide/swing/1.4/spinner.html
ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/javax/swing/JSpinner.html
0625デフォルトの名無しさんNGNG
うっひょぉ!そんながあったとは!ありがつお!
0626デフォルトの名無しさんNGNG
直接関係ないと思うんだけど、
FormタグSubmitで作られたボタンを感知・Pushしたり出来る?
0627デフォルトの名無しさんNGNG
無理
0628デフォルトの名無しさんNGNG
>>626
アプレットの話?
JavaScriptでイベントとらえられるなら
LiveConnectでアプレット側に伝えられる気がするけど
0629デフォルトの名無しさんNGNG
Java2SDKをインストしたけど、どうやってプログラムを
実行したらいいかわかりません。
助けてください・・・・ウィンドウズxpを使ってます。
0630デフォルトの名無しさんNGNG
アプレットでキーボードからの入力を受け付けようとしているのですが、
アプレット上にGUIのボタンがあるとそっちにフォーカスが合ってしまい、
キーボードからの入力が受け付けられません。
ボタンにフォーカスが合わないようにする方法はあるのでしょうか?
0631デフォルトの名無しさんNGNG
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&q=Java+%E5%AE%9F%E8%A1%8C

本を買うことをお勧めします。
http://www.amazon.co.jp/exec/obidos/tg/browse/-/515820/ref=br_dp_b_1_lf/249-8880142-9850719
0632デフォルトの名無しさんNGNG
Javaのおすすめの入門書教えろ。
0633デフォルトの名無しさんNGNG
http://java.sun.com/docs/books/tutorial/download/tutorial.zip
0634デフォルトの名無しさんNGNG
木の走査法について
          ┌― C
           |
   ┌― B―┤
   |      |
   |     └― D
   |
A―┤
    |
    |     ┌― F
    |      |
   └― E―┤
           |
          └― G

という木があったとします。
これを、前順走査法に近い形で、
A→B→C→A→B→D→A→E→F→A→E→G
という形で走査したいのですが
うまく走査する方法ありますでしょうか。(できれば再帰を使って・・・。)
クラスの形はcompsiteパターンに似た形で以下のようになってます。(次レス)
0635デフォルトの名無しさんNGNG
class Tree{
 /** Nodeの子となる要素 */
 List child_;
 /** Nodeの一要素 */
 Hoge bean_;
 Tree( Hoge bean ){
   bean_ = bean;
 }
 void addNode( Tree top, Tree tree ){
   if( tree.getChild() != null ){
     /* topから走査し、bean_の中をみて木のどこにいれるか判定 */
     Iterator it = top.getChild().iterator();
     while( it.hasNext() ){
       Tree node = (Tree)it.next();
       if( node.getBean().get().equals(tree.getBean().get()) ){
         node.addChild( tree );
       }// これを木の最下層まで・・
     }
   }else{
     tree.addChild( tree );
   }
 }
}
続く・・
0636デフォルトの名無しさんNGNG
 List getChild(){
   return child_;
 }
 Hoge getBean(){
   return bean_;
 }
 void addChild( Tree tree ){
   if( child_ == null ){
     child_ = new ArrayList();
   }
   chiild_.add( tree );
 }
}
ここまで。
で以下のように使用
class Test{
 void public static void main( String[] args ){
   Tree top = new Tree(null);
   Hoge bean1 = new Hoge();
   bean1.set("A");
   Tree node1 = new Tree( bean1 );
   top.addNode( node );
   Hoge bean2 = new Hoge();
   bean2.set("B");
   Tree node2 = new Tree( bean2 );
   top.addNode( node2 );
 }

0637rNGNG
何のコードだ?
addNodeの引数は幾つだ。
Nodeって何だ。TreeがNodeなのか?
0638rNGNG
addNodeで、
tree.getChild() が null のとき、
tree に tree 自身を addChildするのはなんで?
0639634NGNG
>637
木のクラスです。
addNodeの引数は2つでした。
class Testの以下を訂正します。
誤:addNode( node );
正:addNode( root, node );
0640634NGNG
さらに訂正。
// これを木の最下層まで・・
の1行上
誤:node.addChild( tree );
正:node.addNode( top, tree );
ですた。

0641634NGNG
すいません。。
またまた修正。。

>638でおっしゃられてる部分。
tree.addChildではなく、
単に
addChildです。

誤:tree.addChild(tree);
正:addChild(tree);

0642634NGNG
修正した部分整理して再度貼り付けます。
 void addNode( Tree top, Tree tree ){
   if( tree.getChild() != null ){
     /* topから走査し、bean_の中をみて木のどこにいれるか判定 */
     Iterator it = top.getChild().iterator();
     while( it.hasNext() ){
       Tree node = (Tree)it.next();
       if( node.getBean().get().equals(tree.getBean().get()) ){
         node.addNode( top, tree );
       }// これを木の最下層まで・・
     }
   }else{
     addChild( tree );
   }
 }
0643デフォルトの名無しさんNGNG
内部演算だけでもJTree使ったほうが楽じゃないか?
0644634NGNG
>643
画面とは関係のないところなので、どうでしょう。。
swing使ったこと無いのでなんともいえないのですが
何か楽なことがあるのでしょうか。
0645デフォルトの名無しさんNGNG
>>644
A→B→C→A→B→D→A→E→F→A→E→G
と、一度読んだノードを再度読むのは何故ですか?
0646デフォルトの名無しさんNGNG
>>644
すでにかれたコードなので自分で実装するよりバグが少ないだろうし安心感がある
といいたいところだが、再発明好きなら自分で実装するのもいいだろうね

実際のところ>>645のいうとおり、そういう変なアクセスの仕方はあまりしないのだけれども
0647デフォルトの名無しさんNGNG
>>644
テストするときに画面に出力して確実なチェックが入れれる
とか?
0648634NGNG
>645
業務的な仕様です・・。

>646-647
木構造自体はもう>634のコードでできているようなので
今回はJTreeは見送ります。また今度機会があったら調べてみます。
0649デフォルトの名無しさんNGNG
>>586
初心者で申し訳ないんだけど、JAVA Plug-in 1.4.2 ってのを使ってて、
コンパネには言語と環境という設定は見当たらないです。
不便に感じるのはゲームは日本語見れない時くらいなんだけど、
日本語化のやり方知ってたら教えてください。
0650rNGNG
だめだ!
俺がお手本の、完璧なTreeを書いてやろうと思っていたんだが
全然できなかった。

なので、とりあえず、
1. Treeに、次のようなコードを加える
void scan( Scanner scanner ) {
scanner.action( this );
for( Iterator it = list_.iterator(); it.hasNext() && scanner.isAlive(); )
((Node)it.next()).scan( scanner );
}
2. Treeに、リーフなのかどうかがわかるようなisLeafを追加する
3. 抽象クラス Scanner をつくる
abstract public class Scanner {
boolean isAlive = true;
abstract public void action( Tree tree );
}
4. Scannerを半端に実装する
public class XXXXScanner extends Scanner {
private HashSet set = new HashSet();
public void action( Tree tree ) {
if( tree.isLeaf() ) {
if( ! set.isContain(tree) ) {
leaf.add( tree );
realAction( tree );
alive = false;
}
else
realAction( tree );
}
abstract protected action( Tree tree );
}
0651デフォルトの名無しさんNGNG
JTreeで実装したほうが楽
というだけで使うメリットあるだろうて
ルートからのパスも問題なく取得できるしな
0652rNGNG
ほら。
コンパイルして試さないと、なんか変なコードになってしまっている。
全くコンパイル通る気配もないような。


まあ、何となく意図はわかったろ。
要は
1.Treeの全ノードを訪れるようなScannerをつくる、
2. それのサブクラスXXXXScannerは既に訪れたLeafには働きかけないようにする。
3. scanが終わったら、同じXXXXScannerを使って再scanする。
4. 全Leafを走査するまで、3を繰り返す
(つまり、XXXXScannerに、全Leafを走査したかどうかを調べる機能も必要だな)
0653rNGNG
とかおもったけど、それだと
A-B-C
A-B-D
A-B-E-F
A-B-F-G
って言う順番になっちゃうな。

ええっと、どういう順番に走査してるんだ?
そのルールを教えてくれ
>>634
0654デフォルトの名無しさんNGNG
>>634
下記のメソッドで、A→B→C→A→B→D→A→E→F→A→E→G
の順で走査(ここではbeanの中身をprintlnで表示する)する事になる。。。

void searchNode(Tree tree, List ancesList) {
  List childList=tree.getChild();
  if(childList==null) {
    for(int i=0; i<ancesList.size(); ++i) {
      Tree obj=ancesList.get(i);
      System.out.println(obj.getBead());
    }
  } else {
    List crtAncesList=new ArrayList(ancesList);
    crtAncesList.add(tree);
    for(int i=0; i<childList.size(); ++i) {
      Tree obj=childList.get(i);
      searchNode(obj, crtAncesList);
    }
  }
}
0655rNGNG
おっと!何となくわかったぞ。

1. Leafに到達するまで走査する(ただし、何のアクションもしない)
2. Leafに到達したら、ルートノードまで、逆順にたどる
 このとき、たどったノードを全部記録する
3. 記憶されたノードに、順に操作を適用する。

こんな風にしたいのか。そかそか。
0656rNGNG
とか、のんびり考えてたら
>>643から回答が。
0657634NGNG
レスされた内容に対して考えるとレスがおそくなりますな・・。

>654
二つ目の引数のListには何を渡すのですか?

>655
そうです。そんな感じ。

>656
結局JTreeになりますか。。もう木構造自体は出来ているので
これをJTreeに書き直すのは時間がかかりそう。。
0658デフォルトの名無しさんNGNG
>>657
最初の呼び出しは、
searchNode(top, new ArrayList());
で。
0659634NGNG
>654
おお!やっとわかった!!
そういうことですか!

うわすげぇな。こんなのぱっとかけちゃうもんなのか。。

みなさんありがとうです。

0660デフォルトの名無しさんNGNG
初めまして。
Apache 2.0.52+Tomcat 5.0.28にてJSPに挑戦しています。
下記のエラーが出て困っております。

例外

org.apache.jasper.JasperException: JSPのクラスをコンパイルできません
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:97)
スタックトレースは以下省略

原因

Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK
org.apache.tools.ant.taskdefs.compilers.CompilerAdapterFactory.getCompiler(CompilerAdapterFactory.java:106)
スタックトレースは以下省略

過去ログにありそうなものでしたので、探したのですが見つけられませんでした。

開発環境と運用環境を別に用意していまして、
運用環境では実行できるのですが開発環境で上記のようになります。

JAVA_HOME、CLASSPATHなどが怪しそうですが
運用環境ではその二つはなにも設定していないのに動作しています。
開発環境でなぜ動かないのかわかりません。

見落としている設定項目等思い当たることがありましたらご教授願います。
0661デフォルトの名無しさんNGNG
>>660
tools.jarにクラスパスとおしてね。javacの本体はその中に入ってるから。
もしくはJAVA_HOMEがJDKを指してれば自動的に探してくれると思うよ。
0662デフォルトの名無しさん NGNG
InputEventのgetModifiers()とgetModifiersEx()の違いは何ですか?JavaDocにはgetModifiers()の説明がないし分かりません。
戻り値となる定数もDOWNがつくかつかないかで数は一緒のようですし。
0663デフォルトの名無しさんNGNG
>>662
getModifiersEx()はJava1.4から。
getModifiers()は互換性を守るために残されてるんじゃないかな
1.4以上がターゲットならEx使えば良いかと
0664663NGNG
具体的な違いでいうと、マウスのどのボタンが押されたかの
検出ができるようになったんだっけ? > Ex
うろおぼえですまそ
まあ気にせずEx使おうよ>>662
0665デフォルトの名無しさん NGNG
>>663 >>664
どうもありがとう。
JavaDocのInputEventの最初の方になんか書いてありましたね。
まあExのほうを使えば大丈夫なんですね。
0666660NGNG
>>661
即レスありがとうございます。
ご指摘の通り、環境変数でtools.jarにCLASSPATHを通しましたが治りませんでした。

しかしtools.jarをMonitor Tomcatのダイアログで設定できる
CLASSPATHにtools.jarへのパスを追加したら治りました。

なぜ動かなかったのか原因不明ですが解決しました。
ありがとうございました。
0667665NGNG
>>665
間違った。
MouseEventのところに書いてあったか。
0668デフォルトの名無しさんNGNG
>>657
JTreeなんて1日で理解できるし
すべてのツリーのパス取得とかもさくっとできる

なにより標準APIなので後から追う場合(特に業務なら他人が見ることも多いだろうから)わかりやすい

デメリットはあんまないな
0669デフォルトの名無しさんNGNG
JTree ってGUIコンポーネントだから
「木構造」を扱うってだけの理由で使うのはアレだと思われ。
0670デフォルトの名無しさんNGNG
>>649
俺も初心者だけど・・・
JAVA Plug-in 1.4.2?JREのこと?
日本語入力できてるんだから、MS-IME入ってるんだよね?
「地域と言語のオプション」あると思うんだけどなあ。
そこにUnicode対応でないプログラムに使用する言語が設定できるから
そこを日本語にしてみてほしい。
あとはわかんないや。
0671デフォルトの名無しさんNGNG
>>669
ほとんどの部分はJTreeそのものではないのでさほど問題にならない
TreeNodeとかTreePathとかな

モデルとビューが分離してるからこそ使いやすいというか
0672デフォルトの名無しさんNGNG
>>666
見つけられなかったんだろうと思いますが、
こちらにTomcatについてのドキュメントの日本語版があります。ぜひ読んで下さい。
ttp://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/

「セットアップ」:ここに、環境変数JAVA_HOMEをセットせよ、とある。
ttp://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/setup.html

「クラスローダ」:ここに、Tomcatの起動スクリプトは環境変数CLASSPATHを無視する、とある。
http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/class-loader-howto.html
0673デフォルトの名無しさんNGNG
なんでコレクションクラスにTreeがないんだろうね
0674デフォルトの名無しさんNGNG
無視かよ!
ただのつっこみです。
0675デフォルトの名無しさんNGNG
Exceptionをキャッチした時に

try{
なんかの処理
}catch(-----Exception e){
System.out.println(place + "で" + e + "が投げられました");
}

みたいなのをやりたいんですが、place(場所を保持している)みたいなのを
実現するにはどのような方法がありますでしょうか?
探してみたんですが、ピンポイントの情報が見つかりませんでした。
どなたか教えてください。よろしくおねがいします。
0676デフォルトの名無しさんNGNG
定数として配列使いたいのですが
class X{
final public static int[] A = {0, 1, 2};
}

しかし、これって順番変えようと思えば変えられるんですね。
確実に変えられないようにするアイデアありますか。
■ このスレッドは過去ログ倉庫に格納されています