Windowsのコマンドラインから既定のブラウザを起動するには
rundll32 url.dll,FileProtocolHandler URL
という形で呼び出せばよいようです。「URL」は任意のURLに置き換えてください。
Javaから呼び出すときは
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
のようになります。
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| « 3月 | ||||||
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 | 31 | ||
Windowsのコマンドラインから既定のブラウザを起動するには
rundll32 url.dll,FileProtocolHandler URL
という形で呼び出せばよいようです。「URL」は任意のURLに置き換えてください。
Javaから呼び出すときは
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
のようになります。
最近知ったんですが、TPTPの最新版(4.5)はAgentControllerを別途動かさなくてもよくなったので、かなり楽にプロファイリングができるようになりました。WTPと組み合わせると、とにかくスゴいです。ボタン一つでプロファイリングができてしまったりします。
今まではWindows上でやっていたのですが、今回はLinux上でやることになりました。インストールだけでは動かなかったのでメモを残しておきます。
まず、Eclipseはeclipse.orgからダウンロード。TPTPはTPTPプロジェクトのページから最新のものを取ってきました。
インストールやら設定やらをやって実行したのですが、「JPIAgent can’t load ACCollector」というエラーになってWTPからTomcatが起動できません・・・。
色々調べてみて環境変数やら起動オプションやらをいじっていると、今度は「agent library failed to init: JPBootLoader」とういエラーになりました。
もしかして、Linux版は別途AgentControllerが要るのか!?と思い、別途用意してみました。AgentControllerを起動すると、今度は「libstdc++-libc6.2-2.so.3がない」とのこと・・・。しかも、libstdc++は既に入っているのに・・・。
で、結局は、compat-libstdc++-296(compat-libstdc++-33かも)に入っていることが判明しました。これをyumでインストールして、無事AgentControllerを起動することができました。
・・・ここで気づいたんですが、 libstdc++-libc6.2-2.so.3があれば、AgentControllerを別途用意する必要はないみたいです。結局、このライブラリさえあれば、Eclupse+TPTPだけでプロファイリングできるみたいですね。
・・・疲れた。
Faceletsでは例外が発生すると、faceletsが作ったスタックトレースを含む詳細なエラー画面が表示されます。
これは開発中には嬉しいんですが、実運用でスタックトレースを見せるのはまずいですよね。で、これを抑制することにしました。
・・・が、ここからかなり手間取りました(^^;まぁ、僕の予想が外れていただけなのですが。
エラー画面を見ると、右下に『Generated by Facelets』と書かれているので、どうやらFaceletsで作成しているようです。
そこでドキュメントを見ると、web.xmlに記述するコンテキストパラメータの「facelets.DEVELOPMENT」
で、エラーの詳細表示をするかどうかを指定できるようでした。
そこで早速falseにしてみたのですが・・・何も変化なし・・・。
どうやらデフォルトで無効のようです。
途方にくれて拙い英語の読解力で海外のメーリングリストを漁っていると、以下のようなページを見つけました!
http://www.mail-archive.com/users@myfaces.apache.org/msg47871.html
この回答で以下のようなものがありました(超意訳)
<!-- if you want to disable the behaviour completely -->
<context-param>
<param-name>org.apache.myfaces.ERROR_HANDLING</param-name>
<param-value>false</param-value>
</context-param>
<!-- if you are using myfaces + facelets don't forget to do this -->
<context-param>
<param-name>facelets.DEVELOPMENT</param-name>
<param-value>false</param-value>
</context-param>
Eclipse3.1でWebアプリケーションを開発するとき、Maven2を使おうと思い立ちました。
で、準備を始めたのですが、ひとつだけ問題がありました。
それは「WTPのWebプロジェクトと、m2eclipseのMavenプロジェクトは、
そのままでは同時に適用できない」ということです。
これを実現するには、次の2つの方法があります。
1.Mavenプロジェクトでプロジェクトを作ってWebプロジェクトとしても登録する
2.Webプロジェクトでプロジェクトを作ってMavenプロジェクトとしても登録する
1の方法を紹介しているサイトを見つけたのですが、ワークスペースのプロジェクトファイルを
直接編集しないといけないようなので、もうひとつの2の方法を試してみることにしました。
以下、その手順です(私の環境はEclpise3.1+Pleiadesですので、文言もそれに合わせています)。
まず、動的Webプロジェクトを作成します。
![]()
ここで気をつけることは、コンテンツディレクトリを「src/main/webapp」に、Javaソース・ディレクトリを「src/main/java」に変更することです。
![]()
これで、Maven2のディレクトリ構成に沿ったWebプロジェクトが作成できます。
さらにMavenに準拠させるために、プロジェクトの出力フォルダを設定します。
プロジェクトプロパティから「Javaのビルド・パス」を選択し、デフォルト出力フォルダを
「プロジェクト名/target/classes」に変更してください。
プロジェクト名を右クリックし「Maven」→「Enable Dependency Management」を選択します。
それからパッケージングを「war」に変更してください。
![]()
そのまま進んでいくと、pom.xmlファイルが作成されます。
これで、このプロジェクトはm2eclipseの管理下に入りました。
(2007/12/16追記)
最後に、pom.xmlで定義した依存ライブラリにクラスパスを通す必要があります。
プロジェクトプロパティから「J2EEモジュール依存関係」を選択し、「Maven Dependencies」にチェックを入れてください。
Javaでのログ出力でよく使われているlog4jですが、みなさんは設定ファイル(log4j.propertiesやlog4j.xml)はどこに置いているでしょうか。
もし何らかの事情で、指定したファイルをデフォルトの設定ファイルとしたい場合は、次のようにjavaの起動オプションで指定することができます。
java -Dlog4j.configuration=file://path/to/log4j.properties ...
すぐに忘れてしまうのでメモ。
今、Javaのオールインワンフレームワークみたいなのを作っているんですが、思わぬところで問題にぶち当たりました。
ある理由でJSF1.2を使おうと思っているのですが、MyFaces1.2とFaceletsを組み合わせるとFaceletsで用意されているc:ifタグが効かなくなってしまう問題に遭遇しました。コードを追いかけたのですが、どうやらTomcatの方に行っているようで、なんだかわからなくなってしまいました。
Facelets用のカスタムタグを独自に作るか、このページにあるように rendered 属性で何とかするしかないのかも・・・。極力車輪の再発明はしない方向で考えているので、renderedで進めることにします。
同じ問題に遭遇している人へのメモでした。
JSF の h:inputText タグと h:inputSecret タグの違いは、type属性が”text”と”password”となる以外にもあります。
それは初期値です。
例えばユーザ名とパスワードを入力する画面をJSFで作り、ユーザ名を h:inputText タグで、パスワードを h:inputSecret タグで作ったとします。こから呼び出されたアクションメソッドでnullを返した場合、元の画面に遷移することになります。このとき、ユーザ名のフィールドには入力した文字列が入ったままになっていますが、パスワードのフィールドは空になります。
パスワードのフィールドも空にせずに値を入れたままにしたい場合は、
<h:inputSecret value="#{password}" redisplay="true" />
というように「redisplay=”true”」を定義します。