2

jnlpを起動するとUnsupportedClassVersionErrorがスローされますが、コマンドラインから関連するjarファイルを実行しようとすると、すべて正常に機能します。署名付き/署名なしのjarファイルを使用してj2seバージョンを1.5+、1.6 +に設定しようとしましたが、それでも問題は解決しません。

2つのサポートする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:java.security.SecureClassLoader.defineClass(SecureClassLoader)のjava.lang.ClassLoader.defineClass(ClassLoader.java:675)のjava.lang.ClassLoader.defineClass1(ネイティブメソッド)の.classファイルのバージョン番号が正しくありません.java:124)at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)at java.net.URLClassLoader.access $ 100(URLClassLoader.java:56)at java.net.URLClassLoader $ 1.run(URLClassLoader.java: 195)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:188)at com.sun.jnlp.JNLPClassLoader.findClass(JNLPClassLoader.java:256)at java.lang .ClassLoader.loadClass(ClassLoader.java:316)at java.lang.ClassLoader.loadClass(ClassLoader.java:251)at com.sun.javaws.Launcher.doLaunchApp(Launcher.java:1052)atcom.sun.javaws。 Launcher.run(Launcher.java:105)java.lang.Thread.run(Thread.java:613)で

4

2 に答える 2

1

まず、CMDウィンドウまたはシェルウィンドウ(使用しているOSに応じて)を開き、次のように入力します。

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アプリを実行すると、インストールされている最新のJavaバージョンからJNLPローダーが使用されることを私は知っています。または、少なくともこれを行うことになっています。Linux(またはMacOS)でどのように機能するかを実験したことはありません。しかし、何かが台無しになっている可能性は常にあり、JNLPを起動すると、誤ってJava1.5JNLPランチャーを実行していることになります。

いつでも最新バージョンのJavaをアンインストールして再インストールし、最新かつ最高のバージョンが正しくインストールされていることを確認できます。これで問題が解決する場合があります。$ PATH(または%PATH%)をチェックして、正しいバージョンのJavaがパス上にあることを確認することもできます。(これは必ずしも必要ではありません...ただし、パス上にJavaのバージョンがある場合は、それが目的のバージョンであることを確認してください。)環境変数JAVA_HOMEをチェックして、意図した場所を指していることを確認します。

于 2009-05-29T23:42:27.450 に答える
0

推測ですが、spec="1.6+"を参照するように開始タグを更新してください

<jnlp spec="1.6+" codebase="http://www.etc.com/p" href="demo-daily.jnlp">
于 2009-05-29T20:23:46.620 に答える