【初心者】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/
0666660
NGNG即レスありがとうございます。
ご指摘の通り、環境変数でtools.jarにCLASSPATHを通しましたが治りませんでした。
しかしtools.jarをMonitor Tomcatのダイアログで設定できる
CLASSPATHにtools.jarへのパスを追加したら治りました。
なぜ動かなかったのか原因不明ですが解決しました。
ありがとうございました。
0668デフォルトの名無しさん
NGNGJTreeなんて1日で理解できるし
すべてのツリーのパス取得とかもさくっとできる
なにより標準APIなので後から追う場合(特に業務なら他人が見ることも多いだろうから)わかりやすい
デメリットはあんまないな
0669デフォルトの名無しさん
NGNG「木構造」を扱うってだけの理由で使うのはアレだと思われ。
0670デフォルトの名無しさん
NGNG俺も初心者だけど・・・
JAVA Plug-in 1.4.2?JREのこと?
日本語入力できてるんだから、MS-IME入ってるんだよね?
「地域と言語のオプション」あると思うんだけどなあ。
そこにUnicode対応でないプログラムに使用する言語が設定できるから
そこを日本語にしてみてほしい。
あとはわかんないや。
0671デフォルトの名無しさん
NGNGほとんどの部分はJTreeそのものではないのでさほど問題にならない
TreeNodeとかTreePathとかな
モデルとビューが分離してるからこそ使いやすいというか
0672デフォルトの名無しさん
NGNG見つけられなかったんだろうと思いますが、
こちらに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デフォルトの名無しさん
NGNG0674デフォルトの名無しさん
NGNGただのつっこみです。
0675デフォルトの名無しさん
NGNGtry{
なんかの処理
}catch(-----Exception e){
System.out.println(place + "で" + e + "が投げられました");
}
みたいなのをやりたいんですが、place(場所を保持している)みたいなのを
実現するにはどのような方法がありますでしょうか?
探してみたんですが、ピンポイントの情報が見つかりませんでした。
どなたか教えてください。よろしくおねがいします。
0676デフォルトの名無しさん
NGNGclass X{
final public static int[] A = {0, 1, 2};
}
しかし、これって順番変えようと思えば変えられるんですね。
確実に変えられないようにするアイデアありますか。
0677デフォルトの名無しさん
NGNGe.getStackTrace() して getLineNumber() とか
0678デフォルトの名無しさん
NGNGViewと関係ないModelだけの話になるからGUIとは無関係と言い張れる。
0679675
NGNGStackTraceElementのメソッドを使えば、クラス名からメソッド名までなんでも
わかるんですね。APIのリファレンスみたらわかりました。
こりゃすごい。早速使ってみます。
0680デフォルトの名無しさん
NGNG記述通りにデータベースを登録してから実行したんですが、解説HPではデータベースに登録されていた名前とふりがなが表示されているのですが、
私のパソコンでは
SQLState: 28000
VendorError: 1045
と表示されます。
どなたか原因を教えてもらえないでしょうか?
0681デフォルトの名無しさん
NGNG0682デフォルトの名無しさん
NGNGJavaでは配列を不変にすることは無理。
対処法1.
メソッドにして毎回配列を返す。毎回配列をnewしてもいいし
内部でstaticに配列を持っておいて毎回cloneしてもいい。
対処法2.
リストで我慢する。リストならCollections.unmodifiableListで不変にできる。
5.0以降ならGenericsがあるんでリストで問題なかろう。
対処法3.
Enumで置き換えられないか検討する。
0683デフォルトの名無しさん
NGNGJavaではヘッダに相当する物がないので、
ソースファイルを丸ごと公開するしか無いのでしょうか?
0685デフォルトの名無しさん
NGNGありがとうございます。
実は、私の件では、よくよく考えるとPublicな定数にするまでもないことでした。
設計をよく見直してそれでも配列を定数にする必要があるか考えるようにするほうがよかった
0686デフォルトの名無しさん
NGNGのカウントダウンを置きたいのですが
調べてもその日付けまでのカウントダウンまでしか出てきません。
コードを貼っていただけないでしょうか。
0687デフォルトの名無しさん
NGNG0688デフォルトの名無しさん
NGNG0689デフォルトの名無しさん
NGNGこれはつまりVectorのインスタンスに2スレッドが同時にアクセスすることは無いが
ArrayListのインスタンスには2スレッドが同時にアクセスし得る、ということですか?
Vectorクラスのインスタンスメソッドには全部synchronized修飾子が付いてるけど
ArrayListはそうじゃないからsynchronized(arrayList){}でくくれってことですか?
0690デフォルトの名無しさん
NGNGいいサンプル、またはアイデアがあったら教えてください。
ぐぐって1つ出てきたんですが、キャッシュにも残ってないし。
そのPERT図をPNGなどの画像に出力する方法もできれば・・・
0691デフォルトの名無しさん
NGNGVectorもスレッドセーフじゃないから安心してArrayListを使え。
Vectorがスレッドセーフだと言ってる奴はただの馬鹿
0692デフォルトの名無しさん
NGNGコレクション操作が複数のスレッドから同時にアクセスされたら
おかしくなるのは当たり前
そういうことがないのが前提でもマルチスレッドだとArrayListは
同期化のコードがないと動作が保障されない
この差がVectorがスレッドセーフといってる部分だと思う
スレッドが異なれば変数の内容も異なる
SwingでVectorを多用しているのも別スレッドからのアクセスの容易さ
というのが多少は関係しているかと
Swingはスレッドが必ず作られて動くわけで
実際はSwingは1.1のオプションだったからというのが原因だと思うけどな
0695691
NGNG>コレクション操作が複数のスレッドから同時にアクセスされたらおかしくなるのは当たり前
そんなものを「スレッドセーフ」と呼ぶのは詐欺以外の何者でもない。
java.util.Vector
>Vector is synchronized.
java.util.regex.Pattern
>Instances of this class are immutable and are safe for use by multiple concurrent threads.
この違いは大きい
0696デフォルトの名無しさん
NGNGおかしくなるというのはよくロック周りの話で、残高照会して実際に引き出す処理
と順次処理を排他制御せずに使用すると崩れるという意味ではないかな。
実際Vectorは同時にアクセスしてもそれぞれのメソッドでおかしくなることはない。
スレッドによる変数の不一致の同期化と排他制御という根本的にはまったく別の機構が
ともにsynchronizedという文を使うから紛らわしいのでは。
0697デフォルトの名無しさん
NGNGただ、実際に使う場合にはもっと大きな範囲で排他をかけないといけない、
というだけで。
0698デフォルトの名無しさん
NGNG>696 「スレッドによる変数の不一致の同期化」と「排他制御」
なにやら2つの問題が絡んでいるんですね・・・
Vectorは「同時アクセス禁止」=「排他制御」だけサポートしていて
「同期化」はサポートしておらず、
ArrayListはどちらも自分でやらなければならない・・・ということかな・・・
違いがいまいちわからない俺はあの質問をするには幼すぎたようです
ありがとうございました
0699デフォルトの名無しさん
NGNG>「同期化」はサポートしておらず、
あ、逆か・・・?
0700デフォルトの名無しさん
NGNG0701デフォルトの名無しさん
NGNGその質問には意味がある。一番簡単な答えは
・Vectorはスレッドセーフではない。
・だから複数スレッドで共有されるVectorに対するひとまとまりの操作はsyncronizedブロックで囲まなければならない。
・それならArrayListを使っても同じ。Vectorを使う意味は無い。
もっと詳しく知りたい場合はここがよくまとまってる。
http://www-6.ibm.com/jp/developerworks/java/040409/j_j-jtp09263.html
個人的に一番重要だと思うのはここの部分
>明確なドキュメントが無いと、読み手はクラスのスレッド・セーフに関して誤った推測をしてしまうかもしれないのです。
>つまり、読み手はスレッド・セーフではないのにスレッド・セーフであると推測するかもしれませんし(これはかなりまずいことです!)
0702デフォルトの名無しさん
NGNGVectorだとちゃんとaddしたぶん足されるが
ArrayListだとaddしたはずのものがされないことがある
ってことだ。
0703デフォルトの名無しさん
NGNG安全なのはadd(Object)だけでadd(int,Object)もremoveもsetもgetも安全ではないよ
0704デフォルトの名無しさん
NGNGソース読んだことある?
0705703
NGNGちょっと言葉が足りなかった。
「ArrayIndexOutOfBoundsExceptionの発生を避ける方法が無い」ことも
「安全ではない」ことにする。
0706703
NGNG0707デフォルトの名無しさん
NGNG0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG0710デフォルトの名無しさん
NGNG0711デフォルトの名無しさん
NGNGウスターシャ風ソースではないと思われ。
0712デフォルトの名無しさん
NGNG0713デフォルトの名無しさん
NGNG0714デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNG0717r
NGNGもはや有効でないかもしれない、って事か。
なるほどね
0718デフォルトの名無しさん
NGNGどちらも正しい意見なんだよ
まぁSwingがArrayListだったらスレッド理解してないやつが苦しむと思うので
あれはあれでいいし、ひとつのListに同時に書き込むことがななく、
複数のスレッドから参照だけされることが保障できれば別に使おうがいいんじゃね?
同じ問題がStringBuilderとStringBufferでもあるが、VectorやStringBufferは
必ずだめということにはならないわけさ
どのみち理解しないままマルチスレッドで動かせばはまるのは一緒だが
0719デフォルトの名無しさん
NGNG>どちらも正しい意見なんだよ
そりゃ言葉の定義の仕方によってはそういう見方もできる。
>>701を読んで、「完全なスレッドセーフでない」ものを「スレッドセーフである」と勘違いして
使うことがどれだけ危険か考えれ。
それが理解できれば「このクラスのインスタンスはスレッドセーフである」なんて
そう軽々しくは言えないはず。
0720デフォルトの名無しさん
NGNGPrintService[] services, PrintService defaultService,
DocFlavor flavor, PrintRequestAttributeSet attributes)
のflavorにDocFlavor flavor = DocFlavor.STRING.TEXT_PLAIN;
したのをいれるとダイアログが表示されないんですけど何故でしょう?
0721720
NGNG0722
NGNG行う方法ってありますか?
0723デフォルトの名無しさん
NGNG> プロパティファイルをUnicodeではなく、sjisコードで読み込み、出力を
ttp://d.hatena.ne.jp/zwfk/20041020#1098262200
0724デフォルトの名無しさん
NGNGjavaからmysqlに文字列を登録したいのですが、プログラム中で文字列を指定するやり方しかわかりません。
下記プログラムで、String型のhakoに、文字列をいれ、
それを登録したいのですが、これだと+hako+と登録されてしまいます。
String hako;
hako="suzuki";
String sql_str = "INSERT INTO list (name,memo) VALUES (\'+hako+\',\'2nd tryial\')";
どうしたらいいのかどなたか教えていただけませんか?
0725デフォルトの名無しさん
NGNGString memo = "2nd tryial";
String sql_str = "INSERT INTO list (name,memo) VALUES (?, ?)";
PreparedStatement ps = conn.prepareStatement(sql_str);
ps.setString(1, name);
ps.setString(2, memo);
ps.executeUpdate();
0726デフォルトの名無しさん
NGNG> String hako;
> hako="suzuki";
> String sql_str = "INSERT INTO list (name,memo) VALUES (\'+hako+\',\'2nd tryial\')";
> どうしたらいいのかどなたか教えていただけませんか?
String sql_str = "INSERT INTO list (name,memo) VALUES (\'"+hako+"\',\'2nd tryial\')";
0727724
NGNG回答ありがとうございます。
教えていただいたものに変換したら
java.sql.SQLException: Access denied for user:'root@localhost'(Using password: YES)
というエラーが出るようになってしまいました。
原因分かりますでしょうか??ユーザがrootでこのエラーが出たのは初めてで...
0728724
NGNGほんとですか!?そんな簡単なことで...
>>725
>727に書いたエラーはプログラムのせいではないみたいですね...失礼しました。
なぜかいきなり出来なくなってしまった...
0729デフォルトの名無しさん
NGNG0731デフォルトの名無しさん
NGNGJAVAはネットワーク周りの制御に優れていると聞いたのですが、
学ぶべきでしょうか?
JAVAはAIにいいと聞くのですが、実際のところ如何でしょうか。
ロボットのAIはJAVAで書かれる事はありますか?
0732デフォルトの名無しさん
NGNG使ったことないけどPrologじゃないの?
0733デフォルトの名無しさん
NGNGPrologがAI向きだなんていつの時代の話だよ・・・
0734デフォルトの名無しさん
NGNG0735デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNGOS上で単独実行では窓が開きません。ただ、強制終了ではなくタスクマネージャを見るとプロセスには載っています。
考えられる原因はあるでしょうか?
0737デフォルトの名無しさん
NGNGパネルorフレームの初期化でまずってるのでしょうか。。
0738デフォルトの名無しさん
NGNGGraphics2D.setFontとdrawStringで文字を描くのですが
そのままフォントをい11ポイント等にしても非常に小さく描画されてしまいます
これをdrawStringが任意のDPIで文字を描けるようにしたいのです
AffineTransform.setToScaleでdrawStringのDPIを拡大できるのは分かったのですが
元のDPIの分からず倍率も指定できないので手詰っています
何かやり方ないでしょうか?
0739デフォルトの名無しさん
NGNG0740738
NGNGGraphics2Dはデフォが72DPIらしいのでとりあえずはイケそうです
0741デフォルトの名無しさん
NGNGその部分の背景色が変わりません。
しかし、マウスドラッグで選択するアクション(JTextPaneに始めからついてる
アクション)だと背景色が変わります。
そして、その後だとselect()で背景色が変わるのです。
最初からselectで背景色が変わるようにするにはどうすればいいのでしょうか?
0742デフォルトの名無しさん
NGNG//ヘッダー部書き出し
PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(response.getOutputStream(),"Shift_JIS")));
response.setContentType("application/octet-stream-Dummy;charset=Shift_JIS");
response.setHeader("Content-Disposition","inline;filename=excep.csv");
out.write("タイトル" + "," + "<script>");
上記のように文字列にタグが含まれていると上手くcsvとして開きません。
PrintWriterを使ってタグを文字列として出力することはできないのでしょうか?
よろしくお願いします。
0743デフォルトの名無しさん
NGNGINFO だけだといざ ERROR が出たとき情報不足。
そこで、DEBUG などのログを出力せずにキューに溜めておき、
ERROR が出たときに、さかのぼって過去のログも吐けるようなシステム無いでしょうか?
作ろうかと思いましたが、誰かはもう作ってそうな気がして。
0745デフォルトの名無しさん
NGNGJava2D勉強して自前で描画・・・のほうが楽かも
Swingならレイヤー勉強してみそ
0746690
NGNGレイヤー、マターリ調べてみます。
0747デフォルトの名無しさん
NGNGそりゃ、stable,unstableの話を勘違いしてるんだろうな。
新解釈に( ̄ー ̄)ニヤリ
0748デフォルトの名無しさん
NGNGSwingどうのこうのよりも、各ノードの位置決めのアルゴリズムの方が面倒なんじゃないかなぁ?
とりあえず、図に使うコンポーネント単位でJComponent派生して独自コンポーネント作っておいて
論理的に作図(配置レイアウト)しておいてそれをドカっと書いて(置いて)いくようにすれば
いいんでないの?それとデータモデルとレイアウトは分けておいたほうがいいな。
という一般的なことしか言えんですなぁ・・・
ちょっと問題が大きすぎてばくぜんとしか答えられない。
0749690
NGNGどうもありがとうございます。
各ノードに前のノードNOと後に続くノードNOを保持させる予定です。
Tree構造も考えたんですが、PERT図だと複数の親を持つこともあるのでだめ。
GUIは初めてなのであたふたしています。
シミュレーションをしようと思って、ついでだから図も出力できたらいいなと思って質問しました。
その前に風邪を治さないと。あわわわ。
0750デフォルトの名無しさん
NGNGぐぐれば、CSVのライブラリいろいろ見つかるけど、定番、っていうのはどれですか?
0751デフォルトの名無しさん
NGNG実は私も同じように、Javaでグラフ(XYグラフではなく、グラフ理論のグラフ)、
特に有向非巡回グラフを描画する方法について調べていたところで
そのためにいろいろとライブラリを漁っていました。
今のところ見つかったのは以下のとおりです。
・OpenJGraph
http://openjgraph.sourceforge.net/
Swingベースのライブラリ。APIが非常にシンプルで、導入しやすい。
ノードのレイアウトやファイル(XML形式)への出力なども提供されている。
UIのカスタマイズ(ポップアップメニューなど)ができないのが問題。
ソースを修正すればできますが、ライセンスがLGPLなので・・・。
あと、開発が2年ほど止まっています。
・GEF
http://gef.tigris.org/
これもSwingベースのライブラリ。EclipseのGEFとは別物なので注意。
非常に多機能ですが、APIが複雑で、まだ使いこなせていません(;つд`)。
UMLツールのArgoUMLが、これを使っています。
他の方が言うように自前でjava2d使って書いてもいいですが、
>>748の指摘のとおりノードの位置決めが面倒なので、
こういった既存のライブラリを使った方が楽だと思います。
他に、こういったライブラリをご存知の方がいたら、教えてもらえると助かります。
0752デフォルトの名無しさん
NGNGDBはMySQL 4.1.7です
select文を実行し、列の型がBLOBの時、次のように文字化けします
???????????????????EXCEL????????????
日本語文字列が入っているのですが、半角は正しく表示されているようです
コードは下のようにしてます
コメントアウトしたほうでも、同じ結果でした
case Types.BLOB:
/*
String itext;
BufferedReader br = new BufferedReader(new InputStreamReader(rs.getBlob(i).getBinaryStream(), "EUC_JP"));
while ((itext=br.readLine()) != null){
System.out.println(itext);
}
*/
byte[] b=new byte[1024];
InputStream is=rs.getBlob(i).getBinaryStream();
while(is.read(b) != 0){
System.out.write(b, 0, b.length);
}
どうすれば、正しく表示されるようになりますか?
0753デフォルトの名無しさん
NGNGhttp://www.google.com/search?hl=ja&q=Java+MySQL+JDBC+%E6%97%A5%E6%9C%AC%E8%AA%9E+%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91&lr=lang_ja
0754デフォルトの名無しさん
NGNGGraphics g,
Font f,
String str,
int x,
int y,
int width) {
int len = str.length();
char[] data = new char[len];
str.getChars(0, len, data, 0);
int fontHeight = f.getHeight();
int startIdx = 0;
int endIdx = 0;
while (len > 0) {
endIdx = f.getLineBreak(str, startIdx, len, width);
g.drawChars(data, x, y, startIdx, endIdx - startIdx);
y = y + fontHeight;
len = len - (endIdx - startIdx);
startIdx = endIdx;
}
}
渡したString str を改行含めて表現するにはどうしたらよいでしょうか?
0755デフォルトの名無しさん
NGNGそのBLOBのところには本当に文字が"euc-jp"で入っているのか?
DBの文字コードとは関係ないぞ。
0756752
NGNGDBの文字コードはEUCですが、明日確認して見ます。
今、環境がないので。
でもperl CGIでWEBに出力するときはEUCになっているので、多分EUCだと思います。
あと、問題解決とは関係ないですが、writeする長さをis.read()の戻り値にしないとダメですね。
753のググルは見たけど、解決の手がかりは見つかりませんでした。
0757デフォルトの名無しさん
NGNGeuc-jpとsjisとjisとutf-8とutf-16beとutf-16leで試して全部だめだったら
DBに入れる時点で化けてるからあきらめれ。
あとReaderで包まずに、InputStreamから1byteずつ取り出して除いたらどうなってるかわかるだろ。
0758デフォルトの名無しさん
NGNG多次元配列に配列から配列へ要素を代入することはできますか。
0759デフォルトの名無しさん
NGNGループのネスト、隠し味にSystem.arraycopy()を使えばお望み通りに。
0761デフォルトの名無しさん
NGNG個人的に「AWT/Swing コンポーネントクラス階層図」っての作ったのね。
だけどそこには堂々とネットで拾ってきた Duke の画像が入ってる。
やっぱりこのまま公開するのってまずい? 侵害?
0762デフォルトの名無しさん
NGNGBufferedImageへの描画自体にはDPI関係ないような...
>>741
repaint();がいるんじゃないだろうか、とか
>>742
見たことないMIME型だけど、あやしくない?
あとIEはMIME型無視して自動判定とかするんじゃなかったっけ
0763デフォルトの名無しさん
NGNGMySQL4.1は日本語周りがかなりやばい
JDBCでも同じで、今のままのドライバとかだと
executeUpdateとexecuteQueryとでnamesとcharactersetをかえないといけないようだ
4.0にもどせばすんなりいくかと
0764デフォルトの名無しさん
NGNGよく読め。BLOBだぞ
0765デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています