我在启动jnlp时抛出了UnsupportedClassVersionError,但是当我尝试从命令行运行相关的jar文件时,一切正常。我尝试使用签名/未签名的jar文件将j2se版本设置为1.5 +,1.6 +,但所有这些都无济于事。
我正在尝试使用两个支持jar文件(mysql-connector.jar和swingx.jar)启动我自己的jar文件。我的jar文件已在Eclipse中使用1.6合规性设置进行编译,并内置到带有ant的jar中。由于我可以使用java 1.6从命令行启动3个jar,我有点困惑,jnlp失败了。任何帮助表示赞赏。
这是jnlp文件:
<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File -->
<jnlp spec="1.5+" codebase="http://www.etc.com/p" href="demo-daily.jnlp">
<information>
<title>demo: daily stock charting utility</title>
<offline-allowed/>
</information>
<security>
</security>
<resources>
<j2se href="http://java.sun.com/products/autodl/j2se" version="1.6+" />
<jar href="demo-daily.jar" main="true" />
<jar href="swingx.jar" main="false" />
<jar href="mysql-connector.jar" main="false" />
</resources>
<application-desc main-class="quipu.viewers.charts.stockcharts.daily"/>
</jnlp>
我得到的错误是:
java.lang.UnsupportedClassVersionError:.class文件中的错误版本号 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:675) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) 在java.net.URLClassLoader.access $ 100(URLClassLoader.java:56) 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) 在java.net.URLClassLoader.findClass(URLClassLoader.java:188) at com.sun.jnlp.JNLPClassLoader.findClass(JNLPClassLoader.java:256) 在java.lang.ClassLoader.loadClass(ClassLoader.java:316) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) 在com.sun.javaws.Launcher.doLaunchApp(Launcher.java:1052) 在com.sun.javaws.Launcher.run(Launcher.java:105) 在java.lang.Thread.run(Thread.java:613)
答案 0 :(得分:1)
首先,打开一个CMD窗口或一个shell窗口(根据你正在使用的操作系统),然后输入:
java -version
确保您运行的版本是您希望运行的版本。然后,再次从命令行发出命令:
javaws http://host/path/to/your.jnlp
如果无法从命令行运行javaws
,则必须找出它的安装位置并使用可执行文件的完整路径。在Windows下,这将类似于
C:\Program Files\Java\jre1.6.0_14\bin\javaws.exe
在Linux下可能是/usr/bin/javaws
,也可能在另一个目录中。
我知道在Windows下,无论如何,当您运行任何Java Web Start应用程序时,JNLP加载程序都是从安装的最新Java版本开始使用的。或者至少它应该这样做。我没有在Linux(或MacOS)下进行过实验,看看它是如何工作的。但总是可能出现问题,当你启动JNLP时,你不小心运行了Java 1.5 JNLP启动器。
您始终可以尝试卸载并重新安装最新版本的Java,以确保正确安装最新版本。这可能会解决问题。您可能还需要检查$ PATH(或%PATH%)以确保路径中存在正确版本的Java。 (这并不总是必要的......但如果路径上有任何版本的Java,请确保它是您想要的版本。)检查环境变量JAVA_HOME以确保它指向您认为的位置。
答案 1 :(得分:0)
只是一个猜测,但更新开始标记以引用spec =“1.6 +”
<jnlp spec="1.6+" codebase="http://www.etc.com/p" href="demo-daily.jnlp">