2011-03-24 132 views
2

我们目前有一个Java应用程序,可以部署在客户端或作为服务器的快捷方式运行。当从类似于Windows的服务器运行JAR时,我们间歇性地收到了ClassNotFound异常,这种类似Windows的JAR加载(用户打开了一个不同的屏幕,然后问题就很明显),只丢掉了一部分类的网络连接。Java Web Start和文件夹

我目前正在寻找Web Start技术以允许我们运行单个快捷方式。

然而,该应用程序有几个文件夹,它需要在启动JAR的同一文件夹(用于配置,日志等)中。这些文件夹将要求所有用户完全访问,以允许他们写入日志文件。配置文件夹层次结构下有很多配置文件。

该应用程序还需要访问环境用户设置(如获取其用户文件夹)。这还需要特定的命令行参数(包括要使用的文件夹的配置,日志文件位置,JAVA内存使用情况等)

编辑

该应用程序还包括一参考至2签署JAR文件。它们是:

  • 将jh.jar
  • 的mail.jar

它看起来像这些由Sun Microsystems签署。 jh用于帮助我们的应用程序集成,而邮件用于电子邮件集成。

我现在已经从java2s.com下载了这些文件的最新版本,它们没有相应的签名。

端编辑

该应用程序是用于Netbeans其中编译一个JAR文件,并复制相关的JAR到DIST/lib文件夹显影。我在Netbeans中为应用程序启用了Web Start功能,并生成JNLP文件。

记住一切都是Web开始这样的应用程序的方式? 您可以在Web Start部署中包含文件夹吗?我在JNLP文件的XML结构中找不到任何内容。

干杯,

Andez

+0

它需要在服务器(从哪里加载应用程序)或客户端(用户正在运行应用程序)访问的文件夹 – objects 2011-03-24 10:01:38

+0

Hi @objects。抱歉耽搁了。过去几个月一直很忙碌。日志位于服务器上的一个位置。所有用户都将登录到此文件夹。我们的应用程序使用java.util.logging.Logger进行日志记录。 – Andez 2011-05-04 12:30:10

+0

这可能是一个问题,因为jws应用程序在客户端运行,而不是服务器 – objects 2011-05-04 18:30:33

回答

4

是的,你可以使用WebStart进行此操作。

权限: 如果您需要权限的文件系统,你必须注册你的罐子,把all-permissions标签在你的JNLP。

参数: 参数可以通过使用application_desc中的参数元素来提供。

文件夹: 我不认为你可以包括在Webstart的应用程序文件夹,但你可以把配置文件在一个罐子,并从那里阅读,或提取它们的启动。

ClassNotFoundError:

We have intermittently received ClassNotFound exceptions when running the JAR from the server which looks like Windows dropping the network connection with only part of the classes from the JAR loaded

不看似有理我。默认情况下,所有jar将在应用程序启动之前下载。如果您将“下载”设置为“懒惰”,则在第一次需要时会下载该jar文件,但我猜测它会完整下载。

+0

@TimBüthe - 在Tim的感谢之前,我得到了更多的进展。我让Netbeans编译应用程序。我已经将命令行参数添加到项目中,netbeans创建了包含这些参数的JNLP。 但是,当我尝试通过执行JNLP文件进行下载时,现在我得到一个不同的错误,抱怨其中一个引用的JAR文件 - 来自java4less.com的rfax.jar。 com.sun.deploy.net.JARSigningException:无法验证登录资源:file:/MyApp/dist/lib/rfax.jar 它看起来像rfax.jar有NB-JWS-DSA和NB- JWS.SF键和其他JAR一样。 – Andez 2011-03-24 12:34:03

+0

现在我已经从我的项目引用中删除了rFax.jar文件,因为它似乎没有被使用。我现在在下载时不会出现任何错误,但是没有任何反应 - 没有UI显示。所以多一点进展。 – Andez 2011-03-24 13:04:30

+0

您应该激活控制台以查看是否发生异常。您可以在Java控制面板中执行此操作。 – 2011-03-24 14:11:51

0

您可以为Java WebStart提供只读资源。取回日志更困难。我会建议寻找一个集中的日志记录解决方案,使用您使用的日志框架中的标准appender之一。

+0

我们使用标准的java java.util.logging.Logger类进行日志记录。 – Andez 2011-05-04 12:35:31

0

对于Java Web Start应用程序,总是建议不要在类路径中创建文件或文件夹。推荐用户的主目录来存储您的设置或数据库文件。