2006-01-01から1年間の記事一覧

replaceタスク

Antに、ファイル内の置換を行うreplaceタスクがある。 でもこのタスク、置換したいファイルがかなり大きかったりすると、すぐOutOfMemoryで落ちる。 原因は、全ファイルを一度読み込んでる処理しているから。 ただ、複数行を指定して置換できたりするから、…

AntからCVSアクセスでエラー

前の日記でインストールしたCVSNTを使ってAntからアクセスしようとしてた。 こんな感じで。 でも、なぜか怒られた。 [cvs] cvs checkout: Empty password used - try 'cvs login' with a real password [cvs] cvs [checkout aborted]: authorization failed:…

CVSNT

用があってCVSサーバをインストールする必要が出てきたので、 WinでもOKでラクそうなCVSNTを使ってみた。 インストールや設定はぐぐるとたくさんあるので、らくしょーとか思ってたら バージョンが変わっているせいか、違う箇所がちらほら。 一番ハマったのは…

Double.MIN_VALUE

IntegerやLongのMIN_VALUEは負の値。 でも、DoubleやFloatのMIN_VALUEは負の値ではない。 MIN_VALUE double 型の正の非ゼロ最小値です。 Javadocより つまりは、doubleで表現できる、一番0に近い正の数ってことかね? 見事にハマった・・・。 おまけ。 Syste…

ファイルが存在するかしないかでの分岐

Antで、ファイルが存在する場合としない場合で分岐したい。 分岐には前に試したAnt-ContribのIfタスクを使えばいいけど、分岐の条件節をどのようにすればよいかが悩ましい。 単一のファイルが存在するかどうかだったら、とりあえずはavailableタスクでできる…

javacと準拠レベル

assert文が使われた1.4用のソースをコンパイルするには、 javacのsource属性を指定する。 Genericsなんかを使った1.5のソースの場合は、source属性で"1.5"と指定すればいいけど、 もともとJDK1.5を使ってれば特に問題なっしんぐ。 でも、間違ってsource属性…

Antのプロパティ表示

Antのオプションタスクに、echopropertiesというタスクがあったので、 使ってみた。その名のとおり、プロパティを表示してくれるらしい。 ビルドファイルはこんな感じ。 実行結果は長いので省略。 prefixを指定すると、その単語から始まるもののみを表示で…

Eclipseのコンパイラでのコンパイル

前の日記の通りAntのjavacタスクでEclipseのコンパイラを使うと、 コンパイルが通らないクラスでも、failonerror="false"のときは クラスファイルが生成される。 興味本位で、どんなクラスファイルが生成されるのかを調べてみる。 まずは、ビルドスクリプト…

コンパイル不可のクラスとのコンパイル

Antから、コンパイルが通らないクラスを一緒にしてjavacタスクでコンパイルを実行した場合、 すべてのクラスファイルが生成されない。 せめて、コンパイルが通るクラスはクラスファイルが生成されてもいいのに。 普通にDOS窓からjavacで実行しても生成されな…

Eclipseのメモリ指定

eclipse.exe実行時に、以下のオプションをつける。 -vmargs -Xmx512meclipse.exeのショートカットを作って、プロパティのショートカットタブにある リンク先の指定の部分に、上のものを書いてしまうとラク。 -vmargsで、Eclipse起動に使うJava VMの設定がで…

JavaでGUI

普段はGUIはやらないので、ちょこっと勉強。 Swingは、シングルスレッドで動く。 このスレッドは、イベントディスパッチスレッドとか言うらしい。 なので、表示しているものの状態を変えたい場合などは、 SwingUtilitiesのinvokeLaterとかinvokeAndWaitとか…

TimerとTimerTask

とあるタスクを定期的に実行したり、指定した時間に実行したりするときは、 TimerとTimerTaskを使うらしい。 試しに作ってみた。 public class TimerTaskTest extends TimerTask { public static void main(String[] args) { TimerTaskTest task = new Timer…

排他的論理和

Javaで使ったことなかったので。 確認の意味で。めんどいからboolean。 public static void main(String[] args) { System.out.println(true ^ true); System.out.println(true ^ false); System.out.println(false ^ true); System.out.println(false ^ fal…

SAXParserFactoryの実装クラスの検索順序

SAXParserFactory#newInstanceを呼んだときに返却されるクラスは、以下の順序で探していく。 javax.xml.parsers.SAXParserFactory システムプロパティ JRE ディレクトリ内のプロパティファイル lib/jaxp.properties パスが通ってるjar の中の、 META-INF/ser…

バッチファイルからのAntの実行

バッチファイルで、Antを実行する処理を書いて実行すると、 そのAnt実行の次の行以降のバッチファイルの処理が実行されない。 というよりかは、Antの実行が終了するとバッチファイルの処理が残っていても そこで終わってしまう。 まずはこの状況から。 ビル…

Subversionのキーワード置換メモ

Subversionで$Id$とか$Date$とかを使う場合の設定。 Eclipseで、Subversionのプロジェクトを右クリ→Team→キーワードの追加で 使うものにチェックを入れると、置換されるようになる。 デフォルトでは、置換されないのね・・・。

オートボクシングの勘違いというか認識不足というか

5.0から、Auto-boxing/Auto-unboxingの機能が追加になった。 これって、Collection関連のときのみ有効だとずーっと思ってた。 つまり、こんな感じ。 List list = new ArrayList(); for (int i = 0; i list.add(i); } でも実は、Collectionとか関係なく、ど…

JUnit

privateなメソッドもテストしようとする。 そして怒られる。 junit.framework.AssertionFailedError: Test method isn't public: test01 正確には、チェック部分ではじかれて、 メッセージを表示させるだけのテストメソッドが代わりに実行される。 親切設計…

Ant実行時のメモリ指定

ant.batを見てると、結局はjavaコマンドを実行してるだけっぽい。 んで、java.exe実行時に、vmの引数として%ANT_OPTS%と指定してる。 なので、antを実行する前に、 set ANT_OPTS=-Xmx512mとかやれば、いけるみたい。 というか、AntでOutOfMemoryで落ちたの、…

定義順

こんなクラスを作って動かしてみる。 public class Test { static { System.out.println("start: static initializer"); Test test = new Test(); System.out.println("end: static initializer"); } private static Integer ykhr = new Integer(1000); publ…

Stringのインスタンス

new String()は、新しいインスタンスが作られる。 知ってたけど、確認の意味で。 public static void main(String[] args) { String str1 = "ほげほげ"; String str2 = "ほげほげ"; System.out.println(str1 == str2); String str3 = new String("ほげほげ")…

Velocityのプロパティメモ+α

Velocityでテンプレートからファイルを出力する際のコード。 BufferedWriter writer = new BufferedWriter(new FileWriter("output.html")); Template template = Velocity.getTemplate("template.vm"); template.merge(vc, writer); ただし、Velocity#getTe…

isSynthetic()とPackageクラス

5.0からClass・Method・Fieldクラスに、isSynthetic()ってメソッドが追加されてた。 気付かなかったっす。 知ってればこんな無駄なことしなかったのに・・・。 あと、Packageクラスなんてのが前からあったのね。 こいつも知らなかった。 でも使う機会なさそ…

ContextClassLoader?

とあるJavaのプログラムが、スタンドアロンでは動くけど、 Antからだと動かない。 色々調べていくと、ContextClassLoaderあたりがあやしい。 でも、ContextClassLoaderって何??(汗 JavaプログラムをAntから実行するときは、Ant実行時のパスに通すのではな…

Jarファイル

Jarファイルを作ってパスに設定したのに、どーやっても動かない。 なんどやっても動かない。 Jarを解凍しても動かない。 なぜ・・・。 と3時間も悩んだ末。 Jarの中に、クラスファイルがなくてソースしか入ってなかったorz がんばれ、自分。

バッチファイルのecho off

Win

DOS窓で「echo off」とすると、コマンドなどが表示されなくなる。 でも、Tomcatの起動スクリプトなんかを見てると、「@echo off」って書いてある。 このアットマークはなにかと思ってたら、アットマークがあると、 echo offってコマンド自体も表示させなくで…

FileWriter

FileWriterのインスタンスを生成する際、存在しないディレクトリ配下のファイルを指定すると FileNotFoundExceptionが出る。そんくらい作ってくれたっていーじゃんとか思うけど、 変なドライブを指定されても困るもんなぁ。 というわけで、無駄にこんなコー…

JMeterとTransaction Token

隣の人がずっと悩んでたので。JMeterを使ってStrutsのWebアプリに負荷をかけるとする。 このとき、トランザクショントークンが使われている画面は、 前のレスポンスからトークンの値を取得し、次のリクエストに その値を設定しないと、遷移できないはず。 で…

Velocity

Velocity、Vを抜くと、エロシティー。

MessageFormat

使ったことがなかったので試してみる。 public static void main(String[] args) { String base = "{0}, ykhr."; MessageFormat format = new MessageFormat(base); String result = format.format(new String[]{"Hello"}); System.out.println(result); }結…