★★Java質問・相談スレッド133★★
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2009/09/20(日) 01:02:31JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理 ttp://pc11.2ch.net/hp/
Webプログラミング ttp://pc11.2ch.net/php/
をご利用下さい。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
ttp://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
★★Java質問・相談スレッド133★★
ttp://pc12.2ch.net/test/read.cgi/tech/1251630161/
次スレは>>950あたりで。
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
ttp://www.wikiroom.com/java/
0809デフォルトの名無しさん
2009/11/15(日) 19:54:06特許がらみが多い分野だからほとんどの形式がクローズドだけど。
0810デフォルトの名無しさん
2009/11/15(日) 20:01:17System.setOutで出力先をPipedOutputStreamか何かに変え、PipedInputStreamか何かで読み出す
0811デフォルトの名無しさん
2009/11/15(日) 22:24:08ありがとう!解決した!
0812デフォルトの名無しさん
2009/11/15(日) 22:35:180813デフォルトの名無しさん
2009/11/15(日) 22:49:060814デフォルトの名無しさん
2009/11/15(日) 22:49:48唯一のクラスローダしか存在しない場合、FQNが同一のクラスは、一つしか存在することができない。
0815デフォルトの名無しさん
2009/11/15(日) 23:08:02ウィザードじゃないから知らないだけかもしれないけど、static変数とか矛盾
してしまうと思うんだが。
0816デフォルトの名無しさん
2009/11/15(日) 23:28:29J2EEやっていれば同一のコンテナ(単一JavaVM)に複数のWebアプリケーションをデプロイして、
それぞれのWebアプリが独自のライブラリ(WEB-INF/lib)を利用する状況を考えて欲しい。
たとえばAアプリはlog4j1.2で、Bアプリはlog4j1.1というのは普通に可能。
それらはThreadに割りつくContextClassLoaderが入れ替わることで(実装者が意識しないかたちで)実現されている。
0817デフォルトの名無しさん
2009/11/15(日) 23:29:07できるよ
異なるクラスローダがロードしたクラスは、同じFQNであっても別々
static変数も別々
Classオブジェクトを比較しても一致しない
0818デフォルトの名無しさん
2009/11/15(日) 23:31:11あらゆる意味で異なるクラス扱いだったはず
0819デフォルトの名無しさん
2009/11/15(日) 23:36:33それはsmart deployという仕組みで、開発時にhot deployが可能なんだけど、
そのやり方は結構単純で、クラスローダをRequestを受け取るごとに生成・廃棄して、
新規にコンパイルされたClassを都度読み込みさせている。
そのようなやり方をすれば、一度読み込まれたClassでも即時反映が実現できる。
0820デフォルトの名無しさん
2009/11/15(日) 23:40:34http://d.hatena.ne.jp/masugata_k/20071203/1196684216
とそのリンク先を見てみた。
システムクラスローダは差し替え可能なわけか。知らなかった。
0821デフォルトの名無しさん
2009/11/16(月) 00:06:47それとも管理するためのAPIだけを提供すれば皆安心?
0822デフォルトの名無しさん
2009/11/16(月) 00:20:52あれば使ってもらえるし、出来が気に入らなかったら改造するだろうし。
ソース無くてもjadで見ちゃうけど。
0823デフォルトの名無しさん
2009/11/16(月) 00:58:42そりゃそうか
0824デフォルトの名無しさん
2009/11/16(月) 02:05:38JAVA初心者なのですが
JAVA2のSEとMEをインストールしようと思い一通りダウンロードしたんですが、
java_ee_sdk-5_08-jdk-6u17-windows-ml.exe
これ以外はインストール出来ませんでした。
EEに当たるようなんですが、サイトを見直すとSEに該当しているようにもみえます。
しかし次にMEをインストールしようとすると「SEがインストールされていない」とでてMEがインストールされません。
MEがSE1.4?のみに対応している可能性もあるのでダウンロードしようとしたんですが見当たりません。
ですがそれ以前から教則本の付録でついてたj2sdk1.4.1_01(ランタイム?)を使用してます。
パソコンは2000年発売VAIOのXPです。SPをインストールしていません。
(すでにSP1がダウンロード不可のため)
どなたかアドバイス下さい。よろしくお願いします。m(_ _)m
0825デフォルトの名無しさん
2009/11/16(月) 02:46:23http://java.sun.com/javame/downloads/index.jsp
J2ME時代で環境作りたい場合はこっちから落とす
http://java.sun.com/javame/downloads/previous.jsp
0826デフォルトの名無しさん
2009/11/16(月) 02:55:540827デフォルトの名無しさん
2009/11/16(月) 15:12:06プロセス間のは(共有ロック)取ってくれてると思って使ってるけど。
スレッド間の排他はユーザがやる必要があるのでしょうか?
0828デフォルトの名無しさん
2009/11/16(月) 16:20:57C言語ソースの移植作業しているのですが・・・。
int a(short b)
{
return b+5;
}
を
a(50);のように定数を引数にしてコンパイルすると
「a(short) は (int) に適用できません」
とエラーが出てしまいます。
a(50);をa((short)50);のようにキャストすればエラーは無くなりますが、
定数をいちいちキャストするのが面倒です。
キャスト以外に良い方法は無いでしょうか?
0829デフォルトの名無しさん
2009/11/16(月) 17:38:52int a(int b) { return a((short)b); }
みたいな
0830デフォルトの名無しさん
2009/11/16(月) 19:47:260831デフォルトの名無しさん
2009/11/17(火) 01:06:240832デフォルトの名無しさん
2009/11/17(火) 01:48:170833デフォルトの名無しさん
2009/11/17(火) 07:46:28メッセージングとか一部機能のつまみ食い程度しか使ったことないから、
3.0はいい感じなのか実際に採用してる人たちの実感を聞きたいなと。
0834デフォルトの名無しさん
2009/11/17(火) 10:18:390835デフォルトの名無しさん
2009/11/17(火) 10:25:030836デフォルトの名無しさん
2009/11/17(火) 15:36:51現在塗りつぶしを行うアプレットをアプリに書き換えています
が、なかなか上手くいきません
アプレット/アプリケーション共通プログラムという
http://www.asahi-net.or.jp/~dp8t-asm/java/tips/AppletApp.html
このサイトの通りに行っているはずなのですが、、、
間違っているところがあれば、アドバイスをお願いします
以下が私のソースです
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/10131.txt
サイトの通りに、ExitWhenWindowClosingクラスとAppletFrameクラスは別に作ってあります
0837デフォルトの名無しさん
2009/11/17(火) 15:47:43この問題の原因、または解決方法をご存知の方みえましたら教えていただけないでしょうか。
実行環境:windows vista / Eclipse 3.5.1 Galileo Windows 32bit ベース / Pleiades All in One 3.5.1.20090930
コード:
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println(br.readLine());
} catch (IOException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
}
}
入力:
む
出力:
�?
0838デフォルトの名無しさん
2009/11/17(火) 16:46:00キーボードが日本語106キーで認識されて無いのかな。
「む」「ろ」「BackSpace」キー等には気をつけて。
解決策は・・・ドライバがどうなっているかくらいか・・・わかんね。
見当違いかもしれんが参考に。
0839デフォルトの名無しさん
2009/11/17(火) 17:05:10おお!ありがとうございます。
ドライバ確認してみます。
0840デフォルトの名無しさん
2009/11/17(火) 21:53:16現状はまだ様子見しつつって感じのようですね。
0841デフォルトの名無しさん
2009/11/17(火) 21:56:48Apache+Tomcatの時代なんて今は昔。
まあ私の周りの話だから他は知らんけど。
0842デフォルトの名無しさん
2009/11/17(火) 22:09:55使えるところで淡々と使われるだけ。
0843デフォルトの名無しさん
2009/11/17(火) 22:14:40分散+フェイルオーバーで高可用構成とかでも
業務フレームワーク作りこみで対応してるケースが多い。
EJB3.0はコンフィグ地獄じゃなくてよさそうなんだよね。
軽量コンテナとの境界もあいまいになってるわけで、
そうなると標準化プロセスを経ているEJBのメリットが生きてくるような気がする。
0844デフォルトの名無しさん
2009/11/17(火) 22:19:52HibernateよりJPAやiBatisを選択するのがいい。
0845デフォルトの名無しさん
2009/11/17(火) 22:26:28JPAは意識してるけど、使いやすさとパフォーマンスの点でS2JDBCに浮気してたりして。
0846デフォルトの名無しさん
2009/11/17(火) 23:06:12配列名を引数で与えるにはどうしたらいいのでしょうか。
static int[] mkArr(String arrName, int itemNum){
int[] arrName = new int[itemNum];
//このあとはarrName[0]〜[itemNum-1]の値をキーボードから
//入力させます
}
この段階で
重複ローカル変数 arrName,
と警告がでます(Eclipse使用です)。
型が String だとまずいのかもしれないかとも思いますが、見当もつきません。
※このメソッドはメインクラスに書く予定です。
レベルが低すぎて申し訳ありませんがよろしくご教示ください。
お願いいたします。
0847デフォルトの名無しさん
2009/11/17(火) 23:17:10最初のステートメントでint[] arrNameを宣言してるやん。
質問のわかりにくさからして始めたばかりなんだろうけど。
0848846
2009/11/17(火) 23:54:30お答えありがとうございます。
お察しのとおり始めたばかりです。
↓こんな感じで呼び出すと
mkArr("arr1",3)
int[] arr1 = new int[3];
となって配列arr1が生成されるのかと思っているのですが
違うんですよね。。
ずっと考えてるのですがわかりません。
ここ読んどけっていうところがあったら、教えていただければ助かります。
よろしくおねがいします。
0849デフォルトの名無しさん
2009/11/18(水) 00:03:090850デフォルトの名無しさん
2009/11/18(水) 00:03:38まず何をするプログラムなのかが分からない。
0852デフォルトの名無しさん
2009/11/18(水) 00:08:320853デフォルトの名無しさん
2009/11/18(水) 00:09:49だが質問の素人であってはいけない。
0854デフォルトの名無しさん
2009/11/18(水) 00:13:180855デフォルトの名無しさん
2009/11/18(水) 00:17:34自分も初心者なんですが、
static int[] mkArr(int itemNum){
int[] arr = new int[itemNum];
//入力
return arr;
}
メソッドをこんな感じにして
int[] arrName = mkArr(itemNum);
呼び出し側で、受け取ればいいのでは?
arrNameは受け取りたい配列名で。
たとえば、
String str = "arr";
int[] str = new int[5];
とやっても、arrという名前のint型の配列は
出来ないかとw
0856デフォルトの名無しさん
2009/11/18(水) 00:19:25すいません。
0857デフォルトの名無しさん
2009/11/18(水) 00:35:34なかなか独創的なコードだけど、以前はどの言語をやってたの?
0858デフォルトの名無しさん
2009/11/18(水) 01:27:56識別子に_だけでプログラムするのが変態
識別子にg,o,t,oしか使わないでコーディングするのも変態
0859デフォルトの名無しさん
2009/11/18(水) 01:58:040860デフォルトの名無しさん
2009/11/18(水) 02:35:54JPAやiBatisと比べてどの辺がありえないの?
0861デフォルトの名無しさん
2009/11/18(水) 03:47:43JPAとの対比で語ってるからNativeAPIやらHQLでの話なんだろうけど。
0862デフォルトの名無しさん
2009/11/18(水) 11:50:27Javaとか初心者とか言って質問する前に、変数と関数というプログラムの基礎概念を勉強してこい
0863デフォルトの名無しさん
2009/11/18(水) 22:25:580864デフォルトの名無しさん
2009/11/18(水) 22:50:16ORMの業務適用要件は2.0の悲観的ロックサポートで満たしたと言ってよい。
iBatisはSQLをガリガリかけて、かつマッピングも楽ちんだから、
Java屋ではない外様がORMのメリットをすぐに享受できるところが良い。
本格的なORMは真の習得に三ヶ月かかると言われてるから、
標準 or 即効性の保守要件にHibernateは引っかからない。
0865デフォルトの名無しさん
2009/11/19(木) 01:41:20■.jspの記述
<h:dataTable var="list" value="#{bean.dataModel}">
<h:column>
<h:inputText value="#{list.text}"/>
</h:column>
・・・
</h:dataTable>
みたいなテーブルを表示して入力部を設け、ボタンを押したら値をテーブルの型式で取得したいのです。
bean.dataModelはListDataModelを返します。
beanのスコープはrequestです。
どのように値を取得するのが賢いのか教えて下さい。
0866デフォルトの名無しさん
2009/11/19(木) 09:59:11JavaBeans形式以外のオブジェクトでは出来ないのでしょうか?
0867デフォルトの名無しさん
2009/11/19(木) 12:36:470868デフォルトの名無しさん
2009/11/19(木) 16:24:49例えばstring[1]だとしたら1と読み取ってくれるやつです
0869デフォルトの名無しさん
2009/11/19(木) 16:26:270870デフォルトの名無しさん
2009/11/19(木) 18:12:31>string[1]だとしたら1
も曖昧で分からん。
0871デフォルトの名無しさん
2009/11/19(木) 18:59:39@XmlTransientでOK
@XmlAccessorType(XmlAccessType.FIELD)なら
マーシャリングしたくないフィールド(メンバ変数)を
transientにしとけばOK
0872デフォルトの名無しさん
2009/11/19(木) 19:08:060873デフォルトの名無しさん
2009/11/19(木) 20:01:30なんで?
0874デフォルトの名無しさん
2009/11/19(木) 20:11:040875806
2009/11/19(木) 20:13:27>>873
javaには優秀なコレクションフレームワークが標準で装備されているので、配列ではなくそっち使おうぜ。
>>872はそういいたいのだと思う。
配列で十分だと思ったら、何でもかんでもコレクション使うことは推奨しない。
0876デフォルトの名無しさん
2009/11/19(木) 20:14:140877デフォルトの名無しさん
2009/11/19(木) 20:15:110878806
2009/11/19(木) 20:19:30ローカルなメソッドの内部処理に用いる場合は、配列もありだと俺は思う。
おさらいだけど
配列:速度良 メモリ小 操作ミス多
コレクション:速度どうかな メモリ最小とはいかない 操作簡単安全
0879デフォルトの名無しさん
2009/11/19(木) 20:27:45とりあえず「ArrayList使っとけ」でおk
0880デフォルトの名無しさん
2009/11/19(木) 20:32:08HttpURLConnectionを使ってhttp通信を行います。
yahoo!などのサイトで接続した結果、問題なく接続し、情報を取得する事が出来ましたが、
問題のサイトに接続したところjava.io.FileNotFoundExceptionで弾かれてしまいました。
該当URLはブラウザでアクセスしたところ問題なく表示出来ます。
(パスワードやログインを要求するようなサイトではありません)
恐らくサーバー側で何かを見ているのではないかと思うのですが、
サーバーがチェックしてそうな項目を教えては頂けないでしょうか。
現在設定しているRequestPropertyは
Host、User-Agent、Accept、Accept-Language、
Accept-Encoding、Accept-Charset、Keep-Alive、Connection
で、値はブラウザで該当URLの確認ができた時と同じ値をセットしています。
0881デフォルトの名無しさん
2009/11/19(木) 20:33:56リストの半ばの挿入削除が速いって理屈は分かるが、
その場所に辿り付くまでは結局イテレートしてるわけで。
0882デフォルトの名無しさん
2009/11/19(木) 20:36:400883デフォルトの名無しさん
2009/11/19(木) 20:42:19お前モペ吉か?
0884デフォルトの名無しさん
2009/11/19(木) 20:45:43メリットはあんたが言ってる通りじゃねーかw
0885デフォルトの名無しさん
2009/11/19(木) 20:46:44でもgetFirstなどからして、stackとかqueueに特化した使い道が一番。
0886デフォルトの名無しさん
2009/11/19(木) 20:58:49ArrayListよりも速いはず。逆に、要素の〜番目みたいなアクセスは破滅的に遅いと思う。
ランダムアクセスしない&削除と挿入が頻繁、ならむしろLinkeListの方が良いと思います。
ところで質問なのですが、
Javaで参照カウンタみたいな仕組みを実現したいのですが、なにか良い方法はないでしょうか。
0887デフォルトの名無しさん
2009/11/19(木) 21:01:580888デフォルトの名無しさん
2009/11/19(木) 21:03:54staticな変数を持って、
コンストラクタ内でインクリメント
ファイナライズ内でデクリメント
いい方法ではないが、これしか思いつかなかった。
0889デフォルトの名無しさん
2009/11/19(木) 21:04:08404や503にはならないのですが
そのサイトではRequestPropertyを全て外すと403になります
またyahoo!などのサイトで接続した結果、問題なく接続し、情報を取得する事が出来ました
0890デフォルトの名無しさん
2009/11/19(木) 21:04:17でも実際試してみると ArrayList は LinkedList より結構速い
0891デフォルトの名無しさん
2009/11/19(木) 21:08:10メモリ効率は上達にはかかせないだろ。
0892デフォルトの名無しさん
2009/11/19(木) 21:08:210893デフォルトの名無しさん
2009/11/19(木) 21:12:27Java1.4時代に迷い込んじまったw
0894デフォルトの名無しさん
2009/11/19(木) 21:14:090895デフォルトの名無しさん
2009/11/19(木) 21:14:380896デフォルトの名無しさん
2009/11/19(木) 21:23:08おかしいと思う理由を書けよw
荒らしか?
0897デフォルトの名無しさん
2009/11/19(木) 21:28:54コーディングする楽しみなんてないんだろうな。
0898デフォルトの名無しさん
2009/11/19(木) 21:33:20パフォーマンスの80%はソースコードの20%に依存するって奴だ。
裏を返せばソースコードの80%は保守性のが大事ってこと。
0899886
2009/11/19(木) 21:43:11レスありがとうございます。
その方法だと、そのクラスのインスタンスがいくつ存在するか、
ということがわかりますね。参照カウンタと近い気がするので参考にさせていただきます。
0900デフォルトの名無しさん
2009/11/19(木) 21:50:44数ヵ月後に、俺なんでこんなややこしいコード書いてんだ?
もっとeasyでいいやんって書き直している途中で
そういうコード書いてた理由を思い出す
revert
0901デフォルトの名無しさん
2009/11/19(木) 21:54:04荒らすな鼻糞
0902デフォルトの名無しさん
2009/11/19(木) 22:02:420903デフォルトの名無しさん
2009/11/19(木) 22:48:250905デフォルトの名無しさん
2009/11/19(木) 22:55:290906デフォルトの名無しさん
2009/11/19(木) 22:56:020907デフォルトの名無しさん
2009/11/19(木) 23:30:01弱参照と参照カウンタは関係ないだろ。
0908デフォルトの名無しさん
2009/11/19(木) 23:31:52レス数が900を超えています。1000を超えると表示できなくなるよ。