~Poruke's garden~

日々の出来事や、趣味について書き綴っているporukeの空間です。
もしよければ、又次回もお寄り下さいませ(^^)

fileへの書き出し

2011年12月11日 17時25分07秒 | Digital memo
またまたJavaのお話
fileへの書き出しを行っていて、何故か途中までしか書き出されない・・・何故?
と思いコードをチェック、書き出しと同じタイミングで出力させると全部ある模様

散々悩んだ挙句、PrintWriterclose()をしていないことに気が付く

解決


・・・・あぁ、やっぱりprogramは
”思った通りに動くのではなく、書いた通りに動く”
うむ、動かない時には殆どの場合自分が原因なんですね(苦笑

本当にメモ書きですみません


追伸

ちゃんと本を見たところ、
当り前ではありますが、close()をすることによってファイルがクローズされます

そして、ここからが重要
BufferedWriterでは出力がバッファリングされるので、クローズを忘れると、書き込んだつもりの文字列が欠けてしまうことがあるそうですまさに今回の状態ですね♪

因みにバッファリング
”データをやり取りするときに、処理速度や転送速度の差を補うためにデータを専用に設けられた記憶領域一時的に保存しておくこと”

確かにバッファリングしてくれないと、データがどんどん抜け落ちていきますもんね・・(実際にはどうなるんでしょうか・・・


コメント

エラーが出たり消えたり・・・・

2011年11月23日 19時49分10秒 | Digital memo
作業中に、以下のようなエラーが・・・・


Exception in thread "main" java.lang.NoClassDefFoundError: クラス名
at プロジェクト名.main(メインクラス名.java:27)因みに27行目はクラスの定義
Caused by: java.lang.ClassNotFoundException: クラス名
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    ... 1 more
Java Result: 1


使用環境はNeatBeans IDE 7.0.1
しかも直前まで動作していたというのに、突然のエラー・・・・
うーん・・・
しかも、偶に実行出来たりと良く意味が分かりません
クラスがない??とな???(+_+)

色々サイトを調べていると、pathが上手く通っていないから、というのが多かったのですが、解決には至らず・・・・
未だ試行錯誤中・・・・

新しくプログラム書いても全く進まず、うぐぐぐぐぐ・・・と唸っております・・・・

不思議現象達
メイン内の該当クラスをコメントアウト→同じエラー
メイン内の該当クラスをコメントアウト→該当クラス先のコンパイル内で行っていた関数その他を全てコメントアウト→あれ?動く
上記のコメントアウトを1つずつ戻しながらセーブ&コンパイル→通る
最終的に全部のコメントアウトを取る→通る

??????
しかも、またクラス内を編集すると振り出しに・・・・


何か進展がありましたら、追記していきたいと思います


追記
駄目パターン
プロジェクトのプロパティからチェック→他の正常なものと特に変わらず・・・
新規プロジェクトを作成→元のクラスをコピペ→同じ現象
新規プロジェクト作成→クラスを新規作成→中身だけコピペ→今のところコンパイルできる→又同じエラー、がしかし少し先程と様子が違う(前回は全くコード内容が反映されず、エラーのみの出力だったが、今回は途中までSystem.out.print()が効いている)


とりあえずの解決法
Eclipseにプロジェクト毎移行→問題なく動く今ここ



・・・あれ???
NeatBeansをもう一度入れ直した方が良いのかな・・・・・?


結局のところ、NeatBeansがmain()を認識してくれなかったのが原因のようです。
なので、新しくプロジェクトを作成して、クラスの中身をコピーしてきたら、無事に動くようになりました。

うーん、一体何だったんだろう・・・
(勿論プロパティからmain()等の設定は行っていたのですが、認識されなかったんですよねぇ・・・・)

何はともあれ、無事に動いているので何よりです。


コメント

反省を生かして・・・・

2011年08月30日 01時05分18秒 | Digital memo
カテゴリの中に”プログラミングmemo”なんていう物を増やしてみました


多分、本当にメモ程度になると思われます(苦笑

え?今までそんなことも知らなかったの?
なんていう内容も度々(というより殆ど)登場するとは思いますが、あまり気にしないでやって下さい


普段、簡単な計算をまとめてやる、程度のプログラムしか書いていなかったのですが
文字と記号ばっかりでも残念なので
GUI(Graphical User Interface)を入れてみようと思った訳です

普段全く使うことのないJavaの、swingのJFrameを使用して挑戦

そんな中、文字を表示させたい・・・
ということでJlabelを使用することに

具体的にどこに文字を表示させたいかというと、ココ↓

(何で、文章内に"☆"が付いちゃったりしてるの?とか、何で計算?と突っ込まないでやって下さい)

通常の出力などでは
System.out.println();
System.out.print("\n");

を、使用したりするため

私は迷わず"¥n"と書いた訳です

ですが・・改行されない~

え??スペースも効かないの?



実はJlabelを調べればすぐ分かるのですが
上記のような場合
JLabel lab = new JLabel("<html>これで良い場合は、下のOKボタンを押して下さい。<br>");
と書くのが正解


そう、HTMLなんですΣ( ̄□ ̄;)
し、知らなかった~

なので、字の大きさや色の変更もこれで可能なんですね


って本当にこれだけのメモですみません

コメント

ショーッキングtypedef

2009年12月22日 00時55分05秒 | Digital memo
C言語さんで
びっくりな発見です
っというか、知らない事が未だに沢山・・・
きっと基本中の基本なんでしょうけれど・・・

その子は

"typedef"

構造体などの前に付けて使う命令さんです


何が凄いって

.。o○.。o○.。o○.。o○.。o○.。o○.。o○.。o○
typedef struct human{    /*人間 */
   char name[10];  /* 名前 */
   int age;   /* 年齢 */
} japanese_t;     /* 個人 */

japanese_t pd_a, pd_b;     /* 個人の型の変数の定義 */

.。o○.。o○.。o○.。o○.。o○.。o○.。o○.。o○

何が凄いって、宣言時にstructさんが取れただけではありません。

なーんと
 "typedef" を使うことで構造体も型として定義することがでちゃったようなのです(((( ;゚д゚)))ガクガクブルブル
上の場合だと、新しくjapanese_tっていう型が出来た訳ですか・・・・ふむむ・・・

ということは

.。o○.。o○.。o○.。o○.。o○.。o○.。o○.。o○
typedef int seisu;

int x;
seisu y;

.。o○.。o○.。o○.。o○.。o○.。o○.。o○.。o○

このxyも両方共、実は整数型∑( ̄□ ̄;

なんとびっくり!!!
さすがtypeをdefinitionしちゃうだけありますね゚+。:.゚ヽ(*´∀`)ノ゚.:。+
って当たり前だったらすみません

そして、さっきまで勘違いしていたのが
型名は構造体タグではなくて、そのメンバを定義したに付ける名前だそうです(@▽@;)笑

うむ、通りで変だった訳だっ!!(納得

コメント

色々用語

2009年12月16日 22時25分19秒 | Digital memo
はわわぁー
お久し振りです
生きてます~

色々けじめがついて
卒論に必死です(=△=;

ビルドーコンパイルー
用語がごちゃごちゃ・・・・


コンパイル=ソースコードを解析し、中間ファイルのオブジェクトファイル(*.obj)を作成(変換?)すること。
←この時点で機械語に翻訳

リンク=上記のオブジェクトファイル(*.obj)にライブラリを結合し、実行可能ファイル(*.exe)を作成すること。

ビルド=コンパイル+リンク(?)
(複数のオブジェクトファイル(*.obj)から実行ファイル(*.exe)を作成)

メイク=コンパイル対象のファイル、ビルドの対象となるファイルに関する情報を
1ファイルとして保存しておき、これに基づいてコンパイル、ビルドを効率的に行なうシステム。
更新されたファイルがあれば、それだけを対象にコンパイル・ビルドを実行するので、時間を無駄にすることがない。

そして余談・・・・
"dll"ってDynamic Link Libraryの略だったんだ・・・ふえぇ・・・


あっちこっち頭の整理です
専門分野なのにこんなんで大丈夫なのかしら・・・・


そしてそんなクルクル頭の私に母が可愛いものを(((( ;゚д゚)))ガクガクブルブル


にゃっ



写真だけで癒されました( *´艸`*)

コメント (2)