[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 15:14 / Filesize : 271 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 22:10:53 ]
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/

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

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド100【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1175317038

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。pc10.2ch.net/hp/

次スレは>>980あたりで。

655 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:42:27 ]
>>653
ってか、3つや5つならオッケーなんだよな。
4つや6つ並べると負けってのは何か理不尽じゃね?

納得いかない奴の数→(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ry

656 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 20:48:07 ]
>>653

wを2つ並べるのも避けてるみたいですが、意図的ですか!!!ww1w!w!!ww


        というか
    _, ._   金曜の夜なのに
  (´・ω・)   くそレスが次から次へと…
  ○={=}〇,
   |:::::::::\, ', ´
、、、、し 、、、(((.@)ww意図的ですか!!!ww1w!w!!wwwbw!!ww



657 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 21:24:47 ]
>>638-639
結局、JSR-133って何が変わったんだっけ?

658 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 21:29:48 ]
!!! って流石に ! に最適化されるよね?

659 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 21:36:31 ]

  (´・ω・)   く あまり糞レス増やすなよー
  ○={=}〇,
   |:::::::::\, ', ´
、、、、し 、、、(((.@)!!! って流石に ! に最適化されるよね?

660 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 23:33:39 ]
!って1個じゃなくてもいいの!?

661 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 23:34:59 ]
!!?!

662 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 23:35:00 ]
>>660 単項演算子だからね。

663 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 23:35:44 ]
1++++---+--+++++-+-++-+2



664 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 23:42:10 ]
ああそうか2個あったらfalseの逆になるのか

665 名前:デフォルトの名無しさん [2007/05/19(土) 00:08:50 ]
>>645
>>646
>>648-650

ありがとうございます。
参考にさせてもらいます。

666 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 00:21:33 ]
>>663
構文エラーだね。

667 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 00:27:41 ]
1+ + + +- - -+- -+ + + + +-+-+ +-+2

668 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 00:30:44 ]
>>667
マジレスすると、Java では 1 ++ ++ -- + -- ++ ++ + - + - ++ - + 2 と区切られなければならない。

1++2 も同じ理由でコンパイルエラーになる。

669 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 00:32:35 ]
マイナスが一個足りないな

670 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 02:45:35 ]
ネットワーク対戦のゲームを作りたいのですが、
クライアントサイドにSwingをサーバサイドにサーブレットを使おうと考えています。
通信部分はどうしたらいいのでしょう。



671 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 02:51:40 ]
ServletならJakarta Commons HTTP Clientを使っとくのが楽かもね。

672 名前:670 mailto:sage [2007/05/19(土) 03:02:16 ]
>>671
ありがとうございます。
ググってみたのですがよくわかりません…
詳しく教えていただけないでしょうか?

673 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 03:39:51 ]
わからんのなら素直にSocketでも使っとけ。



674 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 05:43:23 ]
>>671
HTTPSでも問題ないですか?

675 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 05:45:14 ]
>>670
ttp://jakarta.apache.org/site/downloads/downloads_commons.html


676 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 06:17:14 ]
ttp://www.ipa.go.jp/security/awareness/vendor/programming/a03_04.html

このページにある、リスト2 InfoMenuクラスのソースなのですが、

10 public void dispMenu(Passwd pwd) {
11 if(pwd.checkPasswd() == true) {
12 dispSystem();

10行目の部分でPasswdクラスのオブジェクトを取ってくると記述されていますが、
PasswdクラスとinfoMenuクラスが親子関係という訳でもなく、
infoMenuクラスからPasswdオブジェクトを作っている記述もありません。

なぜ、dispMenu(Passwd pwd)だけで任意のPasswdオブジェクトが取得できるのでしょうか?

677 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 07:41:15 ]
>>676
> 10行目の部分でPasswdクラスのオブジェクトを取ってくると記述されていますが、

そんなこと書いてない。テキストを誤解している。


678 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 07:43:54 ]
>>676
「Passwdを取得する」ではなく「Passwaを引数とする」ではないの?

679 名前:676 mailto:sage [2007/05/19(土) 08:11:34 ]
そのとおりです、オブジェクトを引数として渡してるだけでしたorz

何故か初歩的なこと忘れてました。
「dispMenu(Passwd pwd)」って記述したら自動的に
「dispMenuに渡された引数がそのままPasswdに渡されて、尚且つpwdオブジェクトが生成される」とか
変なことばかり考えてまして。

