2012-07-09 16 views
0

我創建了一個使用庫JFreeChart(和JCommon)的JApplet。我的應用程序是一個客戶端服務器。我請求服務器創建它的圖表並返回一個包含圖表的JPanel。這個特定的JPanel是一個類(ChartPanel)的實例,它是JPanel的一個子類。 現在的問題是這樣的:當我從服務器讀取JPanel時,我得到了這個堆棧跟蹤http://pastebin.com/WnLcp9kQ(你可以在36行看到我的類) 這是什麼意思?與我使用兩個(JFreeChart和JCommon)罐子作爲外部庫的事實有關? 在這裏你可以看到我從中創建了罐子的項目結構http://i45.tinypic.com/zw136p.png使用JApplet加載庫的安全性

謝謝。

+0

您的JAR是否已簽名?請參閱[* Applets可以和不可以做什麼*](http://docs.oracle.com/javase/tutorial/deployment/applet/security.html)。 – trashgod 2012-07-09 15:46:06

+0

'KMeans $ TabbedPane.learningFromDBAction(KMeans.java:144)'該類的第144行是什麼? – 2012-07-10 00:44:31

+0

是這樣的:chart =(JPanel)in.readObject(); – LS05 2012-07-10 08:24:00

回答

0

我什至不能想到從哪裏開始。

首先,不要通過網絡傳遞Swing組件。這只是混亂,會造成永無止境的問題。

您面臨的問題與在不同環境下創建組件的期望有關。然後該組件違反了applet安全管理器的限制。

將JFreeChart對象傳遞回來,然後自己將其應用到面板(假設它不是JFreeChart嘗試鏈接到本機庫)會更好(稍好)。

更好的解決方案是將系列數據傳回客戶端並在客戶端構建整個購物車。

+0

謝謝你的回答...你明白我在做什麼! ;) 我在服務器上創建圖表,然後將包含Chart的JPanel傳遞給客戶端。我想我會用你最後的解決方案。編輯: 我對JApplet有很多問題。如果我調試它工作「正確」(但與圖表問題),如果我不調試它,那麼它似乎凍結。 你認爲簽名的jar嗎?正如Andrew Thompson所說的那樣? – LS05 2012-07-10 08:26:02

+0

感謝您的諮詢!有用!我已經將數據從服務器傳遞到客戶端,它的工作原理!但它以一種奇怪的方式工作,因爲如果我調試服務器並運行客戶端的japplet一切正常。如果我運行服務器的japplet,然後運行客戶端的japplet,我得到這個: ** java.lang.ClassNotFoundException:org.gjt.mm.mysql.Driver ** 這是第一種情況,確定性軟件也許! :D – LS05 2012-07-10 09:51:27

+0

驅動程序jar是否鏈接到客戶端小應用程序中?至於簽名罐,這不是一個壞主意,但它取決於什麼導致他首先是安全違規,以及客戶安全策略有多緊張 – MadProgrammer 2012-07-10 09:58:11