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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 19:48:24 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。pc10.2ch.net/hp/

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下の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質問・相談スレッド111【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1200151522/

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

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

666 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:04:50 ]
Javaの初心者にExceptionのことを教えたいのですが、
J2SEのクラスの、Exceptionをthrowするメソッドで、
一番基本的で分かりやすいものって何だと思いますか?
コンストラクタじゃない普通のメソッドでお願いします。

667 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:11:09 ]
ぬるぽ

668 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:11:27 ]
NumberFormatException

669 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:19:51 ]
いや、Exception自体じゃなく、
Exceptionをスローするメソッドです。
例えば、FileOutputStream#write(byte[] b)とか。

670 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:24:40 ]
>>666
// Exception 自体は throw も catch もするな。を教える
実行時例外なら、Integer.parseInt(String) で NumberFormat
普通のヤツは意図的に起こすだけなら ClassNotFound とか IO とか

NumberFormat は良い例ではないのよね。
実行時例外の割りに、catchされるように組み込まれてるし。

まあ、別に無理に教える必要は無いんじゃないかな
それよりも知らないメソッドは API doc で調べるように仕込むべし。

671 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:38:36 ]
ありがとうございます。
実行時例外じゃなくて、
IOExceptionとか、メソッド呼び出すと絶対try catchしないといけないヤツです。

672 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:42:38 ]
new FileInputStream
ファイルがなければFileNotFoundExceptionを投げる

673 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:45:47 ]
って、コンストラクタはだめなのか
じゃあ Socket#connect
接続できなければ IOException

674 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 17:55:35 ]
コンストラクタでないわかりやすいもの・・・
ImageIO#read(File) とか?



675 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:50:51 ]
Stream系のIOExceptionじゃね?
try-catch-finally と合わせて覚えるのがセオリーかと

676 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 19:40:42 ]
みなさんありがとうございます。
finnalyも合わせて、Stream系で説明してみようと思います。

677 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:55:38 ]
IOException もいいが ParserConfigurationException も捨てがたい

678 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:54:30 ]
学校でちょっとプログラムに興味あって色々自分で勉強してみたんですがJavaって簡単過ぎてつまらないんですがこんなので仕事になるんでうか?
HTMLも簡単だったし仕事では何やってるんですか?

679 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 23:58:40 ]
オナヌー

680 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:00:51 ]
>>678
ひとつだけいえることはつまらないと思う人は
これを仕事にしてはいけませんよ。

681 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:01:05 ]
簡単か難しいかと、仕事になるかならないかは、関係ないからな
なにせ「単純労働」っていう言葉もあるくらいだ

682 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:01:06 ]
言語は簡単でいいんだよ

683 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:40:01 ]
27歳になってJAVAで開発チームに入る事になりました。
今までの業務開発経験は、COBOL3年あとはVBAぐらいですかね・・。
4年程前にSUNJAVA1.4の資格は取得したんで基礎的な事は大丈夫と思います。
実際に業務で役に立つ為に、他にどんな勉強しておけばいいですかね?
とりあえずTOMCATとMYSQL入れて、なんか作ってみようかなと思ってますが、
業務レベルでは全く無意味なんでしょうね・・

684 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 00:52:48 ]
tomcatとmysqlが何で無意味なの?普通に業務レベルで使うのに。
とりあえずeclipseで簡単なwebアプリでも作ってみたら?



685 名前:683 mailto:sage [2008/02/24(日) 01:06:18 ]
やっぱ業務でも使うんですね。
いや、簡単な事やっても業務レベルでは通じないかなぁと。
でも基本的な事分かってると大分入りやすいですよね。
適当にDB構築してWEBアプリ作ってみます。


686 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 01:32:01 ]
適当にDB構築できちゃうレベルなら心配無用だと思うけど…

687 名前:デフォルトの名無しさん [2008/02/24(日) 08:34:52 ]
class calcException extends Exception {
}

public class sample53 {
public static void main(String[] args) {
try {
calc(2,2);
}catch (calcException e) {
System.out.println("calcExceptionが"+"throwされました");
}
}

static void calc (int i,int j) throws calcException {
if(i == j) {
calcException ce = new
calcException();
throw ce;
}
System.out.println(i*j);
}
}
これなんですけど、
if(i == j) {
calcException ce = new
calcException();
throw ce;
この部分でどういう処理を行っているのですか?

688 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 08:50:07 ]
普通に例外なげてるんじゃね

