2014-01-30 1 views
3

Я совершенно не знаком с средой Java. Я столкнулся с проблемой после выполнения Jar-файла. Я использую Eclipse KEPLER для программирования на Java. Я экспортировал свой проект, используя File->Export ->Runnable Jar file. Создается файл jar. Когда я запустил банку, используя имена файлов Java-jar. В банке я получил некоторые ошибки, которые я приложил к этим вопросам. Я посмотрел на это invalid SHA1 signature file digest и попробовал то же самое. Я все еще сталкиваюсь с проблемой.Ошибка безопасности Java Неверный файл SHA1 Jar

Error : Exception in thread "main" java.lang.SecurityException:invalid SHA1 Signature file digest for com/microsoft/sqlserver/jdbc/SQLServerException.class

+2

ли работа при запуске проекта из внутри Eclipse? –

+0

Да. Хорошо работает – Karthi

+0

Какие опции вы используете при использовании запускаемого JAR-мастера экспорта? –

ответ

5

ошибка означает, что один из JAR-файлов на путь к классам содержит MANIFEST.MF с записью на ком/Microsoft/SQLServer/JDBC/SQLServerException.class и в SHA1 контрольной суммы там не совпадение.

Первое, что нужно проверить, это то, что JAR не повреждены. Поскольку вы можете запускать проект из Eclipse, похоже, что все в порядке.

Что оставляет экспортированный JAR. Я предполагаю, что процесс экспорта оставил там мусор. Откройте его (архивы JAR - это ZIP-архивы, поэтому любой ZIP-инструмент будет работать) и найдите файлы MANIFEST.MF.

Один из них содержит запись, упомянутую выше. Когда вы его нашли, сравните его с версией из оригинальной JAR. Они должны быть на 100% идентичны.

[EDIT] Параметр «Извлечение необходимых библиотек в сгенерированный JAR» имеет ошибку: он оставляет подписи в файле MANIFEST.MF. Проблема здесь в том, что подписи зависят от точного содержания манифеста. Если даже бит изменяется в любом месте, подписи становятся коррумпированными. Это по дизайну: в противном случае злоумышленник может изменить код.

Попробуйте «Библиотеки, необходимые для пакета, в сгенерированный JAR».

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

+0

Спасибо. Я проверил детали. Они 100% идентичны..SQL Server Jar file – Karthi

+0

И нет второго MANIFEST.MF с подобной информацией? –

+0

Извините, я не могу получить то, что вы сказали. Согласно вашему комментарию, я посмотрел на MANIFEST.MF в файле Jar, который я создал, и MANIFEST.MF в JAR sqlserver. Оба они похожи друг на друга. Я не видел другого MANIFEST.MF в папках META-INT. Вы думаете, что я здесь что-то не хватает. ? – Karthi

1

Я решил проблему подписи ерунду по

  • распаковке sqljdbc41.jar (с помощью программы WinZip), удалив все пары Имя: SHA1-Digest: в MANIFEST.MF
  • удаление MSFTSIG.RSA, MSFTSIG. SF
  • переупаковка sqljdbc41.jar (с помощью программы WinZip)
+0

Я имею в виду, что вы удалили безопасность, то есть «jarsigning», не так ли? – Premraj

Смежные вопросы