ありがとうございました。

680 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 13:46:16 ]
注:str.java の操作は、未チェックまたは安全ではありません。
注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください
というエラーがコンパイルすると出るんですがなぜですか?
同じものを学校のPCでやってもでなかったのに

681 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 14:13:45 ]
>>680
javac -source 1.4 str.java
ってやってみ?
学校のコンパイラのバージョンは古いからエラーが出なかったんだ。

682 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 14:25:36 ]
>>681
できました!
ありがとうございます

683 名前:デフォルトの名無しさん [2007/05/19(土) 19:24:25 ]
ha= buf.readLine();

switch (ha.charAt(0)){
case'+':
kg=1;
case'-':
kg=2;
case'*':
kg=3;
case'/':
kg=4;
}

の部分に

Exception in thread "main" java.lang.NumberFormatException: For input string: "+"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at RinkouPractice4.main(RinkouPractice4.java:22)

ってエラーが出てコンパイルできるが実行できないんですが原因を教えてください



684 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 19:40:43 ]
>>683
とりあえずエラーが発生してる場所が違うな。

>at java.lang.Integer.parseInt(Unknown Source)
>at RinkouPractice4.main(RinkouPractice4.java:22)

まぁこれ見る限りreadLine()してきたデータそのままparseInt()に渡してるんだろうな

685 名前:デフォルトの名無しさん [2007/05/19(土) 20:41:46 ]
public static void main(String[] args)throws IOException {
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備
String ha,s1,s2,b1,b2;
int kg;
int si1,si2,bo1,bo2;
System.out.println("数値を入力"); //ユーザに入力を促す
s1=buf.readLine();
b1=buf.readLine();
si1 = Integer.parseInt(s1);
bo1 = Integer.parseInt(b1);
ha= buf.readLine();
s2=buf.readLine();
b2=buf.readLine();
si2 = Integer.parseInt(s2);
bo2 = Integer.parseInt(b2);
Kazu v1 = new Kazu(si1,bo1);
Kazu v2 = new Kazu(si2,bo2);
// Hantei h = new Hantei();
// kg = h.opr(ha.charAt(0));
kg=0;
switch (ha.charAt(0)){
case'+':
kg=1;
case'-':
kg=2;
case'*':
kg=3;
case'/':
kg=4;
}
なぜエラーが出るんですか?

686 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 21:17:08 ]
RinkouPractice4.javaの22行目どうなってる?
mainメソッドから数えて22行目じゃなくてファイルの頭から数えて22行目。
>si1 = Integer.parseInt(s1);
>bo1 = Integer.parseInt(b1);
>si2 = Integer.parseInt(s2);
>bo2 = Integer.parseInt(b2);
どれかのはずだけど…

んで、なんでエラーになるかというと、parseIntメソッドの仕様だから

>文字列の引数を符号付き 10 進数の整数型として構文解析します。
>文字列にある文字はすべて、10 進数でなければなりません。ただし、
> 1 番目の文字だけは、負の値を表すためにマイナス記号の ASCII 文字
>「-」(「\u002d」) であってもかまいません。

これに”+”付の数字渡せば
>Exception in thread "main" java.lang.NumberFormatException: For input string: "+"
となる、と。
入力データのチェック入れれば回避できるんでない?

687 名前:デフォルトの名無しさん [2007/05/19(土) 21:41:49 ]
20 s1=buf.readLine();
21 b1=buf.readLine();
22 si1 = Integer.parseInt(s1);
23 bo1 = Integer.parseInt(b1);
24 ha= buf.readLine();
25 s2=buf.readLine();
26 b2=buf.readLine();
27 si2 = Integer.parseInt(s2);
28 bo2 = Integer.parseInt(b2);
29
30 Kazu v1 = new Kazu(si1,bo1);
31 Kazu v2 = new Kazu(si2,bo2);

こうなってますが具体的にはどうすればよいのでしょうか?

688 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 23:01:22 ]
>>680-682
Generic使えよ

689 名前:デフォルトの名無しさん [2007/05/19(土) 23:53:00 ]
入力データのチェックって何ですか?

まだ出来ないんですが誰か助けてください

690 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:14:34 ]
J2EEのライブラリを書くときにServlet APIのインタフェースライブラリだけが欲しいんですが
これってTomcatとかから借りてきてそのまま配布してもいいんですか?

