2016-05-25 9 views
0

У меня есть файл bccapi-1.2.0.jar, который я хочу запустить на сервере linux, но он не смог запустить из-за его компилируемой версии.изменить скомпилированную версию существующего файла jar в java

Compile версия баночки файла jdk1.7, который я скачал с URL: http://www.antepedia.com/detail/p/bccapi.html

JDK сервера является JDK1.5. Итак, как я могу перекомпилировать существующую банку с средой jdk1.5. Когда я пытаюсь запустить, что он дает ошибку, как этот

java.lang.UnsupportedClassVersionError: Bad version number in .class file (unable to load class com.lambdaworks.crypto.SCryptUtil) org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2858) org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) com.elitecore.activation.utilities.CryptUtilities.validateScryptPassword(CryptUtilities.java:135) inventory.Application.CUsers.getUserBeanByNameandPassword(CUsers.java:131) inventory.modes.ChkLogin.process(ChkLogin.java:55) inventory.servlet.UserServlet.doPost(UserServlet.java:62) javax.servlet.http.HttpServlet.service(HttpServlet.java:643)

произошедшей Эта ошибка, когда я уверен, выполнение .jar файл на сервере.

This error occured when i am executing jar file on server

+3

Нет ли возможности обновить ваш сервер, чтобы иметь JRE, выпущенный за последнее десятилетие? –

+3

Если загруженная вами jar была скомпилирована с помощью jdk1.7, она, вероятно, использует определенные функции, которых нет в jdk1.5. Боюсь, вам нужно обновить jre на своем сервере до 1,7 –

+0

спасибо за ответ, но сейчас это будет невозможно, потому что весь проект и его зависимости есть. поэтому, если я сделаю, тогда может возникнуть много проблем. –

ответ

0

Вы должны попытаться изменить среду вашего проекта в JDK 1.7, так что вы можете использовать свой файл JAR.

+0

Да, это я знаю. но я не смогу сделать, потому что на сервере работает несколько проектов, и они работают с jdk1.5. Поэтому я боюсь сделать это решение. –

+0

Так что мы не сможем перекомпилировать существующий файл jar с другой версией java.? –

+0

@vimalsuthar извините за мою ошибку, я имею в виду, что вы можете настроить среду своего проекта на jdk1.7 и иметь возможность запускать на сервере. Для меня у меня есть несколько проектов, работающих как на jdk 1.7, так и на 1.5, и они все еще могут работать на одном сервере. –

0

Загрузите источники отсюда: https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/bccapi/source-archive.zip И попытайтесь скомпилировать библиотеку для/с Java 5, возможно, вам придется применить некоторые изменения.

+0

Спасибо за ответ. Мне требуется lambdaworks.crypto.SCryptUtis.java, но там нет, в котором вы указали исходный код. и я не требую изменений в существующем коде, просто мне нужно перекомпилировать jar-файл или код с помощью jdk1.5. –

+0

Java 1.5 и 1.7 имеют немного отличающийся байт-код, и некоторые вещи изменились, как аннотирование переопределения, включение строк, алмаз, попытка с ресурсами и т. Д. Попробуйте следующее: - декомпилируйте свою банку, например. через cfr http: //www.benf.org/other/cfr/ - Создать новый проект - установить проект как проект Java 5 - вставить декомпилированный код - исправить все ошибки и предупреждения - экспортировать собственную библиотеку. Я не уверен относительно лицензии в этом случае. – huellif

1

Наконец я нашел необходимый файл Java (com.lambdaworks, SCrypUtils.java) исходный код из https://github.com/wg/scrypt/blob/master/src/main/java/com/lambdaworks/crypto/SCryptUtil.java

Так я открыл в Eclipse, и просто изменить скомпилировать версию Java 1.5, как правой кнопкой мыши на проекте -> Свойства - > java компилятор -> изменить на 1.5

Затем экспортировал этот проект с банкой. поэтому я рад, что мне не потребовалось менять конфигурацию сервера и успешно запускать проект.