com4jのVersion
今日はcom4jとiTunes。
iTunesをcom4jを使ってJavaから動かすという文書はいろいろあるんだけど、最近になってiTunesLibがバージョンアップして1.10になったら、tlbimpが動かないよという話。
public static final class Version implements Comparable<Version> { public final int major; public final int minor; public Version(String name) { int idx = name.indexOf('.'); major = Integer.valueOf(name.substring(0,idx)); minor = Integer.valueOf(name.substring(idx+1)); }
タイプライブラリが1.10になって、Version表記が1.a(16進表記)になりました。上のソースでは10進数でparseするのでcom4jでは動かないよ。という結果。
@@ -124,10 +122,8 @@ public static final class Version implements Comparable<Version> { public final int major; public final int minor; + public final String version; public Version(String name) { + version = name; int idx = name.indexOf('.'); + major = Integer.valueOf(name.substring(0,idx),16); + minor = Integer.valueOf(name.substring(idx+1),16); - major = Integer.valueOf(name.substring(0,idx)); - minor = Integer.valueOf(name.substring(idx+1)); @@ -157,8 +153,7 @@ } public String toString() { + // return major + "." + minor; + return version; - return major + "." + minor; } } }
こんな修正で一応動く