- PR -

ファイルに文字が書き込まれない

投稿者投稿内容
satomi
会議室デビュー日: 2008/06/11
投稿数: 12
投稿日時: 2009-04-05 10:39
パスが変わってしまった件について

結論から言って、現状でも問題は無いと思います。
へたに元に戻そうとすると、またどこかの設定が変わってたりして、
別の問題が発生したりする可能性があります。
また、環境が変わるということは、回答して下さっている方々が、
検証できなくなる可能性がありますので、今のままいじらない方が良いでしょう。

以下、あくまでも予想です。
eclipse起動時に、workspaceをどこにするか聞いてくると思います。

以前は
1. C:/Documents and Settings/PC-User/workspaceにした。
2. Tomcatプラグインの、Tomcatプロジェクトで、JSuperというプロジェクトを作った。
そのため、コンテキストパスの実体が、
C:/Documents and Settings/PC-User/workspace/JSuper/
になったのでしょう

eclipseをインストールしなおした際
1. C:/dejavu/workspaceにした。
2. DynamicWebProjectでJSuperというプロジェクトを作った。
そのため、コンテキストパスの実体が、
C:/dejavu/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/JSuper/test.txt
になったのでしょう。

workspaceのパスを変えてしまった事と、プロジェクトの作り方が以前と違う事が原因と思われます。
Kazuki
ぬし
会議室デビュー日: 2004/10/13
投稿数: 298
投稿日時: 2009-04-05 12:46
1.コンテキストメニューについて
本気で、少しは調べてくださいね。
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%E3%82%B3%E3%83%B3%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC&num=50

2.propertiesファイルについて
propertiesファイルは、簡単にいうとただの設定ファイルです。
興味があるというかpropertiesファイルのことは知ってます。
プログラムで読み書きする方法も知ってます。

3.ファイルに文字が書き込まれない件について
おそらくsatomiさんのおっしゃってる通りだと思います。
(自分のされた手順を思い出して、satomiさんの言ってることに
 該当するか確認してみてください)

なので、現状の動きは動的Webプロジェクトを使ってるのであれば
正常です。問題ありません。
その上で、現状の動きだと困ることがあるならその点は別途教えてください。
もしかしたら、WebContentの下にデータを書き込むということ自体が
目的に対する間違ったアプローチである可能性もあるので。

今やろうとしていることは、一体何のためにしているのかという点を
教えていただけると、より良いやり方をお伝えできるかもしれません。
dejavu
ベテラン
会議室デビュー日: 2009/03/13
投稿数: 71
投稿日時: 2009-04-05 22:58
satomiさん、アドバイスありがとうございます。
satomiさんの予想はほとんど当たってます。
ちなみにworkspaceの場所を変更したのはマズかったのでしょうか。
次にこれだけ言葉が飛び交うと収集がつかなくなってます。
まず、権兵衛さんのレスの部分から引用します。
引用:

eclipseはファイルをキャッシュしています。
eclipseのプロセス以外からworkspaceのファイルに出力した場合、同期しないとeclipseから参照できません。
削除も同様にできません。

同期せずに削除の場合はeclipseがエラーメッセージを表示したと思います。


これのキャッシュですね。キャッシュは調べたのですが、Eclipseがキャッシュしているとはどういう事でしょうか。
それと、
引用:

eclipseがキャッシュしていると書いておいたのですが、キャッシュの意味がわからなかったのでしょうか?
同期の意味を勘違いしています。
eclipse上でファイルの同期を行っているかということです。
eclipseからファイルの中身を確認する前に、コンテキストメニューからrefleshしてください。
キーボードショートカットであればf5だったかな?


このコンテキストメニュー(これはKazukiさんに教えてもらったのでわかりました。これからは分からない言葉は必ず調べてみる事を念頭におきます。)からrefleshですね。
多分日本語表記だと言葉が違う可能性もありますが、どこのコンテキストメニューに出てくるのでしょうか。
いろいろと試してみましたが、refleshに該当するものは見つかりませんでした。
次に、わたなべさんへ謝罪の言葉を一言。
直ぐに調べると大言を吐きましたが、ただのJavaファイルからこれをやるのに手間取っています。
大変申し訳ありません。
後は、ぴあちゃんさんのコメントですね。
引用:


