2012-11-29 88 views
0

我有一個關於在谷歌應用程序引擎上使用Java小程序的問題。我創建了兩個名爲InteractiveGraphView1和SimpleApplet的類。在SimpleApplet中使用InteractiveGraphView1的對象。無論如何,我爲這兩個班使用了一些外部罐子。我爲我的項目創建了一個名爲「GraphApplet」的jar。然後我把這個jar放到WEB-INF/lib中,並且把它作爲外部jar添加到gae項目中。爲了確保我還將GraphApplet類中使用的外部罐添加到我的gae項目中。我部署的GAE項目,當我試圖運行小程序它給了我這個錯誤:在谷歌應用程序引擎項目中使用Java小程序

load: class SimpleApplet.class not found. 
java.lang.ClassNotFoundException: SimpleApplet.class 
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) 
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source) 
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) 
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source) 
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source) 
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Exception: java.lang.ClassNotFoundException: SimpleApplet.class 
java.lang.RuntimeException: java.lang.NoClassDefFoundError: edu/uci/ics/jung/algorithms/layout/Layout 
at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source) 
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NoClassDefFoundError: edu/uci/ics/jung/algorithms/layout/Layout 
at java.lang.Class.getDeclaredConstructors0(Native Method) 
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source) 
at java.lang.Class.getConstructor0(Unknown Source) 
at java.lang.Class.newInstance0(Unknown Source) 
at java.lang.Class.newInstance(Unknown Source) 
at sun.plugin2.applet.Plugin2Manager$12.run(Unknown Source) 
at java.awt.event.InvocationEvent.dispatch(Unknown Source) 
at java.awt.EventQueue.dispatchEventImpl(Unknown Source) 
at java.awt.EventQueue.access$400(Unknown Source) 
at java.awt.EventQueue$2.run(Unknown Source) 
at java.awt.EventQueue$2.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source) 
at java.awt.EventQueue.dispatchEvent(Unknown Source) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
at java.awt.EventDispatchThread.run(Unknown Source) 
    Caused by: java.lang.ClassNotFoundException: edu.uci.ics.jung.algorithms.layout.Layout 
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) 
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source) 
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) 
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) 
at java.lang.ClassLoader.loadClass(Unknown Source) 
... 20 more 
Exception: java.lang.RuntimeException: java.lang.NoClassDefFoundError: edu/uci/ics/jung/algorithms/layout/Layout 

我該怎麼辦?

P.S.我忘了告訴我在我的GraphApplet項目中使用JUNG庫。我還添加了這個到谷歌應用程序引擎項目

添加到HMTL

<html> 

你好App Engine的

This is my page<br> 
Below you see an applet<br> 
<br> 
<Applet Code="SimpleApplet.java" archive="graphic.jar" width=200 Height=200> 
</Applet> 

回答

2

Applet只是一個由瀏覽器下載並作爲applet在客戶端執行的jar文件。

它與服務器代碼無關。從服務器的角度來看,它只是一個靜態文件。所以你不應該在服務器庫駐留的WEB-INF/lib裏面大肆渲染它。把它放在你的html文件旁邊。

對於一個小程序參照其他罈子裏看到:How do I build an applet which needs an external jar, using ant?

+0

根左右進入戰爭的文件嗎? –

+0

https://groups.google.com/forum/?fromgroups=#!topic/google-appengine-java/ALVxk3zXNLI –

+0

我做了完全相同的事情。我用於applet的所有罐子都在戰爭目錄中。我也把我嵌入applet到html的方式。 –

0

只要把你的applet.jar到WAR目錄