ネタ心者歓迎!今更ながらにJava相談室 その4
■ このスレッドは過去ログ倉庫に格納されています
00011
NGNG|| ̄ ̄| ∧_∧
||Java| ( ) ∧∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
||__| ( ○ ) ( ) < 俺達の旅はここから始まる。
|| │ | │ / | \___________
((二二)) .(_(__)〜(___ノ
( ゚Д゚) < カキコする前に>>2-10をチェックしとけゴルァ!!
>>2 過去スレの一覧
>>3 Javaの基礎と よくある質問 (初心者はここをチェック!)
>>4 Java関連スレいろいろ
>>5 Javaを撲滅させたい方、死滅を心配してる方、Cとの違いを知りたい方はこちらへ
* 諸般の事情により、リンクがずれる事もあります。
0102
NGNG010329
NGNGちなみにソース。適当です。
import java.awt.*;
public class app{
public static void main(String args[]){
app1 a = new app1("TITLE");
a.setSize(500,500);
a.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}});
a.show();
}
}
class app1 extends Frame{
Label label;
app1(String title){
super(title);
setLayout(new FlowLayout());
label1 = new Label("aa");
add(label1);}
}
010429
NGNGあとeventもimportしてないし(^^;
0105
NGNG>>104の修正をすれば
jarのダブルクリックで起動できたけどね。
とりあえず、トラブルの再現方法を克明且つ正確に書いてみなよ。
010629
NGNGじゃぁ書く。
>>103-104のファイルを用意。
Main-Class:appと空行の2行のファイルaiueoを用意。
そのファイルを同じフォルダに入れる。
jar cvfm app.jar aiueo *.class
を実行し、Wクリック。何も起こらない。
jar -xf app.jarを実行。
Manifest-Version: 1.0
Main-Class: app
Created-By: 1.3.1 (Sun Microsystems Inc.)
こういう風になってます。
WクリックしてもCould not find main class..(うろ覚え)さえ出ない。
#Ctrl+Alt+Deleteやってみるとjavawが待機してるではありませんか…
#これは開かれるはずだったやつだと思うけど関係ない?
0107
NGNGそれで動くはずだけどね。
ちなみに、
java app と普通にコマンド入力して起動するの?
あと関係無いけど、クラス名の先頭文字は大文字にしなよ。
Javaの慣例だから。
0108デフォルトの名無しさん
NGNGjarからの起動は今までやったこと無かったので勉強がてらやってみたけど出来たぞ。。
以下手順。
1.下のソース(App.java)を作成してコンパイル。
2.Main-Class: appと記述して改行しただけのファイルaiueoを作成。
3.jar cvfm App.jar aiueo *.class を実行
4.App.jarをWクリック→フレームが起動→(゚д゚)ウマー
-------App.java---------
import java.awt.*;
import java.awt.event.*;
public class App {
public static void main(String args[]){
App1 a = new App1("TITLE");
a.setSize(500,500);
a.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);}});
a.show();
}
}
class App1 extends Frame {
Label label1;
App1(String title) {
super(title);
setLayout(new FlowLayout());
label1 = new Label("aa");
add(label1);
}
}
-------App.java ここまで---------
0109デフォルトの名無しさん
NGNGMain-Class:app
とかいてあるけど
Main-Class: app
では?
0110109
NGNG0111デフォルトの名無しさん
NGNGダブルクリック起動だと例外発生してもどこにも何も
表示されないから、コンソールから起動トライしてみそ。
java -jar app.jar
011229
NGNG0113デフォルトの名無しさん
NGNG<target name="apidocs" depends="compile">
<mkdir dir="${apidocs.dir}"/>
<javadoc sourcepath="${src.dir}" destdir="${apidocs.dir}"
link="http://java.sun.com/products/jdk/1.3/docs/api"
Locale="en_US"
packagenames="${package_name}" />
</target>
というふうに Locale を指定しても、相も変わらず日本語が混じった javadoc
が出力されます。
これってバグ?
ちなみに、私の環境は windows98 + cygwin でございます。
`javadoc\
-locale en_US\
-link http://java.sun.com/products/jdk/1.3/docs/api\
-sourcepath ../../src/ com.narucy.util`
とすると、英語で出力されます。
(ただし、Locale オプションを最期に指定するとダメだったりしますが・・・)
0114デフォルトの名無しさん
NGNGAnt使ったことないけど、"L"ocaleじゃ属性が違うとかじゃないの?
0115デフォルトの名無しさん
NGNG"Locale" です。
(ant ってあんまり、ね。これで JUnit 自動テストとかいっても、それなら
Ruby で build スクリプト書いたほうが全然いいし、みんな大抵 Ruby くらい
はインストールしてるだろうから、Write once,run anywhere が崩れること
ないだろうし自由度高いから。なんで ant がこんなに流行っているかが分からん)
0116デフォルトの名無しさん
NGNGJavaHouseで 今年の1月3日に同じ質問でてるよ。
以下はそのときの解決法。
http://java-house.jp/ml/archive/j-h-b/048034.html#body
011729
NGNGException in thread "main" java.lang.NoClassDefFoundError: app
とでます。メインメソッドあるのになぜじゃ…
0118デフォルトの名無しさん
NGNGたのですが、それを利用してボタンを押したらソフトを動かすコマンドをJavaのGUI
で作りたいのですが・・・(ソフト名<入力ファイル>出力ファイル)
0119デフォルトの名無しさん
NGNGttp://java.sun.com/j2se/1.3/docs/api/java/lang/Runtime.html#exec(java.lang.String)
ttp://java-house.jp/ml/topics/topics.html#core-runtime
0120クソみたいな質問ですまん
NGNGVJ++とJBuilderしか知らないんですが、他にもあるんですか?
0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNGForte
VAJ
VCafe
0123121
NGNG0124デフォルトの名無しさん
NGNGVAJはWebアプリ作るのがWebSphereを前提としてるから嫌いだ。
だからJDKを使うのだ。
0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNGの意味って、Perlでいうところの"exit;"と同じなの?
012729
NGNG皆さん助言ありがとうございました。
理由は何でなのかわかりませんが…(^^;
でもありがとうございました。
これからは教える立場に回ろうと思います…
0128デフォルトの名無しさん
NGNG0129デフォルトの名無しさん
NGNGでも再帰的な処理のところがよくわかりません。
とりあえず最小単位の
_/\_
は作れたのですが、これを繰り返すことができません。
詳しい方お願いします。
0130デフォルトの名無しさん
NGNGCでもPASCALでもやり方はいっしょだよ。
013129
NGNGjava.io.IOException: 既存 jar ファイルの書き込み中にエラーが発生しました。
at sun.tools.jar.Main.run(Main.java:179)
at sun.tools.jar.Main.main(Main.java:904)
これはどういう意味でしょう…
0132デフォルトの名無しさん
NGNGテンポラリの容量とか書き込み許可属性とか見れ
0133デフォルトの名無しさん
NGNGこらこら。色々助言受けといてそれで終わりかい?
もし次に同じ事で悩む厨房が出たらどうする?全く同じ事の繰り返すじゃないか。
一連のコメント達が、君の役だけにしか立たない事になる。
それは2chサーバ資源や、質問に答えてくれた親切な人達の厚意を無駄にする事だ。
何故上手くいったのかを書き残せば、未来の厨房の役にも立つかもしれないだろう。
君にはその責任がある!!
0135デフォルトの名無しさん
NGNG実行するとパネルはでるのですが灰色のままなにもおこりません。
プログラムがおかしいの?
0136デフォルトの名無しさん
NGNGコピペって、それで 127 みたいな発言できるとは…
キミ将来大物になれるかもよ。
失敗したらズタボロの人生歩むかもしれないけど。
0137デフォルトの名無しさん
NGNGそれだけじゃわからん。
0138デフォルトの名無しさん
NGNGつーかさ、jarで悩むとか以前の問題な、きっと。
コピペして動いたって何も理解してないじゃん。
こういうやつがあぼーんしたくなるソースを量産するのだな・・・
013929
NGNG自分で作りなおしてもできましたし、やり方は理解できました。
問題は$1を移動するのを忘れてただけかもしれない…
0141デフォルトの名無しさん
NGNGボタン無しで動かすことはできました。
ボタンを追加しようとすると、これはイベントリスナーの知識がいりますか?
0142デフォルトの名無しさん
NGNGいっしょにコンパイルされちまいますね
0143デフォルトの名無しさん
NGNGteikadeの開発って、もうまったくやってない(進まない)のかな?
teikade無しではまともに開発できないカラダになってしまったのだけど。
0144デフォルトの名無しさん
NGNGもうだめぽ
0145デフォルトの名無しさん
NGNGJavaのデフォルトパッケージにはあるのでしょうか?
HashtableやHashmapはキーは指定できてもインデックスでの指定は出来ないみたいだし。
自分でその機能を持つクラスを作るしかないのでしょうか?
0147デフォルトの名無しさん
NGNGJDK1.3までなら、自作しかないです。
JDK1.4ならLinkedHashMapというクラスが追加になってますので
それを使いましょう。
0148145
NGNGMapのコンクリートクラス一個自作すればいいだけだけど。
0149147
NGNG0150デフォルトの名無しさん
NGNGresources[i].allocated = true; }
以下の中で、なぜ上記の部分を削除してコンパイル実行するとResourceが0だけになるんでしょうか?
class Resource {
boolean allocated;
int rid;
Resource(int rid) {
allocated = false;
this.rid = rid; }
void use(int uid) { try {
System.out.println("User " + uid + " uses resource " + rid);
Thread.sleep((int)(5000 + 5000 * Math.random())); }
catch(Exception e) { e.printStackTrace(); } } }
class ResourceCoordinator {
private final static int NUMRESOURCES = 3;
private int totalAllocated;
private Resource resources[];
ResourceCoordinator() {
totalAllocated = 0;
resources = new Resource[NUMRESOURCES];
for(int rid = 0; rid < NUMRESOURCES; rid++) {
resources[rid] = new Resource(rid); } }
synchronized Resource get() {
while(totalAllocated == NUMRESOURCES) {
try { wait(); }
catch(InterruptedException ie) {
ie.printStackTrace();
System.exit(0); } }
Resource r = null;
for(int i = 0; i < NUMRESOURCES; i++) {
if(resources[i].allocated == false) {
resources[i].allocated = true;
r = resources[i]; break; } }
++totalAllocated;
notifyAll();
return r; }
synchronized void put(Resource r) {
r.allocated = false;
--totalAllocated;
notifyAll(); } }
class User extends Thread {
ResourceCoordinator rc;
int uid;
User(ResourceCoordinator rc, int uid) {
this.rc = rc;
this.uid = uid; }
public void run() {
try { while(true) {
Resource r = rc.get();
r.use(uid);
rc.put(r);
sleep(3000); } }
catch(Exception e) {
e.printStackTrace(); } } }
class Zero { private final static int NUMUSERS = 10;
public static void main(String args[]) {
ResourceCoordinator rc = new ResourceCoordinator();
for(int uid = 0; uid < NUMUSERS; uid++) {
new User(rc, uid).start(); } } }
0152デフォルトの名無しさん
NGNG時々 jre/lib/ext/ に入れるのではダメで、任意のディレクトリに
置いて、クラスパスを設定しないといけない JAR ライブラリとか
あるけど、これはどうして?
jre/lib/ext/ に置くのと、クラスパスを設定するのとの違いは
何なのですか? 解説しているWebサイトなどご存知でしたら
ご教授ください。
0153152
NGNGhttp://java.sun.com/products/jdk/1.2/ja/docs/ja/guide/extensions/
なんとなく分かったような。つまり、分かってない。
0154デフォルトの名無しさん
NGNGJRE側のjavaコマンド呼んじゃってる、とかじゃないの?
0155152
NGNG"JRE側のjavaコマンド" ってどういうこと?
0156デフォルトの名無しさん
NGNGここ読んでみると良し
http://www.atmarkit.co.jp/fjava/onepoint/java/jv_ext.html
0157デフォルトの名無しさん
NGNG0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNGそんな質問の仕方なら>>158が正解
0160デフォルトの名無しさん
NGNGいざちょっと大きいアプリケーションを作ろうと思ったら
どう作ったら良いのかかなりとまどったりしてます。
デザパタ本も一通り読んだしちょっとしたクラス設計位はなんとかできそうに
思うんだけど、大きなアプリケーションになるとパッケージ構成やクラス構成
とかってどーいう風にするのが良いのかサパーリわからん。
とか思っている漏れにお薦めな本とかサイトってなんかないですか?
0161デフォルトの名無しさん
NGNG1万行くらいの簡単なアプリとか。
あとはJDKのソースとか見てると、それなりにパケージの作り方とか
分かってくっぺ。
0162
NGNG1万行が簡単なのか? と煽りに乗って見る。
0163日下部圭子 ◆ib749tYo
NGNG> 1万行が簡単なのか?
力自慢のプログラマのなら、一日数千行くらいは珍しくありませんよ。
陽一さんも5000行とか書いてましたし。
----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------
0164デフォルトの名無しさん
NGNG「同期」と「非同期」の意味が分からないんだけど、
やさしーく説明してもらえないでしょうか?
0165デフォルトの名無しさん
NGNGサーバー行為禁止されてるプロバイダなんです。
この場合、通信できませんか?NetMeeting等はIPで接続できるけど…
0166デフォルトの名無しさん
NGNGたった数行でも美しいコードもあれば、数百万行費やしてもクソなコードもある。
要は「思想」だ。
0167デフォルトの名無しさん
NGNG0168デフォルトの名無しさん
NGNGjava HelloWorld
として実行しても、
Exception in thread "main"java.lang.NoClassDefFoundError:HelloWorld
というエラーが出てしまいます。
CLASSPATH環境変数の設定に . がないのが原因らしく、
java -classpath . HelloWorld
とすればうまくいきます。
CLASSPATH環境変数の設定をどうやって、どのようになおしたらよいでのでしょう?
教えてください。よろしくお願いします。
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNG環境変数の設定方法はOSによって違う。
0171168
NGNG0172デフォルトの名無しさん
NGNG例えばあるメソッドがある処理を担当している時、
その処理が終わったらメソッドコールから帰ってくるのが「同期」
「処理しておいてね」「あいよー」でメソッドコールから返ってきて、
いつ実際に処理されるかは保証しない(多分、いつかは処理されるけど)
のが「非同期」。
普通のメソッドコール=同期。
非同期で依頼した場合、処理終了を通知してもらうメカニズムが、
普通は必要。「コールバック」とか呼ばれるやつ。
非同期処理は、普通マルチスレッドまたはプロセス間通信などの機構に
よって実現されるので、やろうと思ったらちょっと勉強が必要。
だから暗記から入るなと・・・。
その上、一万行もの他人のコードをサンプルにしたら挫折するってば。
0175デフォルトの名無しさん
NGNGリファクタリング本片手に作っては直すを1000回くらいやると吉。
0176デフォルトの名無しさん
NGNGまず、「イベントドリブン」から勉強すべし。
0177164
NGNGThanks, 非常に分かりやすかった。
0178デフォルトの名無しさん
NGNGCLASSPATHに.を追加したらいいだけ。
0179165
NGNG0180デフォルトの名無しさん
NGNG防火壁とかないなら。
0181160
NGNG>>161
行数多そうで、参考になりそうなソースコードってそんないろいろ見つかるものすか?。
クライアントサイドなアプリで。
>>175
丸暗記で勉強したわけでもなくて、ちっこいプログラムなら結構たくさん書いたけど意味無いのかな・・・。
>>175、>>176
リファクタリング、イベントドリブン、どっちもなんとなくのイメージはあるけど
具体的に取り組むとなるとどうするのかはわからない・・、今度調べてみます。
0182デフォルトの名無しさん
NGNGJDK添付demoのSwingSet2でどうよ。
0183デフォルトの名無しさん
NGNGclass hoge {
Foo foo = new Foo();
hoge() {}//コンストラクタ
}
と
class hoge {
Foo foo;
hoge() {
foo = new Foo();
}
}
どっちが良いっていうのはあるんですか?
0184デフォルトの名無しさん
NGNGフィールド初期化は、コンストラクタメソッド起動より前に初期化されるということ、
それからコンストラクタは、サブクラスでオーバーライドが掛かる可能性があると
いう考慮をせよ。それが望ましいことならコンストラクタで、望ましくないなら
フィールド初期化=コンストラクタメソッド起動以前の初期化にせよ。
OK?
0185183
NGNG>>いう考慮をせよ。
ああ、これは納得です。たしかにそうですね。即レスどうも。
0186デフォルトの名無しさん
NGNGいまだに使い方が判らん。というかサンプルが動かない。
コンパイルにコツがいるのか実行にコツがいるのか。
ポイントはクラスパス?
0187184
NGNGデフォルト値で必ず初期化される。
オブジェクト参照ならnull、プリミティブ値なら0(false)。
…ねえ、だからいちいちnull突っ込むのやめましょうよ、リーダ。
0188184
NGNGjava.util.Propertiesなら、newして、プロパティファイルの
フルパス名でload()すればいいだけじゃないか?
あとの使い方はMapみたいなもんでしょ。
0189デフォルトの名無しさん
NGNGわかっててインスタンスフィールドをnull等で初期化してる人も多いみたいだけど、
そういう人は敢えて代入しないと気持ち悪いんじゃないかな。
感覚的な問題だと思う。別に害はないのでほっとけばいいのでは?
>java.util.Properties
日本語通らないんだったっけ?
オーバーライドも何も、そもそもコンストラクタは継承されないし、
子クラスのコンストラクタは、親クラスのコンストラクタを
必ず呼ぶのでは??
0192184
NGNG>わかっててインスタンスフィールドをnull等で初期化してる人も多いみたいだけど、
言語仕様で保証されていても、それを知らないボケプログラマに揚げ足取られて
面倒な思いをするような隙を与えないようにするという意味があるのかもねー。
同僚や外注がどうやら口煩いだけのアホらしい時は、おいらもやるさ。
知ってるけど?
君は何かコンストラクタについて誤解をしてる気がする。
0195184
NGNG単に「サブクラスのコンストラクタから呼ばれるかもしれないし、呼ばれない
かもしれない」ということだな。
>呼ばれないかもしれない
絶対に呼ばれるよ。
0197189
NGNGPropertiesって自分は全然使ってないんで、はっきり覚えてませんでした。
>言語仕様で保証されていても、それを知らないボケプログラマに揚げ足取られて
それはあるかも。
ただ、ローカル変数と混同している人もいそうですね。
コンパイラに怒られた経験から変数はすべて明に初期化してるとか。
0198デフォルトの名無しさん
NGNGおせぇ〜て
0199184
NGNGちゃうちゃう。サブクラスが、親クラスの複数のコンストラクタの中の
どのコンストラクタを呼ぶかはサブクラス実装者の責任になるという話っすよ。
どれか(明示しなければデフォルトコンストラクタ)が呼ばれるのは
確かに絶対間違いないけど。
0200デフォルトの名無しさん
NGNGimplements Cloneable
0201184
NGNGそれから、日本語が含まれるプロパティをつかうのなら、
PropertiesよりはPropertyResouceBundleを使うべし、だな。
JVMランタイムが自身が実行されえいる環境のlocaleによって、実際
に使われるプロパティファイルのファイル名を分岐してくれるから、
国際化対応が楽。
>>198
なにが聞きたいんだか良くわかんないけど、ディープコピーがしたい
っつうなら、こんな感じでどうかね。
class Hoge{
private Hage hage;
///…
public Object clone(){
Hoge dst = super.clone();
if(this.hage!=null)
dst.hage = this.hage.clone();
return dst;
}
}
コアAPIのソースでも眺めてみた方がはやいかもよ。
■ このスレッドは過去ログ倉庫に格納されています