相同的 Webstart JAR,不同应用程序服务器上的 JNLP ClassNotFoundException

The same Webstart JAR, JNLP on diffrerent App Servers ClassNotFoundException

我遇到过那个问题。我在 WebSphere7 server1 上的 webstart 运行良好。我已经在另一台服务器上复制了 myapp.jarmyapp.jnlp2。 只有 codebase=<jar href= 被修改。

但我得到(无法):

java.lang.ClassNotFoundException: com.mypack.swt.EntryPoint
    at java.net.URLClassLoader.findClass(Unknown Source)
    at com.sun.jnlp.JNLPClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
    at com.sun.javaws.Launcher.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

这是 JNLP:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://corp.com/webapp/jnlp">
<information>
  <title>My App</title>
  <vendor>Foo</vendor>
  <homepage href="http://corp.com" />
  <description>My App</description>
  <offline-allowed/>
</information>
<security>
    <all-permissions/>
</security>
<update check="always" policy="always" />
<resources>
  <j2se version="1.6+" initial-heap-size="512m" max-heap-size="1024m"/>
  <property name="par1" value="val1"/>

  <jar href="http://corp.com/webapp/jnlp/myapp.jar"/>
</resources>
<application-desc main-class="com.mypack.swt.EntryPoint">
</application-desc>
</jnlp>

这是一个带有 jar、sign、shade 插件的 maven 项目..我试图重建,但没有帮助..

能否请你帮我找到正确的方法来定位问题.. 谢谢。

p.s。我发现的一个区别是第二台服务器 2 上没有文件夹遍历。 p.p.s。感觉没有下载发生,但是如果我更改jar-file name resource not found excpt出现..

编辑

我发现从第二台服务器 2 下载资源 jat 非常小 - 几千字节,而第一台服务器 1 正常工作时需要 12 兆字节。我已经在 Java 临时文件视图控制台中找到了。 那么...它是否破坏了 jar 资源下载负载?

如果存在早期版本的 jar,请尝试清除 java 缓存一次,然后它不会从 jnlp webstart 下载。还要检查服务器 2 上的写权限,最好是在下载 jar 的地方,那个目录应该有写权限。

已解决!

我晚上突然想到了)

我已经分析了获取 WebStart 时的操作顺序。

首先下载 .jnlp 文件。它应该是有效的并且可以下载。然后,在我的例子中 Chrome,建议操作 - 打开或保存 .jnlp 文件。然后我点击打开。发生了什么事 - Windows 查看扩展名和 运行 带有适当 exe 的文件。这是 javaw.exe,它解析 .jnlp 文件并尝试下载到资源 .jar。

但是!我的 .jar 资源文件位于网络 的安全部分! javaw 未授权。

javaw 得到“401-un-authorized.html”并且无法在其中找到任何主要 class。html))) 所以,这就是为什么我在 java 缓存中看到非常小的应用程序!

谢谢大家!