エクスポート・インポートしないで、もう一回WEBプロジェクト作って、でじゃぶー.jsp
だけコピって持ってきてやってみなされ。

>最初の方は問題なく表示されたと書かれていた人もいます。
最初の方は関係ないです。今おこっていることが全て。つっても君が「最初の方」の
方々のアドバイスを曲解しているだけだとは思いますが。

>サーバーを使用する以上は仕方の無い事
ワークスペース直下にファイルが作られるようにするための努力は必要だと
思いますね。
例えば、
でじゃぶー.properties ファイルに、

でじゃぶー.debug = true
でじゃぶー.workpath = C:/workspace/JSuper

と書いておいて、
これを、application.getRealPath の代わりに読み込んで test.txt にくっ付けて
あげるとか、ね。もちろん、でじゃぶー.debug が true の時だけね。

確か、application.getRealPath 使わないでやってあげれば、プロジェクトの
カレントに test.txt が作られるんじゃないかな?


これに関してはpropertiesファイルの作成の仕方及びその他もろもろ分からないので、厚かましいお願いですが、どなたか教えて頂けると大変助かります。
最後に毎度お世話になっているKazukiさんに質問です。
どうすればpropetiesファイルの作成の仕方とかが分かるのでしょうか。
一応検索してみたのですが、あまりよく分かりませんでした。
どういう風に勉強するといいのでしょうか。謎です。
後、分からない事は挙げるときりが無いのですが……。
例えば、Context.xmlの記述方法とか。
今質問している内容と本題の内容が変わってきてしまいましたね。
一応ですが、ファイルに文字が書き込まれない件は解決しましたので、別スレを立てた方がいいのでしょうか。
Kazuki
ぬし
会議室デビュー日: 2004/10/13
投稿数: 298
投稿日時: 2009-04-06 00:51
とりあえず、調べたことに対して自分はどう理解したのかを書くといいですよ。
じゃないと、こちらは1〜10まで教えないといけなくなります。

1〜10まで教えるには掲示板は不便です。(図も書けないし)
自分で、何をどう調べて、どう理解したけど、何がわからないのか?というように
具体的に書いて頂かないと、ここでは説明できません。

propertiesファイルはとりあえず、考えなくていいんじゃないかというのが
私の意見です。

それよりも、何のためにtest.txtをWebContent以下に起きたいのかが気になります。
データを保存するためという目的だと思うのですが、個人的な感覚だと
普通はWebContentの直下にファイルを書いたりしないので…。
(書く情報にもよると思いますが)
dejavu
ベテラン
会議室デビュー日: 2009/03/13
投稿数: 71
投稿日時: 2009-04-06 04:48
引用:

とりあえず、調べたことに対して自分はどう理解したのかを書くといいですよ。
じゃないと、こちらは1〜10まで教えないといけなくなります。

1〜10まで教えるには掲示板は不便です。(図も書けないし)
自分で、何をどう調べて、どう理解したけど、何がわからないのか?というように
具体的に書いて頂かないと、ここでは説明できません。


そうですね。Eclipseがキャッシュしているというのはどういう事なのでしょうか。
それと、refleshはどうしたらできるのか分からないままなのが気になっています。
これって10段階の何段階に位置するのですかね。
説明が長くなるようなら、自分で調べてみます。
分かりました。日本語だと「更新」みたいですね。
何かあまり触れない方がいいみたいなので、今は触れないでおきます。
引用:

propertiesファイルはとりあえず、考えなくていいんじゃないかというのが
私の意見です。

それよりも、何のためにtest.txtをWebContent以下に起きたいのかが気になります。
データを保存するためという目的だと思うのですが、個人的な感覚だと
普通はWebContentの直下にファイルを書いたりしないので…。
(書く情報にもよると思いますが)


