【初心者】Java質問・相談スレッド53【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
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質問・相談スレ52【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1093267533/
/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
0232デフォルトの名無しさん
NGNG○バイトコード
0233デフォルトの名無しさん
NGNGそのファイルをクラス階層に置くべきか否かで指針となるものってありますか?
0234デフォルトの名無しさん
NGNG環境に依存する情報は、クラス階層におくべきではない。
0235デフォルトの名無しさん
NGNGメソッドー ○
0236デフォルトの名無しさん
NGNGリソースにするのなら、クラスパスが通るところに置くべきだし。
0237デフォルトの名無しさん
NGNG○バイトコドー
0238デフォルトの名無しさん
NGNGDBの接続情報なんかをリソースにするのはいかんだろ。
クラスパスが通るところというのは、環境依存しない情報しかおくべきではないだろう。
たとえば、メッセージリソースとかな。
0239デフォルトの名無しさん
NGNG>実行中の生バイトーコードをVMから得るメソッド
Debugger Interfaceとか。
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/jpda/jvmdi-spec.html#GetBytecodes
>与えて実行させるメソッド
メソッドだけではバイトコードとしては存在できないので
適当なクラスを作ってそれのメソッドとする。
動的にクラスを作るライブラリとしてはBCELとかjavassistとか。
0240デフォルトの名無しさん
NGNGじゃあ、クラスパス通らないところにおいて、絶対パスでファイル読み込みか?
そのほうが良くないだろ。
メッセージリソースも、ロケールという環境に依存するわけだが。
クラスパスが通るところ、つまりリソースにしないとして、設定ファイルはどこに置くんだ?
レジストリ?大げさだな。
0241デフォルトの名無しさん
NGNG> 実行中の生バイトーコードをVMから得るメソッド、
Class#getResourceAsStream()
>与えて実行させるメソッドってのがないかな?って思ってる
Classオブジェクトが得られれば後はどうにでもできる。
動的に「バイトコードを作る」のなら>>239
リフレクションについてもっと調べてから出直してこい。
君に、ある程度の知識と説明能力が無けりゃ何がやりたいのかこっちがが理解できん。
0242デフォルトの名無しさん
NGNGメッセージリソースはクラス階層に置き、
環境依存パラメータは絶対パスでファイル読みということだ。
どっちもリソースにしてしまうと、複数環境へ配布するときに煩雑になるぞ。
0243デフォルトの名無しさん
NGNG1行おき、やめれ。
0244デフォルトの名無しさん
NGNGクラス階層って何だ?
たとえばclassesディレクトリ直下とかいう意味?
0245デフォルトの名無しさん
NGNGじゃあその絶対パスはソース直書きか?
さらに複数環境に対応できんな。
複数環境に配布するからこそ、クラスパスだと思うのだが。
0246デフォルトの名無しさん
NGNGおまえはクラスパスとリソースについて、勉強しなおす必要があるな。
0247デフォルトの名無しさん
NGNGたとえば servlet.getServletContext().getRealPath("hoge") みたいに
0248デフォルトの名無しさん
NGNGWebではないアプリケーションはどうするんだ?
そんなんWebの場合はコンテナの設定ファイルが使えるから、設定ファイルの話ははっきりいって関係なかろう。
Tomcatであればデータベースの設定なんかcontext.xmlにJNDIリソース登録するわけだし。
0249デフォルトの名無しさん
NGNG環境依存パラメータを記述したファイルを-Dオプションで絶対パス指定するのかも知れない。
0250デフォルトの名無しさん
NGNG実行時パラメータで渡すのが吉。
複数環境ということは、当然DBの接続情報も変わるわけだが、
クラス階層にあるリソースファイルを環境単位に用意するのは、
気持ち悪いでしょ?
>>247
サーブレットなら、それでもいいね。
0251デフォルトの名無しさん
NGNG0252デフォルトの名無しさん
NGNGやはり、実行時パラメータで渡すだろう。
そのためのバッチファイル&シェルを用意すると。
0253デフォルトの名無しさん
NGNG> クラス階層にあるリソースファイルを環境単位に用意するのは、 気持ち悪いでしょ?
なんで?
ファイルを作ることには変わりないし。
クラスパスにリソース置けばすむのに、実行時パラメータ使うのもアホらしいだろ。
っていうか、クラス階層ってなによ。クラスパスが通ったところ以外の意味があるのか?
0254デフォルトの名無しさん
NGNG文脈が読み取れないらしいな。
0255デフォルトの名無しさん
NGNG実行可能JARと同じディレクトリに置くようにしとけば十分だろが。
0256デフォルトの名無しさん
NGNGいや、クラスパスやリソースについてわかってなさそうだぞ。
0257デフォルトの名無しさん
NGNG起動してからは書き換えられないファイル。
0258デフォルトの名無しさん
NGNGラクかどうかの問題を言っているのではない。
クラスの外にリソースとして分けて記述したところで、
それは形式が変わっただけで、本質的には変わったわけではない。
そう感じるのだ。
「クラスパスが通ったところ」をなんというんだ?
0259デフォルトの名無しさん
NGNGそう。
0260デフォルトの名無しさん
NGNGというか、Webの場合に環境依存パラメータを、そうやってコンテキストルート以下のファイルに置くのもやっかいだ。
Webの場合の環境依存パラメータはcontext.xmlに書け。
0261デフォルトの名無しさん
NGNGそれは、無名パッケージで置くということだが、
クラスと同じ場所にあるという点で、何も変わらないのだが。。
0262デフォルトの名無しさん
NGNGそれであれば、クラスパスの通ったところにプロパティファイルを置くようにするのがまっとう。
なんでわざわざクラスパスが通らないところにファイル置いて、実行時パラメータでパス指定する必要があるんだか。
それにそれが本質的に変わるとは思わないんだが。
実際の用語としては「クラスパスが通ったところ」をクラスパスというのだけどね。
0263デフォルトの名無しさん
NGNGなんならディレクトリ作ればいいだろ。
何を変える必要があるんだ?
0264デフォルトの名無しさん
NGNGwebなら、コンテナがあるので、そっちに任せるというのには、賛成。
では、通常のJavaアプリではどうする?
0265デフォルトの名無しさん
NGNG実行ファイルであるappli.jarと環境設定ファイルであるconfig.propertiesを同じディレクトリに置くことにどんな不都合があるのか説明きぼんぬ。
そこがわからないためにここまでの食い違いが生じてる。
config.propertiesをどこかヨソに置いて、ソース埋め込みにしろVMパラメータにしろ、絶対パスで指定することの利点と比較してね。
0266デフォルトの名無しさん
NGNGクラスパス上にあるモノは「いったん書いたらどこでも動く」べきでは?
というのが発端。
なので、環境依存情報は、クラスパス外にあるべきでは?と思ったわけだ。
0267デフォルトの名無しさん
NGNG実行jarと同じディレクトリにファイル置く。
もちろん実行jarを置いたディレクトリにクラスパスが通るように、マニフェストを記述。
0268デフォルトの名無しさん
NGNGいい着眼点だ。
最近の若い奴らは、メッセージも環境情報も同じファイルにかきやがる。
0269デフォルトの名無しさん
NGNG> クラスパス上にあるモノは「いったん書いたらどこでも動く」べきでは?
そんな「べき」はない。
どうしても環境依存するクラスを(そんなんあるなら)、環境ごとのjarにして、環境ごとに配布というのも否定するものではない。
たとえばiアプリのようなリソースの限定された環境。
JNIで環境ごとの差をネイティブライブラリに閉じることができなかった場合など。
0270デフォルトの名無しさん
NGNG環境依存パスをクラスパスで吸収して、パス文字列の環境依存もリソースローダーで吸収させるのが目的なんだから、環境設定ファイルはリソースにするべき。
そのためのリソース。
0271デフォルトの名無しさん
NGNGでも、少なくとも、上位アプリケーションのレベルでは、
それを目指すべきだと思うが。
0272デフォルトの名無しさん
NGNGクラスパスに環境依存情報置くなって?
そんなもの目指さなくていい。
なんのメリットがあるんだ?
0273デフォルトの名無しさん
NGNGとりあえず>>265に答えてくれ。
0274デフォルトの名無しさん
NGNGパス文字列の形式は吸収できるが、内容は吸収できない。
内容が語異なる場合の理由になっていませんね。
0275デフォルトの名無しさん
NGNGもちろん、環境ごとにクラスを置き換えというのは、可能な限り避けるべきだ。
0276デフォルトの名無しさん
NGNGだから別ファイルにしておけばいいだろ。
0277デフォルトの名無しさん
NGNGで、>>267のようにした場合にどんな不都合があるんだ?
0278デフォルトの名無しさん
NGNG不都合とかメリットとかの話をしているわけではないのだが。。
本来の使い方になってるの?ということ。
0279デフォルトの名無しさん
NGNGあーたのしい。
0280デフォルトの名無しさん
NGNGシンボルを…と出て使えないのはなぜですか。
本のサンプルプログラムまんまなのにどこがおかしいんだか…。
0281デフォルトの名無しさん
NGNGお前が検索もできない無能だからですよ
0282デフォルトの名無しさん
NGNG不具合でもあるってことですか、検索できないからだっていうのは。
このスレ、どこが初心者歓迎なんだか。
0283デフォルトの名無しさん
NGNGここはJava初心者スレであって、PC初心者やインターネット初心者はスレ違い・板違いです
0284デフォルトの名無しさん
NGNG>ここはJava初心者スレであって、PC初心者やインターネット初心者はスレ違い・板違いです
それ次からテンプレに加えようぜ。
0285デフォルトの名無しさん
NGNGもちっとPCやJavaを勉強する前に日本語を勉強したら?(プ
0286デフォルトの名無しさん
NGNGという疑問は、いまだ解消されず。。
クラスパスってコーディング時に静的な情報をおいておくところでなかったけ?
クラス定義とか。メッセージとか。
配布時に動的に変わるものがあっていいの?
ふつう、君たちがダウンロードしてくる、他のプロダクトって、クラスパスの外部に設定だ居るあるでしょ?
それに疑問を持ったことないの?
0287デフォルトの名無しさん
NGNG意味不明なのは、お前が無能だからですよ
0288デフォルトの名無しさん
NGNG×クラスパスの外部に設定だ居るあるでしょ?
○クラスパスの外部に設定ファイルあるでしょ?
0289デフォルトの名無しさん
NGNGこの質問から読みとれるのは、お前が釣りだと言うことだけだ。
0291280
NGNGはぁ…
やっぱり本にバグがあるとしか思えませんね
0292デフォルトの名無しさん
NGNGクラスパスの外部に設定ガイル居るでしょ?
0293デフォルトの名無しさん
NGNG面白いけど居ません。
0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNGプロパティで与えた場所から読むようにすれば問題なし。
なんでもそうやってるだろ?
JAVA_HOME
CATALINA_HOME
ANT_HOME
...
Eclipseも暗黙で同じことをやってるよ
0296デフォルトの名無しさん
NGNGちょうど今出かけようと財布を見たら、ちょうど280円だったorz
0297デフォルトの名無しさん
NGNGじゃ、財布に「100万円入っています。開けてはいけません。」
っていう封印シール張っておくことをお薦めする。
0298デフォルトの名無しさん
NGNG>>241
またまたありがとうございます。
自分は、処理を分散するために、VMに処理能力共有機能をインプリメント
できないかなって考えていて、そのための実現方法を探していたんです。
まだまだ、知識もないので無茶かもしれませんが、がんばってみます。
0299デフォルトの名無しさん
NGNG与え方の議論ではないのだが。。
0300デフォルトの名無しさん
NGNGもしネットワークを通じた処理能力分散などに興味があれば
JXTAなどについて調べてみるのも面白いかもね。
0301デフォルトの名無しさん
NGNGスクロールペインにパネルを組み込んだのですが、
スクロール処理がされません。
スクロールバーは表示されるのですが、・・・
//jpanel
setBackground(Color.CYAN);
setSize(1000,1000);
setLayout(null);
//jpanel main
jpMain = new JPanel();
//jpMain.setLocation(0,0);
jpMain.setSize(1000,1000);
jpMain.setLayout(null);
jpMain.setBackground(Color.YELLOW);
//jscrollpane
jSP = new JScrollPane(jpMain);
jSP.setBounds(5,5,400,300);
jSP.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
jSP.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
jSP.setViewportView(jpMain);
add(jSP);
0302デフォルトの名無しさん
NGNG> 配布時に動的に変わるものがあっていいの?
問題なし。
> クラスパスってコーディング時に静的な情報をおいておくところでなかったけ?
違う。
どこからそんな定義が出てくるんだ?
> メッセージとか。
メッセージはロケールによって変わる。
あとからメッセージリソース追加すれば、そのメッセージリソースが使われる。
環境ごとに違う。
0303デフォルトの名無しさん
NGNG「クラスパスってコーディング時に静的な情報をおいておくところ」
という認識が誤りという結論で。
0304デフォルトの名無しさん
NGNG> クラスパスの外部に設定ファイルあるでしょ?
そんなのどうやって判断するんだ?
0305デフォルトの名無しさん
NGNGメッセージはロケールによって異なるというのと、
ここでいう環境ごとに違うというのとは違う。
複数ロケールのメッセージを提供する場合、
配布時は静的であって、どのロケールのメッセージが使用されるかは、
実行時に動的に決まる。
ここで問題としたいのは、配布時に動的な情報のこと。
0306デフォルトの名無しさん
NGNG開発時に使えばわかるでしょ?
0307デフォルトの名無しさん
NGNG0308デフォルトの名無しさん
NGNGだから、あとから*_ja.propertiesを追加するのは「配布時は静的」というのと違うと思うんだが。
環境によって異なる情報をクラスパス上のファイルに記述することには全く問題ないが。
ライブラリのバージョンも変わることがあるわけだし、たとえばログみたいにクラスパス上にあるライブラリによって挙動が変わるものもあるわけだし。
0309デフォルトの名無しさん
NGNGここではユーザー設定ではなくて、環境依存パラメータの設定の話。
0310デフォルトの名無しさん
NGNGEclipseなりNetBeansなりが、実行時にどこにクラスパスが通ってるか簡単に把握できるか?
0311デフォルトの名無しさん
NGNG単純な実行可能JARでも、解凍しないとどこにクラスパスが通るかわからんが。
0312デフォルトの名無しさん
NGNGそれは、配布し直していることと同じでしょうが。
自分で修正して、自分に配布しただけのこと。
0313デフォルトの名無しさん
NGNGは?
0314デフォルトの名無しさん
NGNGエクリプスは実行時のその手の情報を表示できるよ
0315デフォルトの名無しさん
NGNG0316デフォルトの名無しさん
NGNGたとえばデータベースの接続先。
0317デフォルトの名無しさん
NGNGたとえば、DBの接続情報、他システム連携情報、ロギング設定など。
0318デフォルトの名無しさん
NGNGクラスパスに入ってる必要全くないと思うけど
0319デフォルトの名無しさん
NGNGそれより、クラスパスが通らないところにおいて、リソースの仕組みを使わずにファイルとして読み込むべきだと。
そんなバカな。
0320デフォルトの名無しさん
NGNGむしろ、わざわざリソースを使わずに取得する必要がまったくない。
0321デフォルトの名無しさん
NGNG0322デフォルトの名無しさん
NGNGリソースでないものにリソースの仕組みを使っているというところが気持ち悪い。
使えるからといって使うのが妥当ということにはならない。
だから、誰かが指摘していたが、環境設定情報とメッセージを同一ファイルに安易に
書いてしまう輩が出没したりする。
0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNGそんなお手軽プログラムなら、リソースだとか環境設定ファイルがどうこうなど考えなくてよい。
きちんと考えるなら、どうあるべきかという話をしている。
0325デフォルトの名無しさん
NGNG0326デフォルトの名無しさん
NGNGJava3Dでアニメーションを作成していて
一定時間毎に座標を指定して移動させたいのです。
Threadをたてたのはいいのですが、
repaint()の代わりになる上書き命令をどのようにすればいいのかがわかりません。
いい方法はないでしょうか?
0327デフォルトの名無しさん
NGNGお手軽な設定方法がそうだということでは?と解釈しているが。
0328デフォルトの名無しさん
NGNGTimerつかってみそ。
0329デフォルトの名無しさん
NGNGだからといって、ここでわめいてるやつがいうように、クラスパスにそういう情報を記述してはいけないのだとしたら、悪いデフォルトだということになるね。
クラスパスに設定情報を記述してはいけない、というのは、どこからくるんだか。
0330デフォルトの名無しさん
NGNG0331デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています