لماذا أحصل على UnsupportedClassVersionError في JNLP؟
-
06-09-2019 - |
سؤال
أحصل على unsupportedclassversionError التي ألقيت عند تشغيل JNLP، ولكن عندما أحاول تشغيل ملفات الجرة ذات الصلة من سطر الأوامر كل شيء يعمل بشكل جيد. حاولت ضبط إصدارات J2SE إلى 1.5+، 1.6+، باستخدام ملفات جرة موقعة / غير موقعة، ولكن كل ذلك لا يساعد.
أحاول تشغيل ملف جرة الخاص بي مع اثنين من ملفات جرة دعم (mysql-connector.jar و swingx.jar). تم تجميع ملف Jar الخاص بي مع إعدادات الامتثال 1.6 في الكسوف والمدمج في جرة مع النملة. نظرا لأنني أستطيع تشغيل الجرار الثلاثة من سطر الأوامر باستخدام Java 1.6، فأنا بحظر بعض الشيء على فشل 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: 124) في java.net.urlclassloader.defineclass (Urlclassloader.java:260) في java.net.urlclassloader.access $ 100 (Urlclassloader.java:56) في java.net.urlclassloader $ 1.Run (Urlclassloader.java: 195) في java.security.accesscontroller.doplivileded (الطريقة الأصلية) في java.net.urlclassloader.findclass (Urlclassloader.java: 188) في com.sun.jnlp.jnlpclasslaslaslasslasslasslass (jnlpclasslasloader.java:256) at java.lang . classloader.loadclass (classloader.java:316) في java.lang.classloader.loadclass (classlader.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)
المحلول
أولا، افتح نافذة CMD أو نافذة شل (حسب الاقتضاء إلى نظام التشغيل الذي تستخدمه) واكتب هذا:
java -version
للتأكد من أن الإصدار الذي تقوم بتشغيله هو الإصدار الذي تتوقع تشغيله. ثم، مرة أخرى من سطر الأوامر، قم بإصدار الأمر:
javaws http://host/path/to/your.jnlp
إذا كنت لا تستطيع الركض javaws
من سطر الأوامر، سيتعين عليك معرفة المكان الذي يتم تثبيته واستخدام المسار الكامل للتنفيذ. تحت ويندوز، سيكون هذا شيء مثل
C:\Program Files\Java\jre1.6.0_14\bin\javaws.exe
وتحت Linux قد يكون /usr/bin/javaws
أو قد يكون في دليل آخر.
أعرف تحت Windows، على أي حال، عند تشغيل أي تطبيق Java Web Start، يتم استخدام Loader JNLP من أحدث إصدار Java مثبتا. أو على الأقل من المفترض أن تفعل هذا. لم أجرب تحت Linux (أو MacOS) لمعرفة كيف يعمل هناك. ولكن من الممكن دائما أن يكون هناك شيء قد افسدت وعندما تقوم بتشغيل JNLP تقوم بتشغيل قاذفة Java 1.5 Jnlp بطريق الخطأ بطريق الخطأ.
يمكنك دائما محاولة إلغاء تثبيت وإعادة تثبيت أحدث إصدار من Java للتأكد من تثبيت أحدث وأكبر إصدار بشكل صحيح. هذا قد يصلح الأشياء. قد ترغب أيضا في التحقق من مسار $ الخاص بك (أو٪ مسار٪) للتأكد من أن الإصدار الصحيح من Java موجود على المسار. (هذا ليس ضروريا دائما ... ولكن إذا كان أي إصدار من Java على المسار، تأكد من أن الإصدار الذي تريده.) التحقق من متغير البيئة Java_home للتأكد من أنه يشير إلى المكان الذي تعتقد أنه يفعل ذلك.
نصائح أخرى
مجرد تخمين، ولكن تحديث العلامة الافتتاحية للإشارة إلى المواصفات = "1.6+"
<jnlp spec="1.6+" codebase="http://www.etc.com/p" href="demo-daily.jnlp">