一個java加密引起的問題
最近我在IBM的技術網站上下了一個用DWR來簡化AJAX在java平臺上應用的例子。具體可以到他的網站上去下載這個包。下完解壓後,由於小弟不才,直接用複製貼上的方式建好了web目錄,並將該目錄放在Tomact的webapps下。一切就緒後,執行貓。等啊等,好了。介面出來了,接下來就點搜尋按紐,沒有出來預想的結果,倒彈出來了一個錯誤框,說什麼找不到類什麼的錯誤。什麼原因呢,我百思不得其解,都是複製貼上啊,不應該有錯的。難道是目錄成次有問題?我想了好半天,頭都想破了,也沒則。後來我又看見原解壓目錄有個build.xml的檔案,而且還有個說明文件,說可以用它來建web,雖然我不會用這個,可是還是在Eclipse下硬著頭皮做了一個。(是按我自己的 理解做的,呵呵,可想而知結果)陷入了僵局的我抓耳撈腮。最後又到解壓目錄下,看有沒有什麼線索。哎,好象還有一個dwr-app.war這麼個檔案,這是什麼東東啊(大家不要笑,我可是出學者,想必大家才開始學的時候也有這樣的經歷)。到google搜了一搜它的副檔名,結果都是戰爭一類的,風馬牛不相及。於是加了全部的名字去搜dwr-app.war,靠,竟然沒有結果,好痛苦啊。於是用了app.war去搜,好,有結果了。看了一看。其中有一篇說可以將該檔案放在tomcat下,然後從起貓。它會自動在tomcat的webapps下建立好目錄。真的嗎,帶著疑慮我照他的作了,死馬當活馬醫吧,反正也沒其他方法了。一切作好後,我將目錄轉到webapps下,然後啟動貓。眼睛死死盯著螢幕,等待奇蹟的發生。哈哈,果然象他說的那樣,產生的一個目錄。開啟一看什麼檔案都建好了。還有這等好事,我以前咋不知道呢(大夥又要笑了,小菜鳥啊)。這個目錄的能跑嗎,帶著這個疑問,我開啟網頁,鍵入地址。頁面出來了,按一下按鈕,結果出來了。好高興啊。。。。可是我的那個複製為什麼不能跑呢?為了找原因,於是我又開始了一個最愚蠢的做法,一個一個檔案比對。jar, html,js,xml,都有啊,而且位置都一樣啊。我感到很詭異。我想今天我要找不到原因,我就不睡覺了(嘿嘿,鑽牛角尖了)。真不行,我一個一個檔案的替換。(好慘,這就是一個初級菜鳥的學習之路,好艱辛啊,55555,不知大家也是不是這樣練成大蝦的,是的話,我就心安了,否則。。。)接下來,就是純體力勞動,停貓,換檔案,起貓,開網頁,還要刪除貓下的快取。這一趟跑下來,把我弄的頭暈眼花。眼看檔案都快替換完了,最後只剩下class目錄下了,這時我真的想放棄了,按理說(其實是我的想法)class檔案都是死的,怎麼可能不一樣呢,換了也沒用。進目錄看了一下,如我想的一樣,就那幾個檔案,名字也一樣啊,真搞不懂。但是還是沒放棄替換,把class目錄一起拷過去,替換。本來是不報希望的,可是就是在失望之時給你驚喜,列表竟乖乖的出來了。啊,怎麼是這樣呢?用反編譯軟體開啟兩個class檔案進行比較。那個從war自動生成的class檔案有很完整的內容,如下:
package developerworks.ajax.store;
import java.util.*;
// Referenced classes of package developerworks.ajax.store:
// CatalogueDAO, Item, Utils
public class Cart
{
public Cart()
{
totalPrice = 0;
contents = new HashMap();
}
public Cart addItemToCart(String itemId)
{
Item item = (new CatalogueDAO()).getItem(itemId);
if(item != null)
{
totalPrice += item.getPrice();
int newQuantity = 1;
Integer oldQuantity = (Integer)contents.get(item);
if(oldQuantity != null)
newQuantity += oldQuantity.intValue();
contents.put(item, new Integer(newQuantity));
}
return this;
}
public Cart getCart()
{
return this;
}
public int getTotalPrice()
{
return totalPrice;
}
public String getFormattedTotalPrice()
{
return Utils.formatCurrency(totalPrice);
}
public Map getSimpleContents()
{
Map simpleContents = new HashMap();
Item item;
for(Iterator I = contents.keySet().iterator(); I.hasNext(); simpleContents.put(item.getName(), contents.get(item)))
item = (Item)I.next();
return simpleContents;
}
private Map contents;
private int totalPrice;
}
而我複製的class檔案卻是這樣的:
package developerworks.ajax.store;
public class Cart
{
public Cart()
{
throw new Error("Unresolved compilation problems: \n\tThe type Map is not generic; it cannot be parameterized with arguments <Item, Integer>\n\tSyntax error, parameterized types are only available if source level is 5.0\n\tcontents cannot be resolved\n\tThe type HashMap is not generic; it cannot be parameterized with arguments <Item, Integer>\n\tSyntax error, parameterized types are only available if source level is 5.0\n\tcontents cannot be resolved\n\tcontents cannot be resolved\n\tThe type Map is not generic; it cannot be parameterized with arguments <String, Integer>\n\tSyntax error, parameterized types are only available if source level is 5.0\n\tThe type Map is not generic; it cannot be parameterized with arguments <String, Integer>\n\tSyntax error, parameterized types are only available if source level is 5.0\n\tThe type HashMap is not generic; it cannot be parameterized with arguments <String, Integer>\n\tSyntax error, parameterized types are only available if source level is 5.0\n\tThe type Iterator is not generic; it cannot be parameterized with arguments <Item>\n\tSyntax error, parameterized types are only available if source level is 5.0\n\tcontents cannot be resolved\n\tcontents cannot be resolved\n");
}
public Cart addItemToCart(String itemId)
{
throw new Error("Unresolved compilation problems: \n\tcontents cannot be resolved\n\tcontents cannot be resolved\n");
}
public Cart getCart()
{
throw new Error("Unresolved compilation problem: \n");
}
public int getTotalPrice()
{
throw new Error("Unresolved compilation problem: \n");
}
public String getFormattedTotalPrice()
{
throw new Error("Unresolved compilation problem: \n");
}
private int totalPrice;
}
而在html中彈出的也正是上面的Error。我的第一反映就是加了密了。以前也聽說過什麼加密,防止反編譯。可是沒想到今天讓我這個菜鳥給遇上了。其實我想如果是個大蝦,也許根本不遇不到這個問題,因為他直接就build 或者用war檔案來建,(或許還有更好的方法,有的話在回覆時能告訴小弟)。可是就是我這個菜鳥,而且用了複製粘帖方法的菜鳥給遇上了。好了,問題解決了,我的文章也快完了。
大家在看完了這篇文章後感覺這寫的是什麼嗎,一點技術含量都沒有,是的,可是就是這些沒有一點技術含量的問題,卻成為我們這些初學者最大的拌腳石,很多人可能就是因為這些小問題而對java望而卻步,不再對java深入研究。其實,本身不在於問題是否簡單,而在於問題是不是給你造成了障礙,讓你無法繼續進行研究,這也是我發表這篇文章的目的。如何幫助我們初學者掃清障礙,讓我們度過這個難關,有更多時間來學習技術,而不是找一些低階錯誤。
所以我希望各位大蝦在看完我的文章,笑的捧腹之餘,也能理解我們這些菜鳥的無奈。最好是多寫一些經驗性的文章,也就不枉我這麼多口舌在這邊老老叨叨了。
package developerworks.ajax.store;
import java.util.*;
// Referenced classes of package developerworks.ajax.store:
// CatalogueDAO, Item, Utils
public class Cart
{
public Cart()
{
totalPrice = 0;
contents = new HashMap();
}
public Cart addItemToCart(String itemId)
{
Item item = (new CatalogueDAO()).getItem(itemId);
if(item != null)
{
totalPrice += item.getPrice();
int newQuantity = 1;
Integer oldQuantity = (Integer)contents.get(item);
if(oldQuantity != null)
newQuantity += oldQuantity.intValue();
contents.put(item, new Integer(newQuantity));
}
return this;
}
public Cart getCart()
{
return this;
}
public int getTotalPrice()
{
return totalPrice;
}
public String getFormattedTotalPrice()
{
return Utils.formatCurrency(totalPrice);
}
public Map getSimpleContents()
{
Map simpleContents = new HashMap();
Item item;
for(Iterator I = contents.keySet().iterator(); I.hasNext(); simpleContents.put(item.getName(), contents.get(item)))
item = (Item)I.next();
return simpleContents;
}
private Map contents;
private int totalPrice;
}
而我複製的class檔案卻是這樣的:
package developerworks.ajax.store;
public class Cart
{
public Cart()
{
throw new Error("Unresolved compilation problems: \n\tThe type Map is not generic; it cannot be parameterized with arguments <Item, Integer>\n\tSyntax error, parameterized types are only available if source level is 5.0\n\tcontents cannot be resolved\n\tThe type HashMap is not generic; it cannot be parameterized with arguments <Item, Integer>\n\tSyntax error, parameterized types are only available if source level is 5.0\n\tcontents cannot be resolved\n\tcontents cannot be resolved\n\tThe type Map is not generic; it cannot be parameterized with arguments <String, Integer>\n\tSyntax error, parameterized types are only available if source level is 5.0\n\tThe type Map is not generic; it cannot be parameterized with arguments <String, Integer>\n\tSyntax error, parameterized types are only available if source level is 5.0\n\tThe type HashMap is not generic; it cannot be parameterized with arguments <String, Integer>\n\tSyntax error, parameterized types are only available if source level is 5.0\n\tThe type Iterator is not generic; it cannot be parameterized with arguments <Item>\n\tSyntax error, parameterized types are only available if source level is 5.0\n\tcontents cannot be resolved\n\tcontents cannot be resolved\n");
}
public Cart addItemToCart(String itemId)
{
throw new Error("Unresolved compilation problems: \n\tcontents cannot be resolved\n\tcontents cannot be resolved\n");
}
public Cart getCart()
{
throw new Error("Unresolved compilation problem: \n");
}
public int getTotalPrice()
{
throw new Error("Unresolved compilation problem: \n");
}
public String getFormattedTotalPrice()
{
throw new Error("Unresolved compilation problem: \n");
}
private int totalPrice;
}
而在html中彈出的也正是上面的Error。我的第一反映就是加了密了。以前也聽說過什麼加密,防止反編譯。可是沒想到今天讓我這個菜鳥給遇上了。其實我想如果是個大蝦,也許根本不遇不到這個問題,因為他直接就build 或者用war檔案來建,(或許還有更好的方法,有的話在回覆時能告訴小弟)。可是就是我這個菜鳥,而且用了複製粘帖方法的菜鳥給遇上了。好了,問題解決了,我的文章也快完了。
大家在看完了這篇文章後感覺這寫的是什麼嗎,一點技術含量都沒有,是的,可是就是這些沒有一點技術含量的問題,卻成為我們這些初學者最大的拌腳石,很多人可能就是因為這些小問題而對java望而卻步,不再對java深入研究。其實,本身不在於問題是否簡單,而在於問題是不是給你造成了障礙,讓你無法繼續進行研究,這也是我發表這篇文章的目的。如何幫助我們初學者掃清障礙,讓我們度過這個難關,有更多時間來學習技術,而不是找一些低階錯誤。
所以我希望各位大蝦在看完我的文章,笑的捧腹之餘,也能理解我們這些菜鳥的無奈。最好是多寫一些經驗性的文章,也就不枉我這麼多口舌在這邊老老叨叨了。
相關文章
- 一個RESOURCE MANAGER引起的問題分析
- [轉帖]一個NAT問題引起的思考
- 高手、板主幫忙,一個加密的問題!!!加密
- 一個奇怪的Java集合問題Java
- 一次跨域問題引起的思考跨域
- DRM引起的問題解決一例
- 一個由程式記憶體佈局異常引起的問題記憶體
- 由一個C++版本猜數字遊戲引起的效率問題C++遊戲
- 請問一個java nio問題Java
- 回覆java_gh的一個問題Java
- 一個關於Java Excel的問題JavaExcel
- 請教大家一個JAVA的問題Java
- 一次inmemory丟失引起的問題分析
- Oracle DRM引起的問題解決一例Oracle
- VC下 Runtime 版本不同原因引起的一個編譯問題案例編譯
- PhpAES加密、解密與Java互操作的問題PHP加密解密Java
- Java mail ssl並存的一個問題JavaAI
- Java NIO 執行緒 的一個問題Java執行緒
- 一個小問題 TestClient.javaclientJava
- 學java不久,傻瓜問題一個Java
- 記一次線上事故,redis 的keys問題,cpu引起的效能問題Redis
- 軟體防火牆引起的問題防火牆
- 一個面試題引起的SpringBoot啟動解析面試題Spring Boot
- Mr bangq請教你一個java列印的問題!Java
- 一個關於java.net.URL的問題.Java
- 一個JAVA程式呼叫外部程式的問題!(急)Java
- 一個java5與jdom的怪問題Java
- Java面試常問的幾個問題Java面試
- 故障分析 | show processlist 引起的效能問題
- 記憶體洩露引起的問題記憶體洩露
- open session in view引起的事務問題SessionView
- 單機硬碟跳線引起的問題.硬碟
- 【求助】請教一個初學java的小問題Java
- 域名訪問和ip訪問引起的http 403問題HTTP
- 一個關於Java Socket的問題,大家看一下Java
- JavaScript Source Code對映引起的一個SAP C4C程式碼除錯問題JavaScriptC程式除錯
- 一個非技術問題的問題
- 一道面試題引起的思考面試題