簡體   English   中英

嘗試從.jar文件加載applet時出現java.lang.ClassNotFoundException

[英]java.lang.ClassNotFoundException when trying to load applet from a .jar file

很抱歉這個問題,但是我是Java的新手。 我嘗試搜索類似的問題,但確實找到了一些答案,但在我的情況下卻沒有任何效果,因此,方法如下:

我正在嘗試在網頁上加載Java小程序。 應該從.jar文件(UCFApplet.jar)加載applet,但是無論如何我都無法加載它。

這是該applet的html:

<applet id="UCFApplet" height="200" width="200" 
  code="com.fujitsu.test.applet.UCFApplet" 
  archive="UCFApplet.jar">
</applet>

jar文件位於服務器上,與嘗試加載該文件的html文件位於同一文件夾中。 在jar文件中,com / fujitsu / test / applet文件夾中有一個UCFApplet.class文件。

我在Java控制台上遇到的錯誤如下:

Java Plug-in 1.6.0_29
Using JRE version 1.6.0_29-b11 Java HotSpot(TM) Client VM
User home directory = C:\Users\PTMAIAJ
----------------------------------------------------
c:   clear console window
f:   finalize objects on finalization queue
g:   garbage collect
h:   display this help message
l:   dump classloader list
m:   print memory usage
o:   trigger logging
q:   hide console
r:   reload policy configuration
s:   dump system and deployment properties
t:   dump thread list
v:   dump thread stack
x:   clear classloader cache
0-5: set trace level to <n>
----------------------------------------------------


load: class com.fujitsu.test.applet.UCFApplet not found.
java.lang.ClassNotFoundException: com.fujitsu.test.applet.UCFApplet
    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: com.fujitsu.test.applet.UCFApplet

如您所見,我正在使用jre 1.6.0_29 build 11,從Oracle頁面上可以看到,它是最新的build。 在所有瀏覽器(IE 9,FF,Chrome)上都會發生這種情況。

我懷疑這可能與無法訪問.jar文件有關,因為如果將html代碼更改為虛擬名稱(例如archive =“ thisFileDoesNotExist.jar”),則會出現相同的錯誤。 但是我真的不知道該怎么放置才能使它工作。

關於我會做錯什么的任何想法嗎?

感謝你並致以真誠的問候,

若奧·邁亞(Joao Maia)

您的描述符似乎是正確的,因此請嘗試以下操作。

首先檢查瀏覽器是否可以下載jar。 在瀏覽器中輸入jar文件的直接URL。 例如,如果您的html可以通過鍵入

http://localhost/myapp/mypage.html

類型

http://localhost/myapp/UCFApplet.jar

如果可以下載jar,並且與jar相同,請繼續。

檢查罐子本身。 在命令行輸入

jar vft UCFApplet.jar

並查看輸出。 您應該可以找到自己的班級:

/com/fujitsu/test/applet/UCFApplet.class

順便說一句,您知道不贊成使用applet標簽,而Opera和Chrome不支持applet標簽嗎? 要支持所有瀏覽器,您應該使用標記object

嘗試在Java控制面板中打開跟蹤。 然后,它將在以下路徑中生成一個日志文件,該文件可能會有所幫助:

%USERPROFILE%\AppData\LocalLow\sun\java\Deployment\log

就我而言,我有一個錯誤僅在我打開跟蹤時出現,並且僅顯示為“ ClassNotFoundException”:

java.util.zip.ZipException: duplicate entry: META-INF/LICENSE.txt

小程序加載器拒絕jar,因為zip文件具有重復的文件條目。 奇怪的是appletviewer.exe能夠很好地加載和運行此jar。

對於那些在公司代理后面運行的人。 根據Oracle ClassNotFoundException“如果代理設置不正確,將會看到一個常見錯誤”

Java的代理設置

請參閱: 如何為Java配置代理設置?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM