2012年5月30日 星期三

如何知道Java Class檔是使用那種版本的JDK complier出來的?

最近在試WebService的程式,希望能用來讓ERP系統串接其他系統使用,不過由於系統使用的是1.4.2的JDK…所以如果是太新的third party jar檔就無法使用
所以就引發了一個問題…如果什麼都沒寫連META-INF也都沒有…要怎麼知道這個Class是用那個Version的JDK生的?
Google了一下,其實方法不難…將該class檔用16進位的軟體讀出來就可以知道
查到的wiki中有說…找到第八個byte…
詳見下方的內容
J2SE 7    = 51 (0x33 hex),
J2SE 6.0 = 50 (0x32 hex),
J2SE 5.0 = 49 (0x31 hex),
JDK 1.4   = 48 (0x30 hex),
JDK 1.3   = 47 (0x2F hex),
JDK 1.2   = 46 (0x2E hex),
JDK 1.1   = 45 (0x2D hex).
要看的是0x後面紅色的部分(因為是使用16進位來看)
如果找到的是2E…那對應過去就是JDK 1.2版的依此類推…
如此一來就算只有class檔…也能分辨出來是使用那個版本的JDK 生出來的

reference
http://en.wikipedia.org/wiki/Class_%28file_format%29#General_layout

2012年5月14日 星期一

Apple iPad Camera Connection Kit無法讀照片的原因

之前媽媽的朋友家的小孩買了 iPad Camera Connection Kit,讓她能方便的直接將相機裡的照片轉到ipad中,這東西實在是方便,但也帶來了不便…
某天,該位朋友打給我說照片從別人那邊copy回來都無法放入ipad
我到他家也試了好久…google才發現原來事有奚翹
由於他自朋友那邊copy過來的檔名已經變了所以才無法讀取
原因是…不管什麼相機照出來的圖片檔名前面一定是八碼

EX:00000001.jpg

由於他copy過來的檔名已經被更動,所以ipad認為那不是相機拍出來的照片,所以就不會去理他(就算他是圖檔)

所以解法很簡單,找個重新命名的軟體將照片全部重新命名成八碼長度就可以讓ipad順利讀取啦

更新:記得要放到DCIM的資料夾中才能被讀取到