691 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:30:24 ]
>>689
readLineメソッドで読み込んだ文字列(変数ha以外)が数字又は一文字目が"-"以外だったら
エラー処理を行う(再入力させるもよし、Exception投げるもよし、問答無用でプログラム終了でも…)
要するにInteger#parseIntがちゃんと処理できる値が入力されていることを保証してやる
ユーザが作り手の意図した通りの入力してくれるとは限らないから入力チェックは必須。

692 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:59:45 ]
int readInt() throws EOFException {
 while(true) {
  String str = buf.readLine();
  if(str == null) { throw new EOFException(); }
  try { return Integer.parseInt(str); }
  catch(NumberFormatException e) {
   System.out.println("残念、もう一度");
  }
 }
}


693 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 02:11:35 ]
>>688
残念ながら1.4が本当のターゲットらしいんでgenericsを使っちゃコンパイルできなくなる。
別の所でそれより新しいバージョンでコンパイルして警告を出されて焦ったようだ。



694 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 04:08:12 ]
>>693
つ -source 1.5 -target jsr14

695 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 04:13:02 ]
WindowsでもLinuxでも動作する
USBポートに対する入出力を行うライブラリでオススメ教えてください

696 名前:デフォルトの名無しさん [2007/05/20(日) 04:23:35 ]
整数を任意に入力していき、0を入力したら最大値は何番目にでてきたか出力する
プログラムですが、たとえば
0>10
1>11
2>0
と入力すると、本来
1
と出力されてほしいのに、
1
1
と出力されてしまいます。
どこがおかしいのかご教授くださいmm


697 名前:697 [2007/05/20(日) 04:26:12 ]
import java.io.*;

public class enshu41b {
 public static void main(String[] args) throws Exception {
  BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  int[] a = new int[100];
  int count = 0;
  while(count < a.length) {
   System.out.print(count + "> ");
   int v = (new Integer(in.readLine())).intValue();
   if(v == 0) { break; }
   a[count] = v;
   ++count;
   }
  int max = a[0];
  int[] mn = new int[100];
  mn[0] = 0;
  int count2 = 0;
  for(int i = 1; i < count; ++i) {
   if( a[i] > max ) {
   max = a[i];
   count2 = 0;
   mn[count2] = i;
   }
  if( a[i] == max ) {
  ++count2;
  mn[count2] = i;
  }
 }
 for(int i = 0; i <= count2; ++i) {
 System.out.println(mn[i]);
 } } }

698 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 06:03:42 ]
>>695
jUSBを自分でwindowsに対応させる。

699 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 06:26:32 ]
>>694
これ便利だな
はたからthx

700 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 07:25:48 ]
>>696
境界条件を頭の中でシミュレート。わかんねーならトレース実行でもしろ。

701 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 08:35:25 ]
>>694
1.4でコンパイルするのが目的で1.5以上のコンパイラの機能は使えない
1.4の実行環境をターゲットにして1.5以上でコンパイルするんじゃないから
1.4のコンパイラしかない環境でコンパイルするにはそのオプションは空しい

702 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:17:59 ]
ObjectInputStreamのreadObject()でファイルを最後まで読みたいんですがどうもうまくいきません。
whileのところが今のままではjava.lang.Object と int は比較できません。というエラーがでます。
どなたか教えてください。

/**************** ファイルから入力 *****************/
List messages = new ArrayList();
try{
ObjectInputStream ois = new ObjectInputStream(
new FileInputStream( file ) );
Object obj;
// ファイルの終端に達するまで読み込む
while( ( obj = ois.readObject() ) != -1 ){
Map map = (Map) obj;
messages.add( map );
}
if( ois != null ) ois.close();
}
catch( Exception ex ){
ex.printStackTrace();
}
finally{
System.out.println( "end input" );
}

703 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:20:04 ]
whileの中の-1ってなんだ? 説明できるか?



704 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:24:28 ]
とりあえずclose()する前にflush()しとけ

705 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:28:07 ]
教える側も素人かよ^^;

>>702
とりあえずJavaDoc嫁。EOFを返すなどと何処に書いてある?
2chを辞書代わりに使うな、むしろ時間の無駄と分かるぞ。

706 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:31:41 ]
ObjectInputStreamのAPIドキュメントに
>>バイト単位の読み込みでは、バイトが読み込まれたときに -1 が返されます。プリミティブ読み込みでは、EOFException がスローされます。
こういうこと書いてたので-1が返るのかなと思ってました。
それじゃもっとよんでみます

