使用Java Web Start部署应用程序

3
我最近用Java开发了一个系统,它连接到数据库(使用jtds.jdbc.Driver),并使用Apache POI将表内容导入导出到Excel表中。我使用Swing实现用户界面,用户将与其进行交互以进行身份验证和文件管理。
显然,客户想要将其部署,因此我开始在Apache Tomcat服务器上使用Java Web Start进行部署。我参考了一个有趣的教程这个。由于我遵循了这个教程,
启动文件:
<jnlp spec="1.0+" codebase="http://localhost:8080/" href="Test.jnlp">
  <information>
    <title>Talisman</title>
    <vendor>CCT</vendor>
    <homepage href="http://localhost:8080/"/>
    <description>Testing Testing</description>
  </information>
  <resources>
    <j2se version="1.6+"/>
    <jar href="Talisman.jar"/>
  </resources>
  <application-desc main-class="cct.karim.karim"/>
</jnlp>

运行时异常

java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/CellStyle
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2442)
    at java.lang.Class.getMethod0(Class.java:2685)
    at java.lang.Class.getMethod(Class.java:1620)
    at com.sun.javaws.Launcher.executeApplication(Unknown Source)
    at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
    at com.sun.javaws.Launcher.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.CellStyle
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    ... 9 more

“有什么问题吗?”
1个回答

1

您的部署中未包含POI jar文件。我怀疑您还需要部署其他jar文件。您的应用程序所需的所有内容都必须下载并安装在客户端主机上。

您需要添加以下行:

   <jar href="apache-poi.x.y.jar"/>

对于每个JAR文件。


我做了这个 <jar href="poi-3.9-20121203.jar"/>,但出现了这个错误:com.sun.deploy.net.FailedDownloadException: 无法加载资源:http://localhost:8080/poi-3.9-20121203.jar。 - user1912404
我在我的项目中使用了很多Jars,然后将我的项目导出为一个jar文件(Talisman.jar)。 - user1912404
1
由于代码库指向 http://localhost:8080/,请在浏览器中检查每个Jar的位置,例如使用以下命令:http://localhost:8080/poi-3.9-20121203.jar 如果无法直接在浏览器中下载它,则JRE也无法下载。 - Andrew Thompson
所有我的JAR包都是项目目录内部的JAR包。 - user1912404

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接