そうですね。まだ早いかもしれませんね。
これで今回の質問は終わりにします。
アドバイスを頂いた方々、ありがとうございました。
Kazuki
ぬし
会議室デビュー日: 2004/10/13
投稿数: 298
投稿日時: 2009-04-06 06:23
引用:

説明が長くなるようなら、自分で調べてみます。
分かりました。日本語だと「更新」みたいですね。
何かあまり触れない方がいいみたいなので、今は触れないでおきます。


これについてはsatomiさんが以下のように説明されていたので。
私からは、これ以上詳しく説明できませんでした。
申し訳ありません。
引用:

とりあえず思いつくのは、eclipseで確認しているため、キャッシュされている内容を見ていたとか・・・・
だとしたら、右クリックしてrefresh("更新(F5)"とかになっているかも)すればローカルファイルシステムと同期してくれます。



propertiesファイルについては、Javaで一般的に使われる単なる設定ファイルの
書式の1つみたいなものです。
本来の使い方は、画面とかに表示する文字列を書いておくファイルなのかな?
ロケールに応じて、使用するpropertiesファイルを簡単に切り替えたり出来ます。

Googleで調べればいくらでも出てくるので、その説明でわからない部分を
具体的に示して頂ければ、わかる範囲内でお答えしたいと思います。
dejavu
ベテラン
会議室デビュー日: 2009/03/13
投稿数: 71
投稿日時: 2009-04-06 16:54
Kazukiさん、わざわざ親切にどうもです。
後、satomiさんのレスですね。
引用:

とりあえず思いつくのは、eclipseで確認しているため、キャッシュされている内容を見ていたとか・・・・
だとしたら、右クリックしてrefresh("更新(F5)"とかになっているかも)すればローカルファイルシステムと同期してくれます。


こんな大事な事があったのに、その前の
引用:

はい、生成に成功すればエラーは出ません。


これで納得してしまったんですね。
satomiさんには大変申し訳ない事をしていました。
それと、これを終える前に1つだけ聞きたい事があります。
Tomcatのcontext.xmlについてですが、こういうページがありまして。
引用:

下記のcontext.xmlを作成し、C:\\Eclipse\\eclipse-3.2.2\\workspace\\Test\\META-INFの配下と[TOMCAT_HOME]\\conf\\Catalina\\localhostの配下にもに配置しました。


コード:
<Context path="/Test" reloadable="true" 
 docBase="C:\\Eclipse\\eclipse-3.2.2\\workspace\\Test" 
 workDir="C:\\Eclipse\\eclipse-3.2.2\\workspace\\Test\\work\\org\\apache\\jsp"> 
<Logger className="org.apache.catalina.logger.SystemOutLogger" 
 verbosity="4" timestamp="true"/> 
<Resource name="jdbc/UDBTEST" auth="Container" type="javax.sql.DataSource" 
factory="org.apache.commons.dbcp.BasicDataSourceFactory" 
maxActive="30" 
maxIdle="10" 
maxWait="10000" 
username="db2admin" 
password="admindb2" 
driverClassName="COM.ibm.db2.jdbc.app.DB2Driver" 
url="jdbc:db2:UDBZTEST" /> 
</Context> 


これで、server.xmlに記述しなくても動くのでしょうか。
satomi
会議室デビュー日: 2008/06/11
投稿数: 12
投稿日時: 2009-04-06 17:20
記述内容の細かいところまでは検証していませんが、
http://tomcat.apache.org/tomcat-6.0-doc/config/context.html
に書いてあるとおり、Tomcat6.0からは、Contextエレメントをconf/server.xmlに書くのは推奨されない方式となりました。
Contextエレメントは複数の箇所に記述できますので、詳細についてはリンク先を参照してください。

また、今までの質問と関係無い質問なので、更なる質問は別スレッドを立てるべきだと思います。

スキルアップ/キャリアアップ(JOB@IT)