707 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:39:57 ]
ああreadObjectはバイト単位でもプリミティブ単位でもないのかごめん

708 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:43:36 ]
>>700
どうしてそんな偉そうなんだ?

709 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 11:49:22 ]
>>708
逆ギレかよ、わかんねーならそれなりの態度があるだろうに

710 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 13:45:50 ]
2ch向いてねえな

711 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 16:04:19 ]
無職乙

712 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 17:22:35 ]
年数を入力して、うるう年と一般の年を判別後、月を入力して、
その月が何日あるかについてのプログラムを組んでみたのですが、

コンパイル問題が未解決です。
構文エラーがあります。"}" を挿入して MethodBody を完了してください。
構文エラーがあります。"}" を挿入して ClassBody を完了してください。

と出て実行できません。
最後の『 } 』の数は合っていると思うのですが、何故エラーが出ているのでしょうか?

713 名前:712 mailto:sage [2007/05/20(日) 17:23:51 ]
public static void main(String[] args) {
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
try
{
System.out.println("今は何年ですか?");
String line=reader.readLine();
int year=Integer.parseInt(line);
if(year%4==0)
{
System.out.println(year +"年ですね。");
System.out.println("今月は何月ですか?");
line=reader.readLine();
int month=Integer.parseInt(line);

if(month==2){
System.out.println("2月の日数は28日です");
}else if(month==4 || month==6 || month==9 || month==11){
System.out.println(month +"月の日数は30日です");
}else if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){
System.out.println(month +"月の日数は31日です");
}else{
System.out.println("月数の範囲を超えています");}

}



714 名前:712 mailto:sage [2007/05/20(日) 17:24:33 ]
else if(year%4!=0)
{

System.out.println(year +"年ですね。うるう年です。");
System.out.println("今月は何月ですか?");
line=reader.readLine();
int month2=Integer.parseInt(line);

if(month2==2){
System.out.println("2月の日数は29日です");
}else if(month2==4 || month2==6 || month2==9 || month2==11){
System.out.println(month2 +"月の日数は30日です");
}else if(month2==1 || month2==3 || month2==5 || month2==7 || month2==8 || month2==10 || month2==12){
System.out.println(month2 +"月の日数は31日です");
}else{
System.out.println("月数の範囲を超えています");}
}
}catch(IOException e){
System.out.println(e);
}catch(NumberFormatException e){
System.out.println("月に入力できる数は1〜12の実数です");}
}
  }
}

715 名前:712 mailto:sage [2007/05/20(日) 17:26:50 ]
開発環境はEclipsです

716 名前:712 mailto:sage [2007/05/20(日) 17:58:54 ]
あれ?なんだかよく分からないうちに自己解決しました。

何が問題だったんだろう……

717 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 19:23:19 ]
つ保存していない
つ余計な括弧がある

つ右クリック ⇒ ソース ⇒ フォーマット

718 名前:デフォルトの名無しさん [2007/05/20(日) 19:32:20 ]
宿題があるんですけど教えてください。

719 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 19:36:31 ]
>>718
スレ違い

★★ Java の宿題ここで答えます Part 61 ★★
pc11.2ch.net/test/read.cgi/tech/1179168569/

720 名前:デフォルトの名無しさん [2007/05/20(日) 22:51:05 ]
スタンドアロンプログラムをWindows上で動かし、
フォルダを指定しエクスプローラを開く、
といった処理をしたいんですが、なかなか情報が見つかりません。

なにか良い方法があれば教えてください。
ちなみにGUIはSWTを使用し作成しています。

721 名前:デフォルトの名無しさん [2007/05/20(日) 23:25:16 ]
>>720
質問が良くわからないんだけどSWTでエクスプローラーを作ったって事?
他にGUIが見当たらないんだが・・・。

722 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:42:14 ]
>>720
Runtime.exec(String command)
どう開くかは適当に。
cmd /c start ......
とか
support.microsoft.com/kb/152457/ja?FR=1&PA=1&SD=HSCH
とか
ところで >>603-608 のながれと関係あるの?

723 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 23:52:30 ]
javaやってる人ってオブジェクトとインスタンスって混ざって言ってるような
きがする、なんか違いあるの?



724 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 01:32:36 ]
クラス + インスタンス = オブジェクト


725 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 06:13:54 ]
オブジェクトという名前の基底クラスがあるから紛らわしい

