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

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

■ このスレッドは過去ログ倉庫に格納されています
00011NGNG
JAVA初心者の方はこちらのスレで質問をしましょう。そして誰か教えてあげてください。

なお、ソースを貼るときには、半角空白が消える仕様のため、タブ1つを全角空白2つに
置換してから投稿しましょう。雑誌や宿題などの疑問を質問するときは出展を明記した
ほうが解決が早いです。

関連情報は >>2-10 あたりにあります。 (一部 dat落ちやHTML化待ち)


JavaScriptの質問はWeb製作板へどうぞ。
web制作管理
http://pc.2ch.net/hp/

パソコンの基本操作に関しては、PC初心者板や、各OS板などで質問しましょう。
パソコン初心者@2ch掲示板
http://pc.2ch.net/pcqa/

上級者の方で教える技術が無い方は下記スレでダベりましょう。
初心者無視! Java相談室 その9
http://pc.2ch.net/test/read.cgi/tech/1021555964/


基本的にsage進行でおねがいします。
0041デフォルトの名無しさんNGNG
>>33
JCP JSR-1
Real Time Specification For Java

リファレンスインプリメンテーションがもうでているから、
探して来い。ちなみに、なぜかjava.sun.comではない。
0042デフォルトの名無しさんNGNG
ハッシュテーブルのキーと値を、ファイルにとっておくいい方法ってありますか?
0043デフォルトの名無しさんNGNG
>>42
java.util.Properties。
0044デフォルトの名無しさんNGNG
>>42
シリアライズ
0045デフォルトの名無しさんNGNG
>>42
JDK1.4つかって、
java.bean.XMLEncorder&XMLDecoder
0046デフォルトの名無しさんNGNG
文字列の中の \ を抽出したいのですが、どうしたらよいでしょうか
0047デフォルトの名無しさんNGNG
>>46
String#indexOf()
0048デフォルトの名無しさんNGNG
>>47速レスありがと
やっぱり説明不足だったね。
if (aaa.match('\'))
だと \ を含む文字列が判断できないじゃないですよね。
その場合、どのようにすればよいのでしょうか?
0049デフォルトの名無しさんNGNG
>>48
いいからAPIリファよんでくれ。
0050デフォルトの名無しさんNGNG
読むべきは、初心者向け入門書のエスケープ文字の扱いかも
005136NGNG
>>37
早速の回答ありがとうございます。
やってみましたがまたでます。
環境変数とコンパイルエラーの吐き出したStackTraceの中身は
後ろに載せてます。
あと関連質問ですが、サーブレットのライブラリ(javax.servlet)は
JDKのほうではなく、コンテナ(TomCat)の方に準備されている
のでしょうか?

autoexec.batの中身
PATH C:\jdk\bin;C:\mysql\bin;%PATH%;
JAVA_HOME C:\jdk
TOMCAT_HOME C:\tomcat
CLASSPATH
C:\jdk\lib;C:\jdk\jre\lib;
C:\jdk\lib\tools.jar;
C:\Tomcat\common\lib\servlet.jar;
C:\Tomcat\webapps\jsp10\WEB-INF\classes;

コンパイル時のエラー
Sample.java:5: シンボルを解釈処理できません。
シンボル: クラス HttpServlet
位置 : Sample の クラス
public class srv_intro extends HttpServlet { ^
Sample.java:6: シンボルを解釈処理できません。
シンボル: クラス HttpServletRequest
位置 : Sample の クラス
public void doGet(HttpServletRequest request,HttpServletResponse respons
e) ^
Sample.java:6: シンボルを解釈処理できません。
シンボル: クラス HttpServletResponse
位置 : Sample の クラス
public void doGet(HttpServletRequest request,HttpServletResponse respons
e) ^
Sample.java:7: シンボルを解釈処理できません。
シンボル: クラス ServletException
位置 : Sample の クラス
throws ServletException,IOException {
エラー 6 個

余談ですがautoexec.batいじっていたらWindowsが
起動すなくなりますた。
外付けFDが見当たらず、2時間ほど、中断を余儀なくされますた。
もうへとへとです。
0052デフォルトの名無しさんNGNG
あるファイルから文字列を読み込んで、処理が終わったあとに、またそのファイルに書き込む時、
前にあった内容を消して、新しい内容に書き換えるにはどうしたらいいですか?
0053デフォルトの名無しさんNGNG
インポートしてねえんじゃねえの。
0054デフォルトの名無しさんNGNG
>51
autoexec.bat内での環境変数の設定方法を根本的にわかってない気がする。
"PATH"という環境変数は特別扱いされてるだけだ。
0055デフォルトの名無しさんNGNG
>52
普通にやれば上書きになると思うが。追記の方がめんどくさくないか?
0056デフォルトの名無しさんNGNG
55>>
そのとおりだと思われ
0057デフォルトの名無しさんNGNG
>>52
StringBufferつかったら?イラン文字だけappend()しなければ
いいだけじゃん。
0058デフォルトの名無しさんNGNG
>57
「文字列」はこの際関係なかろう。追記か上書きか、って話だろ?
0059デフォルトの名無しさんNGNG
>57 ていうか何の話?
0060コギャル&中高生NGNG
男性にはまだ余り知られて
ませんので逆アポ率も激増
H好きな女子中高生が待ってます
(i/j/eza対応)
http://book-i.net/derr/
コギャルとH出来るサイトはここ
ヌキヌキ部屋へ直行便
↓
http://kado7.ug.to/wowo/
http://book-i.net/dankann/

H必ず出来る何度も挑戦
中高生感度良好
ロリ−タ好き
↓
http://fry.to/zzz.hi258.2tyann
http://www1.ocn.ne.jp/~kado77/kgi1.htm

0061デフォルトの名無しさんNGNG
>>59
たぶんstringBuffer使えば追記気味にいけるということだとおもわれ
0062デフォルトの名無しさんNGNG
runでデータを使いたい時、
なんで、コンストラクタにいろいろ渡さないといけないの?

0063デフォルトの名無しさんNGNG
あげ
0064デフォルトの名無しさんNGNG
runて何
0065デフォルトの名無しさんNGNG
>57 >61
何か勘違いしているだろ。

>62
別に?渡さなくてもイイよ?
006662NGNG
>>65

setter
でしょうか?
0067デフォルトの名無しさんNGNG
>66
イイんじゃない?
つーか、目的に合わせて設計しろよ。

>>51
autoexec.batの例
これを参考にして、自分の環境に合わせて autoexec.bat 作れ

loadhigh C:\WINDOWS\COMMAND\nlsfunc.exe C:\WINDOWS\country.sys
set temp=C:\temp
set tmp=C:\temp

set PATH=C:\jdk\bin;C:\mysql\bin;C:\WINDOWS;C:\WINDOWS\COMMAND;.
set JAVA_HOME=C:\jdk
set TOMCAT_HOME=C:\tomcat
set CLASSPATH=C:\jdk\lib\tools.jar;C:\Tomcat\common\lib\servlet.jar;.
doskey
0068デフォルトの名無しさんNGNG
>>>>runでデータを使いたい時、なんで、コンストラクタにいろいろ渡さないといけないの?
>>>別に?渡さなくてもイイよ?
>>setterでしょうか?
>イイんじゃない?

なんで会話が成立してるのかさっぱりわからん

ていうか

>>57 >61
>何か勘違いしているだろ。

そらお前や。
006962NGNG
>>68

成立してませんよ。
0070デフォルトの名無しさんNGNG
>>69
ワロタ
007168NGNG
あ、やっぱり?
0072デフォルトの名無しさんNGNG
filechooserでファイルダイアログウィンドウ出すとき、現在実行しているclassファイルがあるフォルダを自動的に指定したいのですが、
どのようにすればよいのでしょうか?

あと、.jarのファイルをダブルクリックすればいちいちコマンドプロンプトから実行する必要なしのようですが、いつのまにかlhaplusに関連付けされていました。実行不可です。
もともとはどのアプリに関連付けされていたのでしょう?
007365NGNG
ネタだったのか…
鬱…。
0074デフォルトの名無しさんNGNG
>>72
JDKを再インストロールするば?
0075デフォルトの名無しさんNGNG
>72
ファイルチューザですが、良い方法を知りませんが、システムのプロパティからjava.class.pathでプロパティの値を取ってきて考えてみてください。

ただ、.jarファイルの質問を見る限り、Javaのコンパイル方法と起動方法を調べてみるとか、基本的なところから始めた方がよさそうですね。

そのあたりはネットに無数に情報があると思います。今後の情報源を広める意味でも御自分で調べてみてはいかがでしょうか。多分のちのちも役に立ちますよ。
(賛否あっても、アットマークITとかJavaHouseとかは。)

一応、javaの-jarオプションで起動するように関連付けを修正してみれば ?とだけアドバイスしておきます。

0076デフォルトの名無しさんNGNG
名前付けルールってどこに書いてある?
objConn
strName
とか。
0077デフォルトの名無しさんNGNG
>>76
FAQ
0078デフォルトの名無しさんNGNG
>>76
VBからの移行組かな?
とりあえずそのまま行けばいいよ。
0079デフォルトの名無しさんNGNG
javaコーディング標準。
0080デフォルトの名無しさんNGNG
>>78
Sunのページのどこかに書いてあったの記憶してるけど、どこか知りませんか?
0081デフォルトの名無しさんNGNG
digitalcatsが私の知らないうちに亡くなってるんですけど・・・なぜですか?
0082デフォルトの名無しさんNGNG
教えるのが下手なヤツが多いな。
0083デフォルトの名無しさんNGNG
>>82
そうでもない
0084 NGNG
>>82
うまい教え方を教えてください。
0085デフォルトの名無しさんNGNG
昨日のファイルアップロードサーブレット君へ
ルーターの設定で、外からのポート 80 アクセスを LAN 内の鯖のポート 80 へ
飛ばすように static routing すれば大丈夫だと思う。ルーターにその機能が
あるか知らんけど。
0086デフォルトの名無しさんNGNG
>>85
>>26

0087デフォルトの名無しさんNGNG
JSP、JavaBeanをつかったセッション管理のことについて詳しく説明のある
ホームページを教えてください。
あと、Servlet2.3のセッションについて書いてあるページも教えてください。
0088デフォルトの名無しさんNGNG
>>87
http://java.sun.com/j2ee/ja/servlet/download.html
0089デフォルトの名無しさんNGNG
>>87
それぐらい探す努力しろよ。
0090sinnNGNG
Forte使っているのですが、J2MEインストールすると
通常のJavaソースがコンパイルできません。
コンパイラの切り替えの方法を知っている方、
是非教えてください。
0091デフォルトの名無しさんNGNG
ちょっとスレの志向と違うかもしれませんが・・・
JVMのバージョンってどーやったら分りますか?
おしえてください。おねがいします。
0092デフォルトの名無しさんNGNG
-versionやsystem properties
0093デフォルトの名無しさんNGNG
>>92
初心者はそれだけじゃわからない罠
0094デフォルトの名無しさんNGNG
>>91

IE ならば

1. [ツール(T)]−[インターネットオプション(O)] の [詳細設定] を開き、
2. Microsoft VM の [Javaコンソールの使用] にチェック
3. IE を再起動し、[表示(V)]−[Javaコンソール(J)]
0095デフォルトの名無しさんNGNG
nativeって、どういう意味があって、どういう使い方するの?
0096デフォルトの名無しさんNGNG
>>94
ありがとうございました。
どうぞお納めください。
ttp://member.nifty.ne.jp/kannoudog/Photo/Vol1/photo8.jpg
0097デフォルトの名無しさんNGNG
>>96
女の人だったらどうするんだよ
009827(前スレ952)NGNG
>>97 あっ!

>>94さんごめんなさい。
男性にしろ女性にしろこの画像が気に入るとは限らなかったですね。
もし気分を害したならそれは当方の過ちです。
どうぞ叱ってください。罵ってください。
すみませんでした。
0099デフォルトの名無しさんNGNG
>>95
native -> ネイチブ -> 自然
これからわかるようにC言語を通じて機種依存のコードが書けます。
010095NGNG
ありがとう。今、
class test {
 native int nativemethod(int ch) {
  return ch;
 }
}
ってやってみたらコンパイルエラーになったので、少しわかってきた。

javaのプログラム上では(nateveで修飾した)メソッドの宣言だけしておいて、
実際の動作は別なところに(Cなどで)記述するってことだね。
で、Cなどからアクセスするためのインターフェースや規約は
ドキュメントのJNIのところに書いてあると。(全然読んでないけど)

実際に必要になるまでは、この程度の理解でよいのかな。
0101デフォルトの名無しさんNGNG
>>99
あ、気になる
ネイティブコード、ネイティブイベントって使い方するよね
コンピュータではネイティブ=機種依存でいいのかな
もーちょい詳しくお願いプリーズ
0102デフォルトの名無しさんNGNG
>>100
全然だめだろ……。指摘しようにもどこから突っ込んだらいいかわからん。
0103デフォルトの名無しさんNGNG
>>102
説明が下手な方は、このスレから去って下さい。
010495NGNG
そんなに変かな。
>>100は既存のソースに出てきた場合のことではなく、
自分で実装する場合のことを書いたんだけど。
「仮にnativeなメソッドを実装しても(javaソース上では)宣言部を書くだけ」と書いたつもり。
もちろん、他の誰かが書いたソースにnativeが現れたら、
それが「実際は別の.soなり.dllなりに実装されていてそれを呼び出している」なんて
あたりまえだと思ってるし。

それともJNIとは関係ないってことかな。
(ドキュメントの/jni/spec/design.doc.htmlにもあるのもみつけたので
全く無関係ではないだろうけど、nativeが全てJNIを使っているわけではないという意味で)

まあ、いいや。使いもしないのに質問した俺が悪いんだし。
010595NGNG
そうそう、
class test {
 native int nativemethod(int ch);
 public static void main(String[] args){
  test t = new test();
  t.nativemethod(1);
 }
}
これをやったらコンパイルは通って、実行時エラーになるのは確認済み。
ライブラリをリンクしてない(もちろん作ってない)から。
0106デフォルトの名無しさんNGNG
エクスプローラーのようにファイルをツリーで表示させたいのですが、
大量にディスク上のツリー情報を読み込むとに時間が掛かります。
この場合どうすれば良いでしょうか?いま自分が考えているのは、
表示されているディレクトリのアイコンをクリックすると、その時点で
そのディレクトリ以下のディスク上のツリー情報を初めて読み込み、
表示するという方法です。(proxyパターンの遅延処理のような)
0107デフォルトの名無しさんNGNG
異なる JVM から非同期に入出力が行われるファイルがあります。データベースが
使えない場合、ロックファイルを用意して獲得できなかったらスリープ、より
良い方法はありますか?

File lock = new File("hogehoge.lock");
boolean locked = false;
for(int i=0; i<10; i++){
  if(lock.createNewFile()){
    lock.deleteOnExit();
    locked = true;
    break;
  }
  Thread.sleep(200);
}
if(! locked)  throw new HogeException("Lock Pending");
try{
  // … ファイル入出力処理
} finally {
  lock.delete();
}
0108デフォルトの名無しさんNGNG
>>107
それ、どうしても異なるVMが直接ファイルを扱わなきゃ
いけないの?
0109デフォルトの名無しさんNGNG
今、swingの勉強中なのですが、
どうしてサンプルのソースはどれもJFrameを継承してるんでしょうか
継承しなくてもnew JFrameでいいように思えるのですが・・・
0110デフォルトの名無しさんNGNG
>>108
いやアプリの制限として「2 つ以上立ち上げんな」「ファイル共有すんな」
でも良いんだけど、Pure Java, no DB のプロセス間リソース問題って
これしかないよな、と思って意見を聞いてみたところ。

以前にも異なるコンテキストのサーブレットで同じような問題に
ぶち当たったし (そんときはあきらめて同一コンテキストにした)。
0111デフォルトの名無しさんNGNG
>>109
そうしたい人はそうすればいいです。
あれはこっちのクラス、これはこのクラス、あっクラス名間違えたとか延々やりたいのなら。
0112デフォルトの名無しさんNGNG
>>110
File.createNewFileはアトミックであることが仕様。
でもプロセス間のリソース共有するのにこれしかないか、
という話なら、RMI使うとか手段はあるんじゃない?
0113デフォルトの名無しさんNGNG
>>112
そうか RMI を忘れてたな。
でも今「お手軽 one JSP 掲示板!! ファイルコピーで 2ch 型掲示板立てまくり!!」
とかいうのに挑戦してるんだわ。該当ファイルが消えたら notify() されるような
都合の良い API なんて無かったよね。

いや、参考になりました。感謝です。
0114デフォルトの名無しさんNGNG
>>111
GUIの制約とかじゃないのね。スッキリしました、THX.
0115デフォルトの名無しさんNGNG
>>106
JTree.DynamicUtilTreeNodeつかいなされ。

>>113
そのファイルアクセス専用のちっちゃいサーバプロセス立ち上げるのが普通だよね。
RMIにするかソケットにするかは、好みの問題かなあ。どっちがいいんだろうね。

>>111
GUIコンポーネントを継承するなんて、オーバーライドしたいときでもない限り
めったにやらないぞ。機能をそのまま使うときは専ら所有して委譲+publicメソ
ッドでプロパティ変更。

素人ですか?
0116デフォルトの名無しさんNGNG
>106
それ、前に作った事ある。
俺も君の考えてるようにしたよ。
ディレクトリを示すノードにはダミーのノードを1個追加しといて、ハンドルを無理やり表示。
TreeExpansionEvent 拾ってダミー削除&ノード追加みたいな感じ。
JBuilder のファイルダイアログ?を目指してみた。

115氏の言う JTree.DynamicUtilTreeNode を使えばもっと簡単に出来るのかも。
てゆうか使い方がわからなかったんだよね・・・。
0117デフォルトの名無しさん(デコード?)NGNG
16進の文字コードを「文字」に変換するとき

char c = 0x301C;
System.out.println(c);

こんなかんじで文字が見れるのですが、

この16進の文字コードを文字に変換して、
Stringに格納するにはどうしたらよいのでしょうか?

char c = 0x301C;
String str = ?????(c);
0118デフォルトの名無しさんNGNG
javaでも覚えるか〜
0119デフォルトの名無しさんNGNG
>>117
String str = "\u301c";
or
char[] c = {0x301c};
String str = new String(c);
0120デフォルトの名無しさんNGNG
>>115
> GUIコンポーネントを継承するなんて、オーバーライドしたいときでもない限り
> めったにやらないぞ。

は〜
0121デフォルトの名無しさんNGNG
>>115
> GUIコンポーネントを継承するなんて、オーバーライドしたいときでもない限り
> めったにやらないぞ。

ぷ〜
0122デフォルトの名無しさんNGNG
>>121
どうやらあんたはVectorを継承してStackを作るバカと同レベルらしい。
0123デフォルトの名無しさんNGNG
120は問題なく 121は問題ありなのか・・・
0124デフォルトの名無しさんNGNG
>>122
ほもしろすぎ。しんで。
0125デフォルトの名無しさんNGNG
>>122
市ね場?
0126デフォルトの名無しさんNGNG
メインクラス(main関数のある)のあるディレクトリを取得する方法を教えて
0127デフォルトの名無しさんNGNG
>>126
.
0128デフォルトの名無しさんNGNG
>>126
クラスから実行するだけじゃないという問題は無視して?
0129デフォルトの名無しさんNGNG
(main関数のある)
0130デフォルトの名無しさんNGNG
ネタっぽいな。
0131デフォルトの名無しさんNGNG
釣られたのか・・・シュボーン
0132132NGNG
某サイトから情報を読んで、それを加工してファイルに記録したいのですが、
そういう場合は、情報をどこに読み込んでどこで加工するといいのでしょうか?

普通に変数に読み込んで編集してその内容をファイルに書くのですか?
なにか良い方法があったら教えて下さい。
0133デフォルトの名無しさんNGNG
>>132
お好きなように、としか。

URLクラス、Socketなどなどでとってきて
0134132NGNG
>>133
> お好きなように

どんな方法を使うのが一般的ですか?
0135デフォルトの名無しさんNGNG
>>133
> URLクラス、Socketなどなどでとってきて

>>133さんは、どういう意味でこれを書いたの?

0136デフォルトの名無しさんNGNG
>>133
なにか勘違いしてない?
0137デフォルトの名無しさんNGNG
スーパークラスのオーバーライドしたメソッドを呼ぶにはどうしたらいいのでしょうか。
0138デフォルトの名無しさんNGNG
>137
super.A()
0139デフォルトの名無しさんNGNG
>>137
super.method(); だがサブクラス以外から呼ぼうとしてもだめだよ。
0140デフォルトの名無しさんNGNG
Red Hat Linux 7.3でSwingを使ってダイアログを表示したら
日本語部分が文字化けするんだけどなんででしょうか。
0141デフォルトの名無しさんNGNG
>>138>>139
ありがとうございます。

もう一つお願いします。
C++のprotectedと同じアクセスレベルはないのでしょうか。
自クラスとサブクラスからのみ参照可能なアクセスレベルです。
■ このスレッドは過去ログ倉庫に格納されています