2009-05-29 7 views
2

jnlpを起動するときにUnsupportedClassVersionErrorがスローされますが、コマンドラインから関連jarファイルを実行しようとするとうまくいきます。私はj2seバージョンを1.5+、1.6+、署名付き/署名なしのjarファイルを使用して設定しようとしましたが、それはすべて役に立ちません。jnlpでUnsupportedClassVersionErrorを取得するのはなぜですか?

私は2つのサポートjarファイル(mysql-connector.jarとswingx.jar)で自分のjarファイルを起動しようとしています。私のjarファイルはEclipseの1.6準拠の設定でコンパイルされ、antとjarファイルに組み込まれています。私はjava 1.6を使ってコマンドラインから3つのjarファイルを起動できるので、jnlpが失敗するのは少し難解です。どんな助けもありがとうございます。 (java.lang.ClassLoader.defineClass1で悪いバージョン番号の.classファイルに :

<?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ここ

はJNLPファイルでありますネイティブメソッド) at java.lang.ClassLoader.defineClass(ClassLoader.java:675) at java.security.SecureClassLoader.defineClass(SecureClassLoader.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(ネイティブメソッド) at java.net.URLClassLoader.findClass java.lang.ClassLoader.loadClassでjava.lang.ClassLoader.loadClass(ClassLoader.java:316)でcom.sun.jnlp.JNLPClassLoader.findClass(JNLPClassLoader.java:256)で(URLClassLoader.java:188) (ClassLoader.java:251) at com.sun.javaws.Launcher.doLaunchApp(Launcher.java:1052) at com.sun.javaws.Launcher.run(Launcher.java:105) (java.lang.Thread) .run(Thread.java:613)

答えて

1

まず、(あなたが使用しているOSに応じて)CMDウィンドウまたはシェルウィンドウを開いて、このタイプ:

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であってもよいし、それが別のディレクトリにあってもよいようなものになります。

Java Web Startアプリケーションを実行すると、Windowsではどのバージョンでも最新のJavaバージョンからJNLPローダーが使用されています。それとも、少なくともこれを行うことになっています。私はLinux(またはMacOS)上でそれがどのように動作するかを調べるために実験していません。しかし、常に何かが混乱している可能性があります.JNLPを起動すると、誤ってJava 1.5 JNLPランチャーが実行されています。

Javaの最新バージョンをアンインストールして再インストールして、常に最新のバージョンが正しくインストールされていることを確認することができます。これは物事を修正するかもしれない。 $ PATH(または%PATH%)をチェックして、正しいバージョンのJavaがパス上にあることを確認することもできます。 (これは必ずしも必要なわけではありませんが、Javaのバージョンがパス上にある場合は、それがあなたが望むバージョンであることを確認してください)。JAVA_HOME環境変数を調べて、

+0

答えていただきありがとうございます。私はWeb Startが必要なJREをダウンロードし、システム上で利用できない場合はそれを実行することを前提としていました。私のMac上で最新のJREに更新され、私はこの問題を通過しました - あなたの助けに感謝! –

0

ちょうど推測ですが、 =リファレンス仕様にタグを開いて、「1.6+」

<jnlp spec="1.6+" codebase="http://www.etc.com/p" href="demo-daily.jnlp"> 
+0

JNLPファイル形式のバージョンを指定するため、違いはありません。 OPは既にを正しく指定しています。 – Eddie

関連する問題