【问题标题】:Trying to load java applet via html file试图通过 html 文件加载 java 小程序
【发布时间】:2011-12-26 17:18:29
【问题描述】:

目录是这样的:

test.html
blah
hmmm

在“blah”中,我们有所有的小程序文件,包括 blahBlah.class。在 "hmmm" 中还有一些从库或其他东西中获取的类文件,它们也被项目使用。

我在 test.html 中写...

<applet name="blah" code="/blahBlah.class" codebase="blah"></applet>

(以及我能想到的所有其他变体)

我得到的最远的是:

java.lang.NoClassDefFoundError: blahBlah (wrong name: blah/blahBlah)

现在在 blahBlah.java 中,我们有:

package blah;

我不确定它是否相关。

还想知道是否有必要将项目放在一个 jar 文件中并设置小程序的存档属性?

真正的文件不是blah和blahBlah,但我已经忠实地替换了名称。

【问题讨论】:

  • @Downvoter:对小程序的无知不是一个有效的反对理由。这是一个非常清楚和有效的问题。

标签: java html applet localhost


【解决方案1】:

java.lang.NoClassDefFoundError: blahBlah(错误名称:blah/blahBlah)

这基本上意味着它被执行为

java blahBlah

而不是

java blah.blahBlah

换句话说,您的code 属性是错误的。必须是

<applet name="blah" code="blah/blahBlah.class" />

或仅通过 FQN(另见 Andrew 的评论)

<applet name="blah" code="blah.blahBlah" />

codebase 默认为当前文件夹,在这种情况下很好,因此将其删除。另一种方法是将其放在 another 文件夹中,例如 /applet 或其他东西。您至少不应将包文件夹用作代码库,而应使用包根目录。

【讨论】:

  • 非常感谢。这是可行的,而且它正在通过服务器为其提供服务,这是我的初衷。
  • blah/blahBlah.class 可能是可以容忍的,但blah.blahBlah(FQN)是正确的。
  • @Andrew:仅当它由 JAR 存档提供时才有效。 OP 在公共领域具有纯类。然后您应该确实需要在code 中指定URI。如果是打包成JAR,那么&lt;applet archive="Blah.jar" code="blah.blahBlah"&gt;确实是唯一的办法。
  • “仅当它由 JAR 存档提供时才有效。” 快速测试表明它可以在没有 Jar 的情况下工作。我很乐意在一个单独的问题上向您证明这一点,但如果您相信我的话并编辑答案,我会投票并保留它。令我担心的是,像您这样乐于助人的人建议在 Sun 教程中看到的许多小程序元素中重复使用旧形式的代码属性(我希望这就是这种谬误的起源)。
  • @Andrew:公平点。很久以前我最后一次摆弄一个小程序:)
猜你喜欢
  • 2013-07-26
  • 2012-12-02
  • 1970-01-01
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多