726 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 11:47:38 ]
テキストファイルの内容の一部だけ削除したいんですけど
一回全部よみこむ→該当部分削除→書込み直す
っていう方法は思いついたんですけど、
効率悪い気がするんですが、ほかにいい方法ってないですか?

727 名前:デフォルトの名無しさん [2007/05/21(月) 12:08:54 ]
ResultSet型のオブジェクトに代入されている結果セットのレコード数を知りたいんですが、何かいいメソッドって用意されていますか?

728 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 12:19:33 ]
いまこのページ(↓)を読んでパッケージについて勉強してました。
ttp://www.ytp.ne.jp/tech/java/sineruka/classpathhowto.html

このページで言うところの C:\Source\Java\test\HelloWorld2.class に対して
C:\Source\Java\test>java HelloWorld2
と実行するのと
C:\Source\Java\test>java test.HelloWorld2
と実行するので結果に差がある(前者はエラーになる)ことは確認しましたが、
いまいち納得ができません。

ディレクトリ直下のHelloWorld2.classを直接指定するのと
CLASSPATHの下の\test\HelloWorld2.javaを指定するのとで
何が変わってくるのでしょうか?

729 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 13:04:27 ]
>>728
javaコマンドの引数に指定するのは、ファイル名ではなく
パッケージ名を含むクラス名(FQCN:完全修飾クラス名)であることに注意。

”java HelloWorld2”のコマンドは、
HelloWorld2.classを参照するよう指定しているのではなく、
クラスパスからHelloWorld2というFQCNのクラスを見つけて、
それを実行するよう指定している。
この場合、HelloWorld2のFQCNはtest.HelloWorld2なので、
該当するクラスがクラスパスにないためNoClassDefFoundErrorになる。

730 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 13:13:53 ]
>>728
補足。パッケージ名はclassファイル自体に埋め込まれるので、
HelloWorld2.classをC:\Source\javaに移動しても、
HelloWorld2のパッケージを移動したことにはならない。

731 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 13:53:20 ]
>>727
おまえはおれか


732 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 14:25:56 ]
まず訂正を。自分の書き込みを見てびっくりしたのですが、

>ディレクトリ直下のHelloWorld2.classを直接指定するのと
>CLASSPATHの下の\test\HelloWorld2.javaを指定するのとで

の2行目は\test\HelloWorld2.classのミスタイプです。

>>729
回答ありがとうございます。
.classファイルを探すのではなく、FQCNでクラスを探しに行くから
test.HelloWorld2は存在するけれどHelloWorld2なんていう物は
存在しないという事ですね。

>パッケージ名はclassファイル自体に埋め込まれるので、
>HelloWorld2.classをC:\Source\javaに移動しても、
>HelloWorld2のパッケージを移動したことにはならない。

これについてですが、試しにソースはいじらずに.javaファイルを
C:\Source\Javaへ移動し、Message→HelloWorld2の順にコンパイルしたところ、
Messageはコンパイルできたものの、HelloWorld2はパッケージotamesiが
見つけられずにコンパイルできませんでした。
また、普通にコンパイルしたHelloWorld2.classをC:\Source\Javaに移動して
java test.HelloWorld2 してみたら
Exception in thread "main" java.lang.NoClassDefFoundError: test/HelloWorld2
が出てしまいました。
「パッケージを移動したことにはならない」というのは
「単純にフォルダ移動してもパッケージ情報(?)は変わらないから
 パッケージと同名のフォルダに入れておかなければならない」
という意味でしょうか?

733 名前:728 mailto:sage [2007/05/21(月) 14:28:00 ]
名前入れ忘れ。。。
>>732>>728です。



734 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 14:53:29 ]
>>732
そういう意味でおk

735 名前:デフォルトの名無しさん [2007/05/21(月) 15:33:15 ]
>>731
結局API読みまくった結果、ResultSetを直でいじくりまわすのはやめて、
内部クラス作ってそれのpublic変数に結果セットの最終行までResultSet.getStringしてって
ArrayListのオブジェクトにつっこんでArrayListのオブジェクト.size()しました。
配列のサイズきめたくて結果セットの行数しりたかったんですけど、配列作るよりArrayListつかったほうが何かすっきりしました

736 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:14:08 ]
>>732
合ってるがもっと単純明解な前提条件があるぞ。
フォルダの移動はOSのオペレーション、パッケージの指定はjavaの仕様。
根本的、本質的にもこの二つはまったくの別物。
くっつけて考えてしまうならそこが"間違えて分からなくなってる"部分だ。
まずは問題の切り離しからだな。

737 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 17:52:51 ]
ネットワーク越し(現在使用しているのはRMI)にIterator的なオブジェクトを
渡して受け取り側が辿れるようにするには、各メソッド内で通信するよう自前で作るしかないのでしょうか。

738 名前:デフォルトの名無しさん [2007/05/21(月) 22:04:02 ]
Byte a[]={0,0,0,1};

をa[0]〜a[3]のバイト列をもつint型に変換する方法教えてください。

739 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 22:11:55 ]
a[0]<<24|a[1]<<16|a[2]<<8|a[3]

740 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 22:24:35 ]
すまんすまん
a[0]<<24|a[1]<<16&0xff0000|a[2]<<8&0xff00|a[3]&0xff
こうだ

741 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 22:36:31 ]
>>738
new DataInputStream(new java.io.ByteArrayInputStream(a)).readInt();
java.nio.ByteBuffer.wrap(a).getInt();

742 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 22:58:25 ]
>>727
適当なトランザクションレベルで select count(適当なカラム) from テーブル
という SQL を発行すればいいよ。リソースを消費を気にしないなら count(*) でも可。

743 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 23:10:41 ]
>>735
対策まで一緒だな
おまえはおれか



744 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 23:13:21 ]
>>737
質問の意図が良く分からんけど
org.JSON とか使うと解決するかもね

745 名前:デフォルトの名無しさん [2007/05/22(火) 00:55:41 ]
サーブレットでsubmitやセッションしたりしないでその画面のままテキストフォームから入力された値を取る方法ってありますか?


746 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 01:14:01 ]
セッション関係無くね?

747 名前:720 [2007/05/22(火) 01:24:15 ]
ご回答してくれた方ありがとうございました。

>>721
自分で作ったGUIからWindowsのエクスプローラを呼ぶには?
という質問でした。

結局JNI経由でWINAPIのShellExecuteを呼び出す形式で解決しました。
Webしかやったことない自分としては
GUIは妙に難しく感じます^^

748 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 01:25:57 ]
JavaScriptを使えばいい
フォームの入力チェックにも使われている

あー仕事がほしいー

749 名前:720 [2007/05/22(火) 01:29:44 ]
>>745
Submitしないという時点でクライアント側の処理になります。
サーブレットでの処理は無理です。
Javascriptが一番手っ取り早いのでは?


750 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 01:46:17 ]
>>745
言葉が意味わからんがsubmitなしではservletに渡すことは普通は無理

XMLHttpRequestを使えばできる(ブラウザー依存)
いわゆるAJAXだな


751 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 02:49:06 ]
>>745

Ajax

GWT


752 名前:デフォルトの名無しさん [2007/05/22(火) 05:56:30 ]
>>727
実は最初はそうしてたんですが、レコード数が膨大でcount(*)のリソースがどうしても気になって気になって、今の方法にしました。
>>743
もうステップ数を気にする時代ではないような気がしたので、リソースとのバランスを見ても、この方法がやはりベストなのかなと。
贅沢を言わせてもらうと>>727を読んだ時点で教えてもらいたかったです・・・



753 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 06:11:20 ]
>>752
ごめん
ほぼ同じペースで同じことやってるみたいなのでw

当初は ArrayList へ移し替えやってたんだけど
いろいろ事情があって
結局いまは ArrayList はやめて JSONArray に変更したんだけど
標準のコンテナ(Hash Map など)よりも意外と便利で病みつきになりそう




754 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 10:12:13 ]
>>744
ありがとうございます。
質問の意図が分かりづらかったようですみません。

ネットワーク越しにリストとなるデータを転送する際、コレクションや配列をそのまま渡すと
データが大量だった時にメモリを圧迫する可能性があるため、一気に渡すのではなく
少しずつ渡す必要があります。

そうするとIteratorのようなインタフェースから少しずつ取得できると理想ですから、
現在の私の状況であれば RMI 通信を隠蔽した Iterator 実装があると理想だったのですが、
見つけられなかったため質問しておりました。

JSONライブラリがこの背景と合っていたか不明ですが、少々調べてみます。

755 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 15:48:01 ]
>>754
その渡そうとしているデータは、まさかDBからのクエリ結果だったりはしないよね?






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<271KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef