著作一覧 |
別に嫌いじゃないが、commonsのjarがそこら中にはびこって来るのがやだな。
CLASSPATHの表記にワイルドカードが使えりゃまだいいんだが。たとえば、set CLASSPAHT=c:\progra~1\apche\jakarta\commons\*.jarとか。
でも、それはそれで複数のバージョンが入ってると競合するからまずいのか。
気のせいかな。以前のANTはc:\progra~1\jakarta-ant-xxxとかに入れておいてもちゃんと動いてたような気がするんだが。
D:\home\arton\sample>set ANT_HOME=c:\progra~1\apache~1\apache-ant-1.5.3-1
D:\home\arton\sample>set PATH=%ANT_HOME%\bin;%PATH%
D:\home\arton\sample>ant -verbose
Apache Ant version 1.5.3 compiled on April 16 2003
Buildfile: build.xml
...
junit:
[junit] Implicitly adding C:\Program%20Files\junit3.8.1\junit.jar;C:\Program%20Files\Apache%20Group\apache-ant-1.5.3-1\lib\ant.jar;C:\Program%20Files\Apache%20Group\apache-ant-1.5.3-1\lib\optional.jar to CLASSPATH
[junit] Running HogeHoge
dropping C:\Program%20Files\junit3.8.1\junit.jar from path as it doesn't exist
dropping C:\Program%20Files\Apache%20Group\apache-ant-1.5.3-1\lib\ant.jar from path as it doesn't exist
ってなるんだよな……%20をパス名に入れちゃいかんだろ。junit taskか?
うーん、1.5.4でも同じだな。
Path->Project->FileUtil あたりは別段おかしくないようだが。
って言うか、誰がショートネームをロングネームに変えてるんだ? File#getCanonicalPathを呼んでるとこだな。でその後にURLエンコードしてるんだろうが、面倒だな。
違うみたいだな……FileUtilのはシンボリックリンクチェックだし、もう1つはDelTreeタスクだ。
追記:
fork=yesが臭い。Tomcatのjavacと同じことだな。
時間もないのに、何やってんだオレは? でもまあ、パッチ作ったぞ。JUnitTaskが犯人というか、Class#getResourceがURLを返すのが原因だな。
junit>diff -u JUnitTask.java.org JUnitTask.java
--- JUnitTask.java.org Fri Nov 21 19:48:18 2003
+++ JUnitTask.java Fri Nov 21 19:49:16 2003
@@ -80,6 +80,7 @@
import java.util.Vector;
import java.net.URL;
+import java.net.URLDecoder;
import junit.framework.AssertionFailedError;
import junit.framework.Test;
@@ -943,7 +944,7 @@
protected void addClasspathEntry(String resource) {
URL url = getClass().getResource(resource);
if (url != null) {
- String u = url.toString();
+ String u = URLDecoder.decode(url.toString());
if (u.startsWith("jar:file:")) {
int pling = u.indexOf("!");
String jarName = u.substring(9, pling);
しかし、意地でもprogram filesにインストールする粋人なんておいらしかいないだろうから、コントリビュートしても無駄な気がするなぁ。
結局、Bugzillaに入れたら1.6で修正済みって来た。
LoaderUtils.getResourceSource(...)を使うようにJUnitTaskを変えているそうだ。JUnitTaskが独自にClass#getResourceを使用してたことがまずーだったんだろう。
Rubyでも感じるが、このへんは微妙なとこだな。
要するに開発したいんじゃなくて使用したいだけだから、当然安定版とかリリース版を使うんだが、そこで問題が出れば一応見ることになる。
で見ておかしけりゃ直すんだが、大体、こっちが気付く問題は誰かが気付くから次期版では直ってることが多い。でも、こちらは使用したいだけだから、そんな次期版なんて不安定そうなものを使うつもりは一切ない。当然、そんなバージョンを時間をかけてダウンロードしてインストールしてなんてことをすることは無い。
一切無い場合は黙っておくほうが、向こうも返事書かなきゃならんわけで手間なわけだから、お互いのためなのかも。
とは言え、必ずしも直ってるとは限らないわけだしな。厄介だな。
ジェズイットを見習え |