689 名前:デフォルトの名無しさん [2008/02/24(日) 09:23:16 ]
throw ceってなんですか?
もしiとJの値が同じなら、オブジェクトを作成して、その後はなんですか?

690 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 09:30:37 ]
だから例外投げてるんだよ

691 名前:デフォルトの名無しさん [2008/02/24(日) 10:10:44 ]
たびたび申し訳ないが、
static void calc (int i,int j) throws calcException
この部分はこの式は例外を投げる式ですよってこと?

692 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:14:30 ]
このメソッドはcalcExceptionを投げ得ますよってこと。

693 名前: [2008/02/24(日) 10:27:48 ]
>>660
[追加します]とありますが全部変えてしまいました。全部どう記述するのか聞きたいです。

694 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 10:33:26 ]
>>693
つ ttp://okwave.jp/qa2940675.html



695 名前:デフォルトの名無しさん [2008/02/24(日) 11:13:00 ]
>>692ありがとうございました><

696 名前: [2008/02/24(日) 11:30:48 ]
wbemの場所ってわからないことないですか?

697 名前: [2008/02/24(日) 11:36:33 ]
設定方法わかりませーん

698 名前:デフォルトの名無しさん [2008/02/24(日) 11:57:29 ]
@F8押す→3秒待機→F8押す
Bこの処理を500回ループした後
AF7押す→1秒待機→F8押す→1秒待機
C処理Aを30回繰り返し@に戻る

こういうプログラムはjavaだったら可能でしょうか?
ゲームに使うのでVBみたいにF8押したことにしますってのではなくて
実際に押すことが重要なんです

699 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:09:13 ]
>>698
>>96
VB が何をやってるのか知らんが、
人がキーを押したときと同じような結果をシミュレートすることは可能。
// 自動演奏みたいにキーボードが動く……誰かそういうヤツを作ってください。

700 名前:デフォルトの名無しさん [2008/02/24(日) 12:16:39 ]
VBではSENDKEYなるメソッドがあり
それを使うとたとえば

F8押した時、1+1の処理をするというプロシージャがあった場合

SENDKEYによって1+1を呼び出すことはできますが
実際にF8を押すという動作がウィンドウズ内で行われている
というわけではないようです
(押した時のようにキーをへこませるといわけではありません。念のため)

ようするに、キーを押した後の処理ではなく、キーそのものを押したことを
キーを押さずにウィンドウズに認識させたい

701 名前: [2008/02/24(日) 12:22:46 ]
設定方法わかりませーん

702 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:25:25 ]
>>700
なるほど。イベントのトリガーとして登録させてるようなものですかね。
ということで、96 を実行することで少しは感動してもらえそうな予感。

703 名前:デフォルトの名無しさん [2008/02/24(日) 12:31:18 ]
どうやらjavaなら可能なようですね

勉強します

704 名前:11 mailto:sage [2008/02/24(日) 12:31:27 ]
画面A,B,Cとあり画面CのB画面終了ボタンを押すとB画面のみ終了させたいと考えてますが
さっぱりわかりません。どなたかご教授願います。
/*ソースここから*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Gamen extends JFrame implements ActionListener{
private JButton b1 = new JButton("B画面表示");
private JButton b2 = new JButton("終了");
private JButton b3 = new JButton("C画面表示");
private JButton b4 = new JButton("B画面終了");
public void GamenA() {
getContentPane().setLayout(new FlowLayout());
getContentPane().add(b1);
getContentPane().add(b2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("A画面");
setSize(200, 100);
setVisible(true);
b1.addActionListener(this);
b2.addActionListener(this);}
public void GamenB() {
getContentPane().setLayout(new FlowLayout());
getContentPane().add(b3);
getContentPane().add(b2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("B画面");
setSize(200, 100);
setVisible(true);
b3.addActionListener(this);
b2.addActionListener(this);} //続きます



705 名前:704 mailto:sage [2008/02/24(日) 12:33:21 ]
すみません>>704は11さんとは無関係です。 続き
public void GamenC() {
getContentPane().setLayout(new FlowLayout());
getContentPane().add(b4);
getContentPane().add(b2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("C画面");
setSize(200, 100);
setVisible(true);
b4.addActionListener(this);
b2.addActionListener(this);}
public void actionPerformed(ActionEvent e){
if(e.getSource() == b1){
Gamen bb = new Gamen();
bb.GamenB();
}else if(e.getSource() == b2){
System.exit(0);
}else if(e.getSource() == b3){
Gamen cc = new Gamen();
cc.GamenC();
}else if(e.getSource() == b4){
//B画面終了ボタンを押してBのみ画面を終了させたい。
}
}
public static void main(String[] args) {
Gamen aa = new Gamen();
aa.GamenA();
}
}
/*ソースここまで*/
よろしくお願いします。

706 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:34:45 ]
>>698
Javaはある程度のことしかできないし、そういうものであれば既存のソフトで腐るほどありますよ。
自分でやりたいなら何らかのスクリプトを使うことをおすすめしておきます。

707 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 12:43:52 ]
一つ一つのフレームは、その他のフレームのインスタンスを持ってないから現状では無理。
閉じさせるフレームのインスタンスを持たせて、それでactionPerformedでdisposeしてやれば実現できるけど・・・継承とかそこらへんの意味を見直した方がいいと思うよ。

708 名前:705 [2008/02/24(日) 12:53:30 ]
>>707
ありがとうございました。
勉強しなおしてきます。

709 名前:638 mailto:sage [2008/02/24(日) 13:30:03 ]
>>639
業務なのでスタックとレースはちょっと貼れません・・・


実際に発生している問題は

パターン1
setStringでパラメータを19個設定
検索ヒット件数が10件以下
→問題なし

パターン2
setStringでパラメータを19個設定
検索ヒット件数が11件以上
→ResultSetでlastや、11件目のnextで例外発生
 スタックとレースに配列の範囲外を指定(詳細19)というエラーが出力される。
 ※パラメータを15や11にした場合も同様に(詳細15)のように出力される。

パターン1と2で使用しているSQLは全く同一。
パターン1と2の違いはパラメータの1つの日付の範囲を数ヶ月広げているだけ。

パラメータを全て直接SQLに埋め込んだ場合、データが件数分正しく取得できます。

パラメータに上限とかあるのでしょうか?
SQLはそれなりに大きいです。100行程度。


710 名前: [2008/02/24(日) 14:16:01 ]
設定方法わかりませーん

711 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:16:23 ]
>>709
Oracle なら、詳細19とか詳細15とかマニュアル嫁
それの何処に配列が出てくるのか謎

712 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 14:18:34 ]
問題ない部分だけの抜粋でもいいからスタックトレース貼ったらどうか。
例外は本当にOJDBCで出てるのか?

713 名前:638 mailto:sage [2008/02/24(日) 14:29:54 ]
ResultSetやPreparedStatementをデバッガで除くと、
設定したパラメータが正しい内容で格納されているのは確認しています。

出力される例外はArrayIndexOutOfBoundsExceptionです。
ここでパラメータの数が「詳細 パラメータ数」と表示されます。


>>711
まず、SQLExceptionじゃないです。
上記通り、19とか15はパラメータの総数が出力されます。
謎ですが。


>>712
そもそも業務で外部接続できないので貼れません・・・
例外は、ResultSetのnextが11回目に呼び出されたタイミングで発生します。
ResultSetの処理の中でArrayIndexOutOfBoundsExceptionで死亡します・・・

714 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:02:57 ]
test



715 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/24(日) 17:05:15 ]
固定長*可変長の配列を作りたいです。
(i方向が固定でj方向が可変、初期は空)
import java.util.*;

public class Test2{
public static void main(String[] args){
ArrayList<Integer>[] a = new ArrayList<Integer>[10];
for(int i=0; i<a.length; i++){
a[i] = new ArrayList<Integer>();
}
a[0].add(3);
System.out.println(a[0]);
}

}

こう書きましたがエラーが出ます。
どこがおかしいのでしょうか?

716 名前:ちんこ ◆GbXlaaQNk. [2008/02/24(日) 17:05:45 ]
age

717 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:07:30 ]
固定長のちんこなんて要りません

718 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:09:04 ]
1〜nの整数の順列をすべて表示するプログラムを書いてみたのですが
もっと簡単にやる方法とかここはこうしたらいいとかあったらアドバイスお願いします

import java.util.*;
class PermutationTest {
public static void main(String[] args) {
Permutation perm1 = new Permutation(4);
perm1.PrintPermutation();
return;
}
}

class Permutation {
private int N;
private int[] ans;
Permutation(int N){
this.N = N;
this.ans = new int[N];
}
void PrintPermutation() {
int[] a = new int[N];
for (int i = 0; i < N; i++) {
a[i] = i+1;
}
this.subPrintPerm(a,0);
}

続く

719 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/24(日) 17:09:27 ]
まぁまぁそういわず。
なんでエラーが出るのかさっぱり分からなくてね。

720 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:09:46 ]
>>718の続き

private void subPrintPerm(int[] a, int idx) { // 配列a[]から1つ取り出して残りで再帰呼び出し
if (a.length == 1) {
ans[idx] = a[0];
ansを表示;
return;
}
for (int i = 0; i < a.length; i++) {
int[] b = new int[a.length-1];
ans[idx] = a[i];
int j=0;
while (j < b.length) {
if (j < i) {
b[j] = a[j];
} else {
b[j] = a[j+1];
}
j++;
}
this.subPrintPerm(b,idx+1);
}
}
}

721 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:10:15 ]
>>715
>>574-576

722 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/24(日) 17:16:06 ]
>>721
既出でしたね。
でもそのレスを読んでも分かったよな分からんようなです。
具体的にどうすればいいか示してもらえませんか?

723 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 17:46:20 ]
今まで書いたソースを消してクソして寝ろ
そして二度とブラウザを開かない

724 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/24(日) 17:47:03 ]
>>723
分からないんだろ?そういえばいいのにw



725 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/24(日) 17:58:50 ]
どう考えてもおれのコードと>>574のコードは問題点が違います。
おれが書いた>>715のコードはどこがミスがあるのか
指摘出来る人はいませんか?


726 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:17:40 ]
>715
ジェネリックスを使用したList<E>の配列は作れない、言語仕様的に。
したがって、int[][]のように2次元配列にするか、List<List<Integer>>のようにListにListを入れるべし

727 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:21:32 ]
ArrayList入れたいのかInteger入れたいのかはっきりしろ。

728 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:23:55 ]
可変長のちんこ入れたいです。

729 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 18:49:14 ]
ArrayList<Integer>[] a = new ArrayList[10];
でいいんじゃね?

730 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/24(日) 18:54:02 ]
現在作成中の
ダイクストラ法による最短経路探索プログラムです。
www.uploda.org/uporg1268729.zip.html
うpしました。
これでListを使えると便利なので使いたいと思ったのですが、
具体的に今findShortestPath @ MainPanel
というのを実装しています。
ここで、toArray周辺でエラーが出て、どういう事だかさっぱり分かりません。

エラーの原因が分かる人は教えてください。

731 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:06:16 ]
730 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん

732 名前:ちんこ ◆GbXlaaQNk. mailto:sage [2008/02/24(日) 19:08:57 ]
さっぱり分からない。

733 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:34:33 ]
カレントディレクトリを移動してからEXEを実行したいのですが、下のように書いてもhoge.exeが実行されません。
どう書けばよろしいでしょうか?

Runtime.getRuntime().exce(new String[]{"cmd.exe","/C","cd C:\hoge","hoge.exe"})

hoge.exeが自分のルートにファイルを出力する為、カレントディレクトリを移動しなければならず
この処理を含む実行ファイルをhoge.exeのフォルダに置くのは避けたいです。


734 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 19:37:52 ]
ProcssBuilder にカレントディレクトリ指定できるものがあったとオモ



735 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:04:50 ]
JMenuBarの中にメニューを2つ追加し、それぞれのメニューの中に
同じ名前のJMenuItem、同じActionListenerをセットした場合、
それぞれのMenuItemが選択された際の処理を変えることは可能でしょうか

ネットや書籍を調べてみたところ、JMenuItemが選択されたイベントが発生した場合、
そのイベントの名前をgetActionCommandで取得し、条件分岐を行っていましたが
同じ名前のItemが存在する場合の条件分岐方法を見付けることができませんでした

諦めてそれぞれのItemに別々のActionListenerクラスをセットするしかないのでしょうか

736 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:07:51 ]
getSourceとJMenuItemを==で比較するという手もある

737 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:21:18 ]
同じ名前のJMenuItemってのが設計おかしくねえか?
見た目が同じだとしても場所とか違う識別子にはなるだろ

738 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:22:28 ]
マルチキャストソケットを利用した、簡易チャットルームの
ようなものを作成しているのですが、現在接続中のユーザーを
表示させる部分がうまくいきません。

IPで表示させるのですが、取得の方法が悪いのでしょうか?
ユーザー表示部分だけなので、宿題スレでなくこちらで質問させて
いただきました。よろしくおねがいします。

rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/217.java

739 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:30:45 ]
うまくいかないでは解らん。
例外が発生するのか、処理がそこを通らないのか、ちゃんと情報を出せ。

あと、直リンできねーぞ

740 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 20:50:37 ]
>>734
レスありがとうございます。
できればRuntime.getRuntime().execでやりたいと思うのですが、無理でしょうか?
やはりjdk1.5ならProcssBuilderを使った方が良いのかな・・・。


741 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:02:36 ]
>>739
失礼しました。

特にエラーが出て処理が停止するというこはなく、
表示ボタンを押してもnullが返ってくるため
ユーザーのIPが上手く取得できていないのでは
ないかと思っています。

ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/main.htm
の217番にUPしてあります。

742 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:09:58 ]
>741
System.out.println( "ユーザー表示ボタンが押されました" );
って行は通っているのでOK?
あとメッセージの表示は問題ない?
System.out.println( "アドレスを新規登録しました" );
って行は通ってないのか?

743 名前:デフォルトの名無しさん [2008/02/24(日) 21:24:27 ]
tomcat5.5
eclipse
を使用してwebアプリを作ろうと思っています。

一つのプロジェクトで複数のTomcatを動かそうと思っています。
この場合、ルートディレクトリが複数で
ソースの出力先フォルダ一つしか設定できません。

ということは片方のルートディレクトリにしか
サーブレットのクラスは置けないため、
片方のtomcatからしかソースを参照できません。

こういった場合どうすればよいでしょうか。

744 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:38:05 ]
早速見ていただきありがとうございます。

>>742
>System.out.println( "ユーザー表示ボタンが押されました" );
の部分はシステムコンソールに表示されているため
通っているものと思われます。また、メッセージも
""で囲まれている部分はきちんと表示されています。

>System.out.println( "アドレスを新規登録しました" );
この行もシステムコンソールでは表示されているので
通っていると思うのですが・・。



745 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:39:48 ]
すまんがだれか、>>743をエスパーしてくれ。
何となく解る気もするが、
なんで、エクスポートしたwarファイルをもう一つのTomcatに置くのではダメなのかが解らない。


746 名前:デフォルトの名無しさん [2008/02/24(日) 21:43:33 ]
>>743
何のためにそれをするのか知らないがeclispeはtomcatのラウンチャーじゃない
tomcatは別途立てて、そこにDeployするべき
あとeclipseの1プロジェクトで複数のWebアプリケーションを動作させようというのも間違い
プロジェクトを分けなさない


747 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:50:47 ]
>744
"現在の接続ユーザーは " + userlist + "\n"
の部分だが、JTextAreaにまったく反映されないのか?
中身だけが空なのか、どっちだ?

748 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:53:00 ]
JDK 6 Update 4が落とせないんですが何が問題なんでしょうか。

エラーは承認することができないという内容で、いくつかの環境で試しましたが同様です。

749 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:53:30 ]
>747
userlistの中身がからで
現在の接続ユーザーはnullです という表示になっています。

750 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 21:56:26 ]
>>749
Chatroom#userlistに何も代入していない

751 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 22:02:11 ]
>750
回答ありがとうございます。

userlist.add(clientAddr);

上記の文でアドレスが代入されるものと思っていたのですが、
この文の書き方では代入されていないということでしょうか?

752 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 22:03:12 ]
それはローカル変数のuserlistであってChatroom#userlistではない

753 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 22:28:32 ]
>752

ありがとうございます。入ってると思ってたものが
別のものだったのですね。

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

754 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:29:39 ]
Class Parent {
 private int val;
 public getVal() { return val; }
 public setVal(int val) { this.val = val; }
 public Parent clone() {...}
}

みたいに、clone() を実装したクラスParentがあったとして、
これを継承した子クラス Child を作ります。
で、この Child でも clone() を実装したいのですが、
その Child#clone() はどうやって実装するのが普通ですか?

public Child clone() {
 Child c = new Child();
 c.setVal ( this.getVal() );
 ...
 return c;
}

と、親クラスの Parent#clone() の存在を完全に無視してもいいもんですか?
これだとどうもスマートじゃないような気がして、protected なコンストラクタを
親クラスに追加する、なんて方法も考えたんですけど、
典型的な手法があるのならばご教示ください。



755 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:35:47 ]
>>754
class Parent implements Cloneable { 
 private int val; 
 public getVal() { return val; } 
 public setVal(int val) { this.val = val; } 
 public Parent clone() {
  try{
   return (Parent)super.clone();
  } catch(CloneNotSupportedException e){
   throw new RuntimeException(e);
  }
 }
}
class Child extends Parent {
 public Child clone() {
  return (Child)super.clone();
 }
}

756 名前:デフォルトの名無しさん [2008/02/24(日) 23:40:36 ]
Javaの勉強始めました。

アクセス就職子protectedについて理解が足りないので教えてください。
protectedつけることで、
『自分のクラス内のメソッド 又は 継承されたサブクラス内のメソッドからしかアクセスできない』
そのように直感的に感じたのですが、
間違っているようで。
public class Purotekuto {
public static void main(String[] args) {
Test21 hogehoge = new Test21();
System.out.println( "値を出力:" + hogehoge.protectedInteger );
}}
public class Test21 {
protected int protectedInteger;
Test21() {
this.protectedInteger = 0;
}
public void setValue( int value ) {
this.protectedInteger = value;
}
public int getValue( int value ) {
return this.protectedInteger;
}}
このコードでは、main()から、クラスTest21のメンバ、protectedIntegerにアクセスできずに、
エラーか何かになると思ったのですが、普通に動きました。
自分の考えの何がまずいのでしょうか。。。

757 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:45:28 ]
>754
super.clone() を使うかどうかは状況次第じゃね?
というか、普通はsuper.clone()は使えない方が多いと思う。
帰ってくるのはParentクラスのインスタンスだから、結局は値をコピーしなければならなくなるから。

758 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:46:09 ]
>>754
何のための継承、何のためのオーバーライド。
何がスマートじゃないんだ。感覚的に言われてもな。

ちなみに、cloneを使うなら、Cloneable を implements すること。
// 詳しくは Clonable, Object.clone 参照。

>>756
同じパッケージからもアクセスできるから。以上。

759 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 23:47:23 ]
>756
もう1つ条件があって、「同一パッケージ内からのアクセス」もOK

760 名前:756 [2008/02/25(月) 00:01:54 ]
758,759 ありがとうございます。

指摘を受けて調べました。
パッケージ化しないことには、ソースはばらばらのパッケージ的な扱いと、勝手に勘違いしていました。
デフォルトのパッケージ、という扱いになるのですね。
勉強になりました。

761 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:09:47 ]
と言うかデフォルトパッケージの使用は避けてくれ。

762 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:11:27 ]
>>757-758
ありがとうございます。
ちょっと理解できてきました。

763 名前:756,760 mailto:sage [2008/02/25(月) 00:18:14 ]
>761
というと、必ず特定のパッケージに入れることを明示することが望ましいということでしょうか。
自分今回痛い目にあったので、761の指示に従って付いてまいりますが。

764 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 00:48:09 ]
>>763
デフォルトパッケージ以外のパッケージに属するクラスから
一切呼び出しが出来ない。(JDK 1.4 以降)

プログラミングの一般論としても
何らかの名前空間に所属させるのは
良い習慣だと思う。



765 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 01:00:16 ]
>>754
普通はコピーコンストラクタを作る
Cloneable は Java の失敗作とジョシュアっちが言ってました

766 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 04:11:37 ]
これからjavaを学ぼうと考えています。
JAVAのSDK沢山種類があるようですが、
どれを使用すれば良いでしょうか?






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

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

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