【问题标题】:Nested Jar with java Applet带有 java Applet 的嵌套 Jar
【发布时间】:2011-11-02 05:14:49
【问题描述】:

首先,我已经解决了这里有关为小程序包含 jar 文件的所有问题。但即便如此,我也有这个“巨大”的问题。

我正在使用 java 和 Apache-Tika 库开发一个应用程序(有 4 个 jar,总大小为 40 mbs)。应用程序需要计算上传文档(doc、docx、odf、pdf 等)中的字数。该小程序在 Netbeans 6.5 或 Eclipse IDE 中运行得非常好,我将它们并排用于开发。但是当我尝试将它部署到浏览器时,出现了问题。

问题

初始页面加载得很好。但是当我给出文档的路径并单击确定(或计数)时,我会收到大量错误消息。 这些都是与外部 Apache-Tika 库相关的“Class Not Found Exceptions”。我想我已经正确地完成了库的所有包含,否则它不会在小程序查看器中运行。

至于 HTML,我创建了整个 Word-Counter 应用程序的 jar,以及库(4 个 Apache-Tika Jars)和所有其他必要的文件,并相应地将 jar 包含在标签中。 我是否需要在 HTML 文件中提及有关嵌套 jar 库的任何内容,嵌套 jar 是否有限制? 任何形式的帮助都会受到高度赞赏。 谢谢你提前学习了。

【问题讨论】:

  • "nested jar library" 如果你的意思是“Jar inside Jar”,它就行不通了。 JRE 不是为处理其他档案中的档案而设计的——它需要一个自定义的类加载器(这在受信任的小程序中是可能的)。
  • 能否期望您的用户运行插件 2(例如 Oracle 的 1.6.0_10+)JRE?它将允许延迟下载 Jars,以及对本地文件系统的沙盒访问。
  • 小程序需要外部库,都是jar。那么,这意味着Applet不支持外部jar库吗? :(

标签: java applet apache-tika


【解决方案1】:

听起来您可能以错误的方式处理此问题。您真的不应该从浏览器 Applet 进行任何文档分析。而是将文档上传到服务器并在那里进行分析。要求用户下载 40MB 的 jars 作为最终解决方案对于任何将使用您正在创建的应用程序的人来说都是不可接受的。

【讨论】:

  • 嗯,库的大小可以缩小到小于 2 MB。我可以只用我需要的类重新打包库。所以这不会是一个问题。问题正是我所说的。我想在本地测试我的小程序,然后我会处理大小。我需要使小程序与浏览器一起工作(而不仅仅是小程序查看器)。
  • 也许您应该编辑问题的标题以更好地反映您的询问。 “使用嵌套 Jar 的 Applet”似乎是一个更相关的标题。
  • Anish,我确信罐子可以重新打包和压缩等。我真正的问题是,为什么您要在客户端进行任何类型的文档分析?我确实遇到过需要使用 Applet 进行某些客户端硬件接口的情况,但这是一个非常特殊的情况。对于您所描述的内容,听起来您可以完全避免整个 Applet 问题并在服务器上完成所有操作。也许我误解了这个问题?
  • @pra9ma :我需要服务/应用程序在线。因此,用户可以上传他们的文档并即时获取文档中的字数(即在上传完成后)。而且我还需要自动化的过程。如果有另一个(更好的)方向,我将不胜感激。
  • @Andrew Thompson:我是新手。谢谢你,我会这样做的。
【解决方案2】:

“类未找到异常”与外部 Apache-Tika 库相关。

可以在applet 元素的archive 属性中列出多个罐子。见W3C on the archive attribute..

此属性为包含将被“预加载”的类和其他资源的档案指定 逗号分隔的 URI 列表。

【讨论】:

  • 它有效,但它没有。 Class Not Found Exception 消失了,但现在小程序完全没有响应。现在如果我可能会问,调试的最佳方法是什么?
  • 似乎是时候提出一个新问题“(如何)调试冻结的小程序(?)”。
  • 问题已解决。小程序访问本地文件,所以我需要签名,我这样做了,瞧!有效。小程序已启动并运行,@Andrew Thompson 和 pra9ma - “我都感谢你们”。
  • 1) pra9ma 不会收到您的评论,除非是在回复他们的回答。 2) 表示感谢的一个好方法是对您认为有帮助的帖子进行投票(在此主题或任何其他主题上)。 3) 很高兴您解决了小程序问题。 :)
【解决方案3】:

为什么不将所有依赖 jar 中的所有类都包含在您的 applet jar 中?

Tika 包含一个可以做到这一点的 jar - tika-app.jar。您可以运行 tika-app 而无需任何额外的 jar 或依赖项,它包含所需的一切。

如果您查看 tika-app pom,您会看到构建这样一个 jar 的适当 maven 魔法。否则,要手动完成,只需将所有 jar 解压到一个目录中,然后再次重新 jar 即可。

【讨论】:

  • 糟糕的策略。经常违反库的许可,让 JWS 懒下载不可能,自动更新很痛苦。
猜你喜欢
  • 1970-01-01
  • 2018-04-15
  • 2012-11-13
  • 2012-02-16
  • 1970-01-01
  